The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"IPTABLES NAT и фрагментированные IP-пакеты"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от master_kka (ok) on 14-Май-15, 14:15 
Добрый день.

Есть NAT-сервер на базе IPTABLES.
Нагрузка около 150 mbit/s, 70000-80000 пакетов в секунду.

Все работает отлично, кроме пропуска через NAT фрагментированных IP-пакетов, т.е. пакет размером 1501 байт, до сервера разбитый на 2 IP-пакета, попадает на сервер и собственно все.

Точнее сразу после начала передачи трафика через сервера несколько подобных пакетов проходят, потом - нет.

Где порыться?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от pavel_simple (ok) on 14-Май-15, 14:23 
> Добрый день.
> Есть NAT-сервер на базе IPTABLES.
> Нагрузка около 150 mbit/s, 70000-80000 пакетов в секунду.
> Все работает отлично, кроме пропуска через NAT фрагментированных IP-пакетов, т.е. пакет
> размером 1501 байт, до сервера разбитый на 2 IP-пакета, попадает на
> сервер и собственно все.
> Точнее сразу после начала передачи трафика через сервера несколько подобных пакетов проходят,
> потом - нет.
> Где порыться?

man iptables / mss

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от master_kka (ok) on 14-Май-15, 14:46 
> man iptables / mss

mss думаю не причем, проверяю путем отправки ICMP-пакетов.

Возможно, дело в нагрузке на сервер, несколько пакетов все-же проходят в самом начале форвардинга трафика - потом глухо, смущает именно проблема с ip-пакетами, фрагментированными до сервера, не фрагментированные пакеты бегают нормально.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от rusadmin (ok) on 14-Май-15, 16:00 
>> man iptables / mss
> mss думаю не причем, проверяю путем отправки ICMP-пакетов.
> Возможно, дело в нагрузке на сервер, несколько пакетов все-же проходят в самом
> начале форвардинга трафика - потом глухо, смущает именно проблема с ip-пакетами,
> фрагментированными до сервера, не фрагментированные пакеты бегают нормально.

1. MSS и ICMP вещи абсолютно несовместимые. Почитайте ман от iptables (как предложили выше) - там есть механизм тюнинга MSS.
2. При помощи ICMP проверяют MTU, при этом выставив DF-бит и задав нужный размер пакета (с учетом заголовка самого ICMP и IP).
3. Можно еще попробовать снимать на входе и выходе DF-бит на пакетах. Правда как это сделать на линуксе не знаю. Небыло необходимости.

https://www.opennet.ru/base/cisco/df_packet_fragment.txt.html

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от master_kka (ok) on 14-Май-15, 17:16 
>[оверквотинг удален]
>> Возможно, дело в нагрузке на сервер, несколько пакетов все-же проходят в самом
>> начале форвардинга трафика - потом глухо, смущает именно проблема с ip-пакетами,
>> фрагментированными до сервера, не фрагментированные пакеты бегают нормально.
> 1. MSS и ICMP вещи абсолютно несовместимые. Почитайте ман от iptables (как
> предложили выше) - там есть механизм тюнинга MSS.
> 2. При помощи ICMP проверяют MTU, при этом выставив DF-бит и задав
> нужный размер пакета (с учетом заголовка самого ICMP и IP).
> 3. Можно еще попробовать снимать на входе и выходе DF-бит на пакетах.
> Правда как это сделать на линуксе не знаю. Небыло необходимости.
> https://www.opennet.ru/base/cisco/df_packet_fragment.txt.html

Пакет уже фрагментированный, до сервера с NAT.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

4. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от тень_pavel_simple on 14-Май-15, 17:12 
>> man iptables / mss
> mss думаю не причем, проверяю путем отправки ICMP-пакетов.
> Возможно, дело в нагрузке на сервер, несколько пакетов все-же проходят в самом
> начале форвардинга трафика - потом глухо, смущает именно проблема с ip-пакетами,
> фрагментированными до сервера, не фрагментированные пакеты бегают нормально.

Iptables-save

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от master_kka (ok) on 14-Май-15, 17:20 
>>> man iptables / mss
>> mss думаю не причем, проверяю путем отправки ICMP-пакетов.
>> Возможно, дело в нагрузке на сервер, несколько пакетов все-же проходят в самом
>> начале форвардинга трафика - потом глухо, смущает именно проблема с ip-пакетами,
>> фрагментированными до сервера, не фрагментированные пакеты бегают нормально.
> Iptables-save

Даже так не работает

-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P FORWARD ACCEPT

-t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source x.x.x.x

При этом, если забить на всех абонентов и делать NAT только для тестового  - то начинает работать (т.е. нормально делать NAT для фрагментированных пакетов), видимо все-же проблема в нагрузке.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от тень_pavel_simple on 14-Май-15, 17:32 
>[оверквотинг удален]
>>> фрагментированными до сервера, не фрагментированные пакеты бегают нормально.
>> Iptables-save
> Даже так не работает
> -P INPUT ACCEPT
> -P OUTPUT ACCEPT
> -P FORWARD ACCEPT
> -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source x.x.x.x
> При этом, если забить на всех абонентов и делать NAT только для
> тестового  - то начинает работать (т.е. нормально делать NAT для
> фрагментированных пакетов), видимо все-же проблема в нагрузке.

А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?

Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl -a | grep forward

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от master_kka (ok) on 14-Май-15, 17:45 
>[оверквотинг удален]
>> -P INPUT ACCEPT
>> -P OUTPUT ACCEPT
>> -P FORWARD ACCEPT
>> -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source x.x.x.x
>> При этом, если забить на всех абонентов и делать NAT только для
>> тестового  - то начинает работать (т.е. нормально делать NAT для
>> фрагментированных пакетов), видимо все-же проблема в нагрузке.
> А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?
> Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl
> -a | grep forward

на текущий момент сессий в conntrack около 150000.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от тень_pavel_simple on 14-Май-15, 18:27 
>[оверквотинг удален]
>>> -P OUTPUT ACCEPT
>>> -P FORWARD ACCEPT
>>> -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source x.x.x.x
>>> При этом, если забить на всех абонентов и делать NAT только для
>>> тестового  - то начинает работать (т.е. нормально делать NAT для
>>> фрагментированных пакетов), видимо все-же проблема в нагрузке.
>> А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?
>> Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl
>> -a | grep forward
> на текущий момент сессий в conntrack около 150000.

Это ниочём тормрза на 'олее-менее современной машине должны начинаться от 3 милионов.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от master_kka (ok) on 14-Май-15, 18:49 
>[оверквотинг удален]
>>>> -P FORWARD ACCEPT
>>>> -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source x.x.x.x
>>>> При этом, если забить на всех абонентов и делать NAT только для
>>>> тестового  - то начинает работать (т.е. нормально делать NAT для
>>>> фрагментированных пакетов), видимо все-же проблема в нагрузке.
>>> А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?
>>> Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl
>>> -a | grep forward
>> на текущий момент сессий в conntrack около 150000.
> Это ниочём тормрза на 'олее-менее современной машине должны начинаться от 3 милионов.

Тоже так думаю, проблемы именно с пакетами, пришедшими из вне уже фрагментированными.
Читал, что перед тем, как попасть в NAT, фрагменты должны собраться в пакет, может быть здесь проблема?
С остальным трафиком проблем нет, все натится нормально.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от тень_pavel_simple on 14-Май-15, 20:21 
>[оверквотинг удален]
>>>>> фрагментированных пакетов), видимо все-же проблема в нагрузке.
>>>> А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?
>>>> Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl
>>>> -a | grep forward
>>> на текущий момент сессий в conntrack около 150000.
>> Это ниочём тормрза на 'олее-менее современной машине должны начинаться от 3 милионов.
> Тоже так думаю, проблемы именно с пакетами, пришедшими из вне уже фрагментированными.
> Читал, что перед тем, как попасть в NAT, фрагменты должны собраться в
> пакет, может быть здесь проблема?
> С остальным трафиком проблем нет, все натится нормально.

Если вы продолжете не отвечать на вопросы с предоставлением доп.инфо. , боюсь я вам ничем помочь не смогу.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от rusadmin (ok) on 15-Май-15, 06:22 
>[оверквотинг удален]
>>>>> фрагментированных пакетов), видимо все-же проблема в нагрузке.
>>>> А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?
>>>> Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl
>>>> -a | grep forward
>>> на текущий момент сессий в conntrack около 150000.
>> Это ниочём тормрза на 'олее-менее современной машине должны начинаться от 3 милионов.
> Тоже так думаю, проблемы именно с пакетами, пришедшими из вне уже фрагментированными.
> Читал, что перед тем, как попасть в NAT, фрагменты должны собраться в
> пакет, может быть здесь проблема?
> С остальным трафиком проблем нет, все натится нормально.

По поводу трансляции фрагментированного трафика был не в курсе. Действительно, фрагменты  же пересылаются уже без указания номеров портов источника/назначения, а значит пакет должен быть собран полностью до помещения его в conntrack. Памяти достаточно?

Посмотрите тут
https://nikitushkin.wordpress.com/2011/02/12/%D0%B.../

Обратите внимание на net.ipv4.ipfrag_low_thresh. Возможно тут собака порылась

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

14. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от rusadmin (ok) on 15-Май-15, 06:25 
>[оверквотинг удален]
>>>>> фрагментированных пакетов), видимо все-же проблема в нагрузке.
>>>> А про какую нагрузку вы говорите? сколько одновременных сессий в conntrack'е?
>>>> Сделайте максимально простой мсэ, замените вывод первых октетов iptables-save, ip ro, sysctl
>>>> -a | grep forward
>>> на текущий момент сессий в conntrack около 150000.
>> Это ниочём тормрза на 'олее-менее современной машине должны начинаться от 3 милионов.
> Тоже так думаю, проблемы именно с пакетами, пришедшими из вне уже фрагментированными.
> Читал, что перед тем, как попасть в NAT, фрагменты должны собраться в
> пакет, может быть здесь проблема?
> С остальным трафиком проблем нет, все натится нормально.

....удалено

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

8. "IPTABLES NAT и фрагментированные IP-пакеты"  +/
Сообщение от rusadmin (ok) on 14-Май-15, 17:38 
>[оверквотинг удален]
>>> фрагментированными до сервера, не фрагментированные пакеты бегают нормально.
>> Iptables-save
> Даже так не работает
> -P INPUT ACCEPT
> -P OUTPUT ACCEPT
> -P FORWARD ACCEPT
> -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j SNAT --to-source x.x.x.x
> При этом, если забить на всех абонентов и делать NAT только для
> тестового  - то начинает работать (т.е. нормально делать NAT для
> фрагментированных пакетов), видимо все-же проблема в нагрузке.

В момент предполагаемой высокой нагрузки пришлите вывод утилиты top

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру