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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии запрещены.