ipfw nat ложит freebsd 9.1 трафиком на порт 6881

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
napTu
рядовой
Сообщения: 17
Зарегистрирован: 2009-09-23 18:47:44

ipfw nat ложит freebsd 9.1 трафиком на порт 6881

Непрочитанное сообщение napTu » 2013-09-29 19:45:05

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

Имеем шлюзы freebsd 8.3 и 9.1 , на них крутится ipfw nat. Нагрузка по 200-300 мегабит, процессор 10-30%.

Недавно встал один сервак(на 9.1 с интерфейсами igb), второй (8.3 с em) подхватил и "завяз" - пинги на мир 2000-7000мсек, нагрузка по прерываниям максимальная сколько может выжать железо - в основном по тредам внешнего интерфейса.

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

И вот, в конечном итоге выяснилось что шлюз ложит входящий из инета трафик на порт 6881(tcp+udp со всего интернета - походу торент), а точнее загинается НАТ от этого трафика.
Блок всего трафика на внутреннем интерфейсе ничего не дает, т.е. трафик из инета никто уже не просит, а он все прет.

При этом pps абсолютно не растет, трафик абсолютно не растет, и
что интересно, нет разницы в показаниях trafshow по этому трафику (на порт 6881) в ситуациях когда система почти ложится и практически в IDLE - все те же 1500-3000 соединений.

Если шлюз fb8.3на интерфейсах em хоть как-то живет под максимальной нагрузкой от НАТа, то шлюз fb9.1 на igb локается намертво, перестает отвечать на пинги и на локальную консоль.

Порыв инет нашел только хорошие отзывы про ng_nat, его и применил на проблемном шлюзе.
И да, это практически решило проблему.

Во первых теперь отчетливо видно нагрузку НАТ по ng_queue

Код: Выделить всё

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   11 root     155 ki31     0K    32K CPU0    0 143:21 85.69% idle{idle: cpu0}
   11 root     155 ki31     0K    32K CPU2    2 135:47 80.66% idle{idle: cpu2}
   11 root     155 ki31     0K    32K RUN     3 135:23 79.20% idle{idle: cpu3}
   11 root     155 ki31     0K    32K RUN     1 135:28 77.69% idle{idle: cpu1}
 1281 root     -16    -     0K    32K sleep   2  25:09 15.97% ng_queue{ng_queue2}
 1281 root     -16    -     0K    32K sleep   3  25:09 15.87% ng_queue{ng_queue0}
 1281 root     -16    -     0K    32K sleep   3  24:52 15.09% ng_queue{ng_queue3}
 1281 root     -16    -     0K    32K sleep   0  24:34 13.96% ng_queue{ng_queue1}
   12 root     -92    -     0K   232K WAIT    2   5:46  5.66% intr{irq264: igb1:que}
   12 root     -92    -     0K   232K WAIT    0   5:11  5.37% intr{irq262: igb1:que}
   12 root     -92    -     0K   232K WAIT    3   5:37  5.18% intr{irq265: igb1:que}
   12 root     -92    -     0K   232K WAIT    1   5:17  4.88% intr{irq263: igb1:que}
   12 root     -92    -     0K   232K WAIT    1   3:12  1.86% intr{irq258: igb0:que}
   12 root     -92    -     0K   232K WAIT    2   2:59  1.56% intr{irq259: igb0:que}
   12 root     -92    -     0K   232K WAIT    0   2:47  1.37% intr{irq257: igb0:que}
   12 root     -92    -     0K   232K WAIT    3   3:01  0.98% intr{irq260: igb0:que}
Ранее нагрузку ng_queue несли intr{irqXXX: igb1:que}.

Во вторых DOS на порт 6881 теперь не вешает машину, а забивает один из тредов ng_queue.
Тут пришлось немного оптимизировать Netgraph, иначе вываливались все сервисы с нехваткой памяти

Код: Выделить всё

net.graph.maxdata=65536
net.graph.maxalloc=65536
Короче говоря - жить можно, хоть и не очень приятно.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

napTu
рядовой
Сообщения: 17
Зарегистрирован: 2009-09-23 18:47:44

Re: ipfw nat ложит freebsd 9.1 трафиком на порт 6881

Непрочитанное сообщение napTu » 2013-09-30 14:20:28

Хоть управление и есть теперь, но от жалоб и проблем с подключением не спасло.

Код: Выделить всё

  PID USERNAME PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
 1281 root     -16    -     0K    32K CPU2    2  70:30 98.97% ng_queue{ng_queue1}
   11 root     155 ki31     0K    32K CPU0    0  19.9H 90.77% idle{idle: cpu0}
   11 root     155 ki31     0K    32K RUN     2  19.6H 75.68% idle{idle: cpu2}
   11 root     155 ki31     0K    32K CPU1    1  19.6H 75.68% idle{idle: cpu1}
   11 root     155 ki31     0K    32K RUN     3  19.6H 72.66% idle{idle: cpu3}
 1281 root     -16    -     0K    32K sleep   0  51:37  0.20% ng_queue{ng_queue2}
 1281 root     -16    -     0K    32K sleep   3  51:24  0.20% ng_queue{ng_queue3}
   12 root     -92    -     0K   232K WAIT    3  18:19  0.20% intr{irq260: igb0:que}
   12 root     -60    -     0K   232K WAIT    0  11:20  0.20% intr{swi4: clock}
 1281 root     -16    -     0K    32K sleep   3  51:46  0.10% ng_queue{ng_queue0}
   12 root     -92    -     0K   232K WAIT    1  20:27  0.10% intr{irq258: igb0:que}
Пока спасаюсь так

Код: Выделить всё

 ipfw add 2 prob 0.6 deny ip from any to me dst-port 6881 in via igb1

napTu
рядовой
Сообщения: 17
Зарегистрирован: 2009-09-23 18:47:44

Re: ipfw nat ложит freebsd 9.1 трафиком на порт 6881

Непрочитанное сообщение napTu » 2013-09-30 14:36:51

тут уже и prob не спас:

Код: Выделить всё

Source/32                        Destination/32                   Protocol     Size         CPS
???????????????????????????????????????????????????????????????????????????????????????????????????????
em0                              11474 Flows                      Total:       1648K        159K

napTu
рядовой
Сообщения: 17
Зарегистрирован: 2009-09-23 18:47:44

Re: ipfw nat ложит freebsd 9.1 трафиком на порт 6881

Непрочитанное сообщение napTu » 2013-10-14 21:32:26

За прошедшее время насобирал ещё немного опыта по данному вопросу.
Эффективно рубить ДОС ограничением количества соединений

Код: Выделить всё

 count ip from any to me dst-port 6881 in limit dst-addr 500
На FreeBSD8.3 ng_nat показал себя очень плохо,
так и не смог добиться работы ната с преобразованием чужого ip сессии bgp в свой реальник.
icmp ещё ходят, а tcp вообще никак. Флаг_NAT_UNREGISTERED_ONLY снимал.
При нат-инге клиентских ip поступали жалобы на тормоза и невозможность просмотра/прослушивания потоковых данных.

На 9.1 вроде таких жалоб нет, но сильно не тестировал и уже нужно относиться с опаской.

APM
ефрейтор
Сообщения: 52
Зарегистрирован: 2007-11-25 0:17:45

Re: ipfw nat ложит freebsd 9.1 трафиком на порт 6881

Непрочитанное сообщение APM » 2014-06-16 11:52:11

Подскажите пожалуйста, какой командой сняли эту статистику:

em0 11474 Flows Total: 1648K 159K


Я очень мучаюсь с натом тоже, а его все больше и больше становится.

И хочу научится мониторить число состояний нат машины.

У меня ng_nat и 9.2 фряха.