Перестал работать file_get_conents, iptables и совокупность факторов.
Возможно сегодня какие-то магнитные бури, но моя статистика, которая мониторит на доступность сайты с локального сервера перестаоа работать. Точнее она работала отлично, но сообщала что, ВСЕ сайты не доступны. Разумеется, я полез проверять и увидел что перестал работать file_get_contents, это привело меня в замешательство..
Да я знаю, что можно использовать Curl, что должен быть включен allow_url_fopen в php.ini и еще много всего, но в данном случае это была какая-то другая проблема.
Надо заметить, что в этот день я делал перестановку мебели, а заодно подключил сервачок по второй линии к монитору (монитор позволяет выбирать источник сигнала, и на VGA я повесил сервачок). Надо заметить что все я делал "по горячей" и я не думал, что пару мелких искр проскочивших между разъемом монитора, и видеокартой имеют какое-то значение. Но оказалось имеют, видуха была спалена, о чем после перезагрузки компа сообщил биос одним длинным и восемью короткими сигналами. Пришлось купить новую видушку, благо как раз планировал с женой ехать скупляться. Я приобрел первый попавшийся вариант с пассивным охлаждением Radeon HD5450 512MB за 38$. Для этой видухи это дороговато, но мне просто не хотелось ждать несколько дней её аналог с 1 Гб памяти на борту, ибо для сервера это не имеет никакого значения. Да и бегать по магазинам в 40C жару мне не особо понравилось. По приезду домой, вставил новое видео, все заработало. Но статистика перестала работать...
Первым делом я создал маленький скриптик, который проверяет работоспособность сети:
1 2 3 4 |
<?php die(file_get_contents('http://bing.com')) |
Так я узнал, что не виновата статистика, а не работает именно file_get_contents, после этого я выполнил:
1 2 3 4 |
<?php phpinfo(); |
И убедился что allow_url_fopen включен.
Потом я провел какое-то время на форумах, чтобы понять как и что еще можно проверить и случайно наткнулся на совет отрубить файрвол и проверить работу, чем черт не шутит:
1 2 3 4 5 6 |
# sudo -i # iptables -F # iptables -t nat -F # iptables -X |
И это сработало, значит проблема в файрволе. Но, что именно? Т.к. я только что удалил все правила маскарадинга, то на рабочей машине пропал инет, соответственно после того как я убедился что, проблема в файрволе, я запустил свой скриптик подключения правил для маскарадинга и прочих настроек вроде IPTV.
Да, я не использую iptables-save и iptables-restore, т.к. иногда меняю правила и люблю их видеть. Поэтому подключаю их скриптиком расположенным в /etc/network/if-up.d/masquerade
И надо же, после того, как я выполнил:
1 2 3 |
# /etc/init.d/networking restart |
file_get_contents продолжал работать. Надо же подумал я, и ребутнул сервачок, после ребута file_get_contents перестал работать снова. Ко мне начало приходить понимание проблемы..
Я вспомнил, что недавно менял скрипт, который у меня на сервере добавляет маскарадинг, для локальной сетки. И оказалось, что я там закомментировал вот этот момент в начале скрипта который добавляет правила iptables:
1 2 3 4 5 |
if [ "$IFACE" != eth2 ]; then exit 0 fi |
Т.к. у меня 3и интерфейса, то мой файлик запускался несколько раз, соответственно происходил какой-то конфликт. eth2 = это последний интерфейс, соответственно данная запись, позволяет выполнить мой скрипт 1 раз, сразу после того как последний интерфейс стартанет (хотя я не уверен сто они поднимаются по очереди, т.е. именно в таком порядке: eth0, eth1, eth2). И это сработало! После ребута, работа стабилизировалась.
Почему же этот косяк вылез только сейчас? Все просто, после того, как я внес изменения, я не ребутил сервер. Соответственно, именно ребут ( а значит сгоревшая видуха, что в свою очередь было вызвано перестановкой мебели), и привел к тому что вылезли такие косяки с конфигом.
Разумеется, этот случай очень частный, но он учит нескольким полезным вещам:
- в случае когда с file_get_contents ничего не помогает, проверьте firewall
- не подключайте монитор по горячей, отключайте оба прибора от сети и снимайте статику.
- всегда имейте бэкап конфигов, даже старых, чтобы было с чем сравнить последние изменения
- располагайте сервачок так, чтобы его нужно было как можно меньше перемещать
У меня все закончилось хэппи-эндом, надеюсь у вас будет так же 😉
Author: | Tags: /
| Rating:
Leave a Reply