Необычное влияние настройки сокетов Linux на Windows XP
В процессе администрирования крупного интернет-портала рано или поздно встает вопрос защиты от DDoS атак. После очередной атаки была перерыта куча литературы на эту тему и сделан соответствующий тюнинг сервера.
В частности, в sysctl.conf поместили следующие параметры:
Разрешает быструю утилизацию сокетов, находящихся в состоянии TIME-WAIT. Описания механизма действия весьма противоречивые, но многие отзываются о положительном эффекте.
Определяет возможность повторного использования сокетов TIME-WAIT для новых соединений, когда это безопасно с точки зрения протокола.
Рекомендуют их совместое использование.
Сокетов в состоянии TIME-WAIT было очень много, поэтому эти параметры пришлись кстати. На хабре, кстати, тоже были рекомендации на эту тему.
Однако, после очередного тюнинга стали появляться проблемы у некоторых пользователей портала: сайт стал грузиться медленно, не отправлялись формы или обновление страницы впадало в бесконечный цикл. Причем систематизировать пострадавших пользователей было довольно сложно. У одних были проблемы с доступом с домашнего компьютера, а с рабочего всё работало отлично. А у других даже на двух разных компьютерах в одной локальной сети наблюдалось разное поведение при загрузке сайта.
Заставить пользователей четко описать проблему совсем не тривиальная задача: многие не знают не только о том какой у них стоит браузер, но и о названии установленной операционной системы. В общем, система у большинства пострадавших оказалась windows xp.
Долгий поиск в гугле никак не помог прояснить проблему. Нигде не упоминалось о том, что настройки сокетов на линуксовом сервере могут пагубно влиять на работоспособность клиентов под XP. Но на всякий случай эти параметры отключили – а проблемы остались.
Оказалось, что перезагрузить sysctl недостаточно и пришлось менять переменные непосредственно через:
Вот тогда-то всё и заработало.
Надеюсь, что это поможет кому-нибудь ещё, потому как если информация на эту тему где-нибудь и есть, то отыскать её не удалось.
Вопрос к специалистам: почему так происходит? Моих знаний о работе сетевых протоколов недостаточно, чтобы в этом разобраться. Буду благодарен за помощь.
В частности, в sysctl.conf поместили следующие параметры:
net.ipv4.tcp_tw_recycle = 1
Разрешает быструю утилизацию сокетов, находящихся в состоянии TIME-WAIT. Описания механизма действия весьма противоречивые, но многие отзываются о положительном эффекте.
net.ipv4.tcp_tw_reuse = 1
Определяет возможность повторного использования сокетов TIME-WAIT для новых соединений, когда это безопасно с точки зрения протокола.
Рекомендуют их совместое использование.
Сокетов в состоянии TIME-WAIT было очень много, поэтому эти параметры пришлись кстати. На хабре, кстати, тоже были рекомендации на эту тему.
Однако, после очередного тюнинга стали появляться проблемы у некоторых пользователей портала: сайт стал грузиться медленно, не отправлялись формы или обновление страницы впадало в бесконечный цикл. Причем систематизировать пострадавших пользователей было довольно сложно. У одних были проблемы с доступом с домашнего компьютера, а с рабочего всё работало отлично. А у других даже на двух разных компьютерах в одной локальной сети наблюдалось разное поведение при загрузке сайта.
Заставить пользователей четко описать проблему совсем не тривиальная задача: многие не знают не только о том какой у них стоит браузер, но и о названии установленной операционной системы. В общем, система у большинства пострадавших оказалась windows xp.
Долгий поиск в гугле никак не помог прояснить проблему. Нигде не упоминалось о том, что настройки сокетов на линуксовом сервере могут пагубно влиять на работоспособность клиентов под XP. Но на всякий случай эти параметры отключили – а проблемы остались.
Оказалось, что перезагрузить sysctl недостаточно и пришлось менять переменные непосредственно через:
echo 0 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 0 > /proc/sys/net/ipv4/tcp_tw_reuse
Вот тогда-то всё и заработало.
Надеюсь, что это поможет кому-нибудь ещё, потому как если информация на эту тему где-нибудь и есть, то отыскать её не удалось.
Вопрос к специалистам: почему так происходит? Моих знаний о работе сетевых протоколов недостаточно, чтобы в этом разобраться. Буду благодарен за помощь.
0 комментариев