Перейти к содержимому
Калькуляторы

Linux NAT. странное поведение трафика. Да, да, опять linux nat :)

Добрый день!

Решили натить пользователей на linux.

Сразу же столкнулись со странным поведением трафика:

 

 # vnstat -tr 60 -i eth0
6592399 packets sampled in 60 seconds
Traffic average for eth0

      rx       196.95 Mbit/s         57217 packets/s
      tx        58.27 Mbit/s         52655 packets/s

# vnstat -tr 60 -i eth1
2397043 packets sampled in 60 seconds
Traffic average for eth1

      rx        31.96 Mbit/s         18037 packets/s
      tx       171.71 Mbit/s         21912 packets/s

 

eth0 - смотрит в мир

eth1 - в сторону клиентов

 

одно правило SNAT:

сеть /19 натится в /20

-t nat -A POSTROUTING -s 10.0.0.0/19 -o eth0 -j SNAT --to-source хх.хх.64.0-хх.хх.79.255 --persistent

 

При тестовом переводе клиентов на этот нат, на пару часов, никаких жалоб не поступало,

Да и сами попользовавшись инетом через нат никакого дискомфорта не ощутили.

 

Очень смущает практически двух кратная разница по пакетам на интерфейсах :)

Буду благодарен за любую помощь/подсказку.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tier,

uname -r
ethtool -S eth0
ethtool -S eth1
ethtool -i eth0
ethtool -i eth1

По-моему, у Вас счетчики сломаны. Где-то в мейллисте проскакивало не так давно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще tail /var/log/messages хорошо бы.

Может, там conntrack table full.

 

и

ethtool -k eth0

ethtool -k eth1

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Счетчики в порядке, загруженность также снимается с интерфейсов cisco к которому подключен сервер, там та-же картина.

Самое интересное при переводе трафика обратно на cisco nat, трафик становиться одинаковым на обоих интерфейсах, и равен трафику на интерфейсе eth1.

C conntrack table тоже все в норме, лог чист.

 

# uname -r
2.6.35-27-server

# ethtool -i eth0
driver: igb
version: 2.4.13
firmware-version: 1.4-3
bus-info: 0000:01:00.0

# ethtool -i eth1
driver: igb
version: 2.4.13
firmware-version: 1.4-3
bus-info: 0000:01:00.1

# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on                                                                                                                                                    
generic-receive-offload: on                                                                                                                                                         
large-receive-offload: off                                                                                                                                                          
ntuple-filters: off                                                                                                                                                                 
receive-hashing: off                                                                                                                                                                

# ethtool -k eth1
Offload parameters for eth1:                                                                                                                                                        
rx-checksumming: on                                                                                                                                                                 
tx-checksumming: on                                                                                                                                                                 
scatter-gather: on                                                                                                                                                                  
tcp-segmentation-offload: on                                                                                                                                                        
udp-fragmentation-offload: off                                                                                                                                                      
generic-segmentation-offload: on                                                                                                                                                    
generic-receive-offload: on                                                                                                                                                         
large-receive-offload: off                                                                                                                                                          
ntuple-filters: off                                                                                                                                                                 
receive-hashing: off

# ethtool -S eth0
NIC statistics:
     rx_packets: 740963610
     tx_packets: 683196875
     rx_bytes: 324084949312
     tx_bytes: 101868487343
     rx_broadcast: 3
     tx_broadcast: 27
     rx_multicast: 0
     tx_multicast: 6
     multicast: 0
     collisions: 0
     rx_crc_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 686
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 40833
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 324084949312
     tx_dma_out_of_sync: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_frame_errors: 0
     rx_fifo_errors: 686
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_queue_0_packets: 170357854
     tx_queue_0_bytes: 24514313759
     tx_queue_0_restart: 0
     tx_queue_1_packets: 171167978
     tx_queue_1_bytes: 25213824505
     tx_queue_1_restart: 0
     tx_queue_2_packets: 167858829
     tx_queue_2_bytes: 23694875426
     tx_queue_2_restart: 0
     tx_queue_3_packets: 173812214
     tx_queue_3_bytes: 24987430556
     tx_queue_3_restart: 0
     rx_queue_0_packets: 184846144
     rx_queue_0_bytes: 79303004015
     rx_queue_0_drops: 0
     rx_queue_0_csum_err: 8341
     rx_queue_0_alloc_failed: 0
     rx_queue_1_packets: 187426815
     rx_queue_1_bytes: 79888594132
     rx_queue_1_drops: 0
     rx_queue_1_csum_err: 73915
     rx_queue_1_alloc_failed: 0
     rx_queue_2_packets: 183818168
     rx_queue_2_bytes: 80306063342
     rx_queue_2_drops: 0
     rx_queue_2_csum_err: 32430
     rx_queue_2_alloc_failed: 0
     rx_queue_3_packets: 184872483
     rx_queue_3_bytes: 81623433383
     rx_queue_3_drops: 0
     rx_queue_3_csum_err: 36190
     rx_queue_3_alloc_failed: 0

# ethtool -S eth1
NIC statistics:
     rx_packets: 227507872
     tx_packets: 278109573
     rx_bytes: 54237811266
     tx_bytes: 276637724843
     rx_broadcast: 0
     tx_broadcast: 19
     rx_multicast: 0
     tx_multicast: 6
     multicast: 0
     collisions: 0
     rx_crc_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 30937219
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 54237811266
     tx_dma_out_of_sync: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_frame_errors: 0
     rx_fifo_errors: 0
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_queue_0_packets: 68990943
     tx_queue_0_bytes: 67941626306
     tx_queue_0_restart: 0
     tx_queue_1_packets: 70688539
     tx_queue_1_bytes: 68253855839
     tx_queue_1_restart: 0
     tx_queue_2_packets: 68850608
     tx_queue_2_bytes: 68868834145
     tx_queue_2_restart: 0
     tx_queue_3_packets: 69579483
     tx_queue_3_bytes: 70338134959
     tx_queue_3_restart: 0
     rx_queue_0_packets: 57008133
     rx_queue_0_bytes: 13325746443
     rx_queue_0_drops: 0
     rx_queue_0_csum_err: 123
     rx_queue_0_alloc_failed: 0
     rx_queue_1_packets: 57446776
     rx_queue_1_bytes: 13975619659
     rx_queue_1_drops: 0
     rx_queue_1_csum_err: 110
     rx_queue_1_alloc_failed: 0
     rx_queue_2_packets: 55595857
     rx_queue_2_bytes: 12641250659
     rx_queue_2_drops: 0
     rx_queue_2_csum_err: 85
     rx_queue_2_alloc_failed: 0
     rx_queue_3_packets: 57457106
     rx_queue_3_bytes: 13385163017
     rx_queue_3_drops: 0
     rx_queue_3_csum_err: 89
     rx_queue_3_alloc_failed: 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

mtu на интерфейсах линуха одинаковый?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

да, mtu одинаковые. пробовали увеличить mtu, но никакой разницы не заметили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще для диагностики:

iptables-save
iptables -t nat -L -nv

Попытка лечения (были с этим глюки, мало ли):

ethtool -K eth0 gro off
ethtool -K eth1 gro off

Заодно и gso туда же.

Если в iptables есть chain-ы, то обновиться до 2.6.35.11 либо 2.6.36 (была бага).

 

А вообще, что это за линух? Неужли бубунта? :)

Изменено пользователем Abram

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Неужли бубунта? :)
:) она самая.

# uname -a
Linux nat 2.6.35-27-server #48-Ubuntu SMP Tue Feb 22 21:53:16 UTC 2011 x86_64 GNU/Linux

из iptables убрал все кроме SNAT

# iptables-save 
# Generated by iptables-save v1.4.9.1 on Thu Mar 17 14:37:52 2011
[quot]raw
:PREROUTING ACCEPT [29006194:8474717917]
:OUTPUT ACCEPT [145032:21311996]
COMMIT
# Completed on Thu Mar 17 14:37:52 2011
# Generated by iptables-save v1.4.9.1 on Thu Mar 17 14:37:52 2011
[/quot]mangle
:PREROUTING ACCEPT [29006209:8474724564]
:INPUT ACCEPT [2627:159820]
:FORWARD ACCEPT [28830541:8443643808]
:OUTPUT ACCEPT [145032:21311996]
:POSTROUTING ACCEPT [28975573:8464955804]
COMMIT
# Completed on Thu Mar 17 14:37:52 2011
# Generated by iptables-save v1.4.9.1 on Thu Mar 17 14:37:52 2011
[quot]nat
:PREROUTING ACCEPT [523391:48756300]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [149170:16448715]
-A POSTROUTING -s 10.0.0.0/19 -o eth0 -j SNAT --to-source xx.xx.64.0-xx.xx.79.255 --persistent 
COMMIT
# Completed on Thu Mar 17 14:37:52 2011
# Generated by iptables-save v1.4.9.1 on Thu Mar 17 14:37:52 2011
[/quot]filter
:INPUT ACCEPT [2628:159872]
:FORWARD ACCEPT [28831194:8443900055]
:OUTPUT ACCEPT [145034:21312854]
COMMIT
# Completed on Thu Mar 17 14:37:52 2011

 

# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 1094K packets, 94M bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 311K packets, 32M bytes)
pkts bytes target     prot opt in     out     source               destination         
783K   63M SNAT       all  --  *      eth0    10.0.0.0/19         0.0.0.0/0           to:xx.xx.64.0-xx.xx.79.255 persistent

 

подкрутил gro и gso, картина та-же :(

Изменено пользователем tier

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хх.хх.64.0-хх.хх.79.255 может я туплю, но не до хрена ли?

200мбит/с где-то 20т-25т пакетов нормального трафа, всё остальное скорее всего мусор. слишком большая под сеть в инет

 

отключи tcp-segmentation-offload: on , он бьёт большие пакеты на фрагменты

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас сеть /19 натится в сеть /20, далее в зависимости от того как поведет себя этот нат переведу туда еще /19 приватных адресов.

Сейчас эти клиенты натятся на cisco 7301, и траффик на интерфейсах одинаковый, переключаю на linux nat и сюрприз в виде 2х кратного увеличения pps :)

 

всё остальное скорее всего мусор.
Вот и пытаюсь понять откуда этот мусор, как с ним бороться, и нужно ли.

tcpdump на eth0 ловит множество мелких пакетов вида:

15:43:50.820188 IP 94.231.160.90.29928 > xx.xx.68.0.41220: UDP, length 30
15:48:31.452295 IP 213.79.113.130.35691 > xx.xx.78.204.49832: UDP, length 106

 

tso тоже выключил, без изменений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Неужли бубунта? :)
:) она самая.

Ёбаный стыд.

Уберите, поставьте Arch/Gentoo/Slackware (лично мне нравится первый), и будем разбираться дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Каюсь, сектант :)

Пока смена OS на крайний случай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

проверьте, может у вас какая-то сеть закольцована - поэтому пакеты бегают туда-сюда пока ttl не истечет

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

tier,

vitalyb дело говорит - попробуйте.

Насчет бубунты, поменяйте хотя бы ядро на свежее ванильное. Хотя бы в порядке эксперимента.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

проверьте, может у вас какая-то сеть закольцована - поэтому пакеты бегают туда-сюда пока ttl не истечет
Очень может быть, route в студию.

но чё гадать, ставишь сенсор на оба интерфейса, собираешь статистику (5 сек достаточно ) потом из статистики eth0 убираешь статистику eth1 анализируешь оставшийся мусор, и тебе сразу в голову приходит ответ

Но так оставлять не в коем случае нельзя, поток увеличится до 400 мб и ляжет твоя Ubunta

 

зы: Gentoo рулит (она не долго собирается, её долго собирают :))) )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

но чё гадать, ставишь сенсор на оба интерфейса, собираешь статистику (5 сек достаточно ) потом из статистики eth0 убираешь статистику eth1 анализируешь оставшийся мусор, и тебе сразу в голову приходит ответ
спс, как-то сразу в голову не пришло диффнуть статистику между интерфейсами, завтра попробую.

 

Abram, SiXeD

уже самому интересно сколько потянет убунта, на родном ядре, траффика :)

но новое ядро уже собрали :)

 

P.S. может кто сталкивался и есть решение как логировать nat трансляции, пока собираю лог с помощью Ulogd2 + NFCT plugin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

P.S. может кто сталкивался и есть решение как логировать nat трансляции, пока собираю лог с помощью Ulogd2 + NFCT plugin.

а что это такое и зачем оно тебе надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Требование начальства и органов. кто куда и когда ходил.

На cisco все просто, логи шлются на syslog сервер, суточный лог выходит порядка 3-4 гиг.

а тут за час 1 гиг получается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а тут за час 1 гиг получается.
у меня за таже фигня с ipcad, 400 GB в месяц, решение лить в другое место и архивить, 40GB в месяц не так критично

 

и ещё смотря как часто ты снимаешь инфу, каждые 5(400gb) минут или 1(70gb) раз за час

Изменено пользователем SiXeD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Требование начальства и органов. кто куда и когда ходил.

а можно подробнее? это в рамках СОРМ или все-таки блаж начальства?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Требование начальства и органов. кто куда и когда ходил.

а можно подробнее? это в рамках СОРМ или все-таки блаж начальства?

Сорм собирает только ту инфу на которую поставил фильтра админ(отд. К), а биллинг должен собирать детализацию согласно (Приказу Министерства Информационных Технологий и связи РФ от 2 июля 2007г. под номером 73)

как известно за эти 4 года каналы выросли раз в 20, а что будет через 2-3 года думайте сами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Будьте любезны цитату из этого приказа, которая прямо указывает на обязанность оператора хранить "детализацию" по трафику ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понятия "Детализация" там даже НЕТ. НО есть про сбор данных о трафике

потребленных услуг по пропуску трафика с учетом их характеристик (длительность/объем оказанной услуги по пропуску трафика, дата и время начала оказания услуги по пропуску трафика и иные характеристики оказанной услуги по пропуску трафика, влияющие на результаты расчета)

Которые можно трактовать как угодно, вплоть до каждой сессии, которая может в очередной момент стать бесплатной и её необходимо пересчитать.

 

зы: Детальку хранить не обязательно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Именно об этом я и говорю.

Оператор обязан хранить информацию влияющую на тарифицирование. Выполнять функции правоохранительных органов - он не обязан.

Перлюстрация трафика (выяснение кто куда ходил) это задача именно этих органов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Конечно их задача, вот они ее и решают наиболее простым способом :)

 

По сабжу, все пытаюсь выяснить откуда лишние пакеты на внешнем интерфейсе, поставил сенсор, и коллектор flow, собрал данные с разбивкой по 1 минуте, за пол часа работы ната. Подскажите как получить разницу и выявить аномалии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.