Main > Abyss | Devices > Перестал работать file_get_conents, iptables и совокупность факторов.

Перестал работать file_get_conents, iptables и совокупность факторов.

07.08.2012 0 comments » Views: 3,144

PHP

Возможно сегодня какие-то магнитные бури, но моя статистика, которая мониторит на доступность сайты с локального сервера перестаоа работать. Точнее она работала отлично, но сообщала что, ВСЕ сайты не доступны. Разумеется, я полез проверять и увидел что перестал работать file_get_contents, это привело меня в замешательство..

Да я знаю, что можно использовать Curl, что должен быть включен allow_url_fopen в php.ini и еще много всего, но в данном случае это была какая-то другая проблема.

Надо заметить, что в этот день я делал перестановку мебели, а заодно подключил сервачок по второй линии к монитору (монитор позволяет выбирать источник сигнала, и на VGA я повесил сервачок). Надо заметить что все я делал "по горячей" и я не думал, что пару мелких искр проскочивших между разъемом монитора, и видеокартой имеют какое-то значение. Но оказалось имеют, видуха была спалена, о чем после перезагрузки компа сообщил биос одним длинным и восемью короткими сигналами. Пришлось купить новую видушку, благо как раз планировал с женой ехать скупляться. Я приобрел первый попавшийся вариант с пассивным охлаждением  Radeon HD5450 512MB  за 38$. Для этой видухи это дороговато, но мне просто не хотелось ждать  несколько дней её аналог с 1 Гб памяти на борту, ибо для сервера это не имеет никакого значения. Да и бегать по магазинам в 40C жару мне не особо понравилось. По приезду домой, вставил новое видео, все заработало. Но статистика перестала работать...

Первым делом я создал маленький скриптик, который проверяет работоспособность сети:

Так я узнал, что не виновата статистика, а не работает именно file_get_contents, после этого я выполнил:

И убедился что allow_url_fopen включен.

Потом я провел какое-то время на форумах, чтобы понять как и что еще можно проверить и случайно наткнулся на совет отрубить файрвол и проверить работу, чем черт не шутит:

И это сработало, значит проблема в файрволе. Но, что именно? Т.к. я только что удалил все правила маскарадинга, то на рабочей машине пропал инет, соответственно после того как я убедился что, проблема в файрволе, я запустил свой скриптик подключения правил для маскарадинга и прочих настроек вроде IPTV.

Да, я не использую iptables-save и iptables-restore, т.к. иногда меняю правила и люблю их видеть. Поэтому подключаю их скриптиком расположенным в /etc/network/if-up.d/masquerade

И надо же, после того, как я выполнил:

file_get_contents продолжал работать. Надо же подумал я, и ребутнул сервачок, после ребута file_get_contents перестал работать снова. Ко мне начало приходить понимание проблемы..

Я вспомнил, что недавно менял скрипт, который у меня на сервере добавляет маскарадинг, для локальной сетки. И оказалось, что я там закомментировал вот этот момент в начале скрипта который добавляет правила  iptables:

Т.к. у меня 3и интерфейса, то мой файлик запускался несколько раз, соответственно происходил какой-то конфликт. eth2 = это последний интерфейс, соответственно данная запись,  позволяет выполнить мой скрипт 1 раз, сразу после того как последний интерфейс стартанет (хотя я не уверен сто они поднимаются по очереди, т.е. именно в таком порядке: eth0, eth1, eth2). И это сработало! После ребута, работа стабилизировалась.

Почему же этот косяк вылез только сейчас? Все просто, после того, как я внес изменения, я не ребутил сервер. Соответственно, именно ребут ( а значит сгоревшая видуха, что в свою очередь было вызвано перестановкой мебели), и привел к тому что вылезли такие косяки с конфигом.

Разумеется, этот случай очень частный, но он учит нескольким полезным вещам:

  • в случае когда с file_get_contents ничего не помогает, проверьте firewall
  • не подключайте монитор по горячей, отключайте оба прибора от сети и снимайте статику.
  • всегда имейте бэкап конфигов, даже старых, чтобы было с чем сравнить последние изменения
  • располагайте сервачок так, чтобы его нужно было как можно меньше перемещать

У меня все закончилось хэппи-эндом, надеюсь у вас будет так же 😉

Author: | Rating: 4/5 | Tags: , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>