И еще о биологическом разнообразии

Сегодняшее утро у меня было очень познавательным. Наши, гм, постоянные партнеры проинсталлировали себе новый сервер и перенесли на него свои сайтики.

С вечера проверил — все работает. Радуюсь, ложусь спать. Просыпаюсь от звонка — из офиса мне рассказывают, что сайты из внутренней сети недоступны, а наши, гм, постоянные партнеры объясняют, что у них все работает, проблема в нашем кривом прокси-сервере и поэтому доброе утро, Дмитрий Алексеич.

Начинаю диагностировать проблему и мрачно охуеваю несколько удивляюсь. В DMZ cтоят рядом две однотипные машины, воткнутые в один свитч, с одинаковыми настройками сети и даже IP-адреса у них соседние. С одной — все хорошо. С другой — сайты недоступны. ICMP проходят с обеих машин. Беру в руки tcpdump выясняю, что пакеты уходят нормально, но на одну машину ответы приходят, а на другую — нет.

Выяснилось, в общем, что красавцы, проинсталлировав сервер, решили заняться его оптимизацией и, в частности, выставили net.ipv4.tcp_tw_recycle в 1. Соответственно, клиенты, расположенные за NATом, играют в игру «кто первый встал — того и тапки» — timestamps-то через NAT идут разные, с одного-то ip.

Вежливо интересуюсь, нахуя, собственно, такое счастье с какой великой целью это было сделано, а мне и отвечают человеческим голосом, что, во-первых для борьбы с DDoS-атаками (если всех клиентов за NAT-ами отключить от сервиса — большая выгода будет, ага), а, во-вторых — для экономии памяти. На этом месте впадаю в великое удивление, по сю пору в нем продолжаю быть и из него вам пишу, извините за неровный почерк.

Мораль — если берешь какой-нибудь HOWTO про «настроить сервер против DDoS» — думай, что там написано, а не переписывай конфиги копипейстом.


Комментарии:

10 thoughts on “И еще о биологическом разнообразии”

  1. Когда я спросила у Васи, что же случилось, Вася сделал такое лицо, как будто только что съел живого червяка, и сказал мрачно: «Оптимизировали».

    И вот тогда я все поняла.

    А вообще для всех твоих постингов о работе есть один универсальный заголовок. «Началось в колхозе утро».

  2. Когда я спросила у Васи, что же случилось, Вася сделал такое лицо, как будто только что съел живого червяка, и сказал мрачно: «Оптимизировали».

    И вот тогда я все поняла.

    А вообще для всех твоих постингов о работе есть один универсальный заголовок. «Началось в колхозе утро».

  3. Я что-то не въехал, чтО, собственно, произошло.

    Насколько я понимаю, tcp_tw_recycle влияет на скорость освобождения сокетов, находящихся в состоянии TIME_WAIT, и таким образом, позволяет избежать исчерапния сокетов, которые злыи хакиры понаоткрывали в большом количестве, не спеша подтверждать закрытие соединений.

    Но в это состояние серверный сокет впадает только в процессе закрытия соединения, уже после окончания передачи данных. То есть, максимум, могут не доехать какие-то данные, но не так, чтоб пакеты вообще в клиента не отправлялись..

    Или я что-то не так понял?

    1. Оно еще смотрит на timestamp, который, понятно, может быть различным. Особенно тогда, когда на одной из подопытных машин (mea culpa!) отваливается ntp.

      1. А timestamp тут каким боком? Таймауты в сокетах же считаются самим сервером.

      2. А timestamp тут каким боком? Таймауты в сокетах же считаются самим сервером.

    2. Оно еще смотрит на timestamp, который, понятно, может быть различным. Особенно тогда, когда на одной из подопытных машин (mea culpa!) отваливается ntp.

  4. Я что-то не въехал, чтО, собственно, произошло.

    Насколько я понимаю, tcp_tw_recycle влияет на скорость освобождения сокетов, находящихся в состоянии TIME_WAIT, и таким образом, позволяет избежать исчерапния сокетов, которые злыи хакиры понаоткрывали в большом количестве, не спеша подтверждать закрытие соединений.

    Но в это состояние серверный сокет впадает только в процессе закрытия соединения, уже после окончания передачи данных. То есть, максимум, могут не доехать какие-то данные, но не так, чтоб пакеты вообще в клиента не отправлялись..

    Или я что-то не так понял?

Comments are closed.