LINUX.ORG.RU
решено ФорумAdmin

Настройка sysctl.conf (проблема с UDP)

 , , , ,


0

1

Всех приветствую, форумчане! Имеется нода, на ней поднято 3 контейнера OpenVZ,у каждого свой белый IP, доступ в сеть сделан посредством VENET. В каждом контейнере на одном и том же порте крутится игровой сервер, работает через UDP протокол. Суть в том, что если зайти на сервер первого контейнера, затем после него на сервер второго, а потом на третий, то подключение к последнему не осуществится. Спустя 30 секунд попыток - войдет на третий. Если войти на 3, затем на 1, то на 2 уже будет недоступен также около 30 секунд. В tcpdump это выглядит так:

root@droms1:~# tcpdump dst host shadow.mcpehost.ru and port 33462 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes ^C 0 packets captured 13 packets received by filter 0 packets dropped by kernel

Где в качестве хоста указан последний по счету сервер, на который не удалось зайти. Сами пакеты в tcpdump «не идут», но железка их получает (13 пакетов фильтр захватил). Сначала думал на аппаратную защиту от атак, но в ДЦ убедили, что при срабатывании защиты вредоносные пакеты не доходят до самой ноды, т.е. в tcpdump бы их не было. Полагаю, что нужно перенастроить sysctl.conf на самой ноде, но какие именно параметры нужно подправить? Я уже пробовал гуглить, но подробного описания каждой переменной из sysctl я нигде не нашел.


В предыдущей теме у вас работала только одна виртуалка, а две другие не получали пакеты, а теперь стало две. Что поменялось?

Что крутить в sysctl не понятно, вы сначала озвучьте объёмы трафика (байты/пакеты в секунду) и сколько из этого udp. Если у вас там единцы/сотни пакетов в секунду крутить вобще нечего не надо.

Что такое ″packets received by filter″ в ″man tcpdump″ описано весьма туманно, есть счётчики в iptables, где можно указать порт, чтобы посмотреть число нужных udp пакетов и есть счётчики у интерфейса, где есть число drop'нутых ядром пакетов. Правда, не знаю, насколько это всё применимо к OpenVZ сетевым интерфейсам.

Вобще, для тестирование прохождения пакетов как-то странно использовать игру, есть же nc (для генерации отдельных пакетов) или iperf для генерации потока. Попробуйте запустить на каждую виртуалку с помощью iperf мегабитный udp поток и посмотреть что будет доходить по счётчикам на сетевых интерфейсах.

mky ★★★★★ ()
Ответ на: комментарий от mky

Большое спасибо за Ваш совет! В ближайшее время предоставлю больше информации.

SeecH ()
Ответ на: комментарий от mky

К сожалению, через iperf не удается проверить, т.к. срабатывает аппаратная защита от атак и IP «проверяющего» в блекхол уходит. По скорости: В среднем на 323 KiB/s нагружен канал (замер через speedometer) и за 5 ±1 секунда на сервер пришло 20932 packets received by filter.

SeecH ()
Ответ на: комментарий от mky

Проблема решена!

Наконец-таки удалось решить проблему! В sysctl выставил net.ipv4.ipfrag_time = 0, затем применил все это дело. Теперь все работает как надо! Спасибо за помощь и советы :)

SeecH ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.