|
|
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
Доброго дня. На шлюзе под FreeBSD 9.1 имеется natd. (Про существование NAT в составе ipfw в курсе, но пока недосуг на него переехать). Недавно, в связи с подключением нового провайдера IP-телефонии возникла проблемка, требующая более глубокого понимания работы демона natd. Если совсем коротко, то техподдержка провайдера уверяет, что мой NAT слишком быстро "забывает" маршрут и рекомендует подкрутить настройки моего NAT. Не уверен, что они правы в своей рекомендации (с другими то провайдерами нет проблем), но таки решил посмотреть, что можно сделать в этом направлении. Теперь по сути. Когда устанавливается соединение из локальной сети во внешнюю, natd записывает в свою внутреннюю таблицу соответствие IP-адресов и портов, между которыми устанавливается соединение. И далее гоняет пакеты в соответствии с этой таблицей. Это понятно. Возникли вопросы, на которые скудный man natd не дал ответа: 1. Как долго помнит natd это соответствие? (перезапуск демона не в счет) 2. Что заставляет natd "забыть" это соответствие (какие-то таймауты, информация из заголовков пакетов, что-то еще)? 3. Как можно посмотреть текущую таблицу соответствий? Если это вообще возможно... 4. Можно ли как-то управлять временем жизни оной таблицы соответствий при помощи конфига или каким-то другим способом? Заранее благодарю за подробный ответ или отсылку к документу с разъяснениями по существу вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2014, 15:02 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
vkle, Чтото мне кажется гонит ваш провайдер. У вас есть конфиг natd.cnf с указаниями что делать, если пакет попал в цепочку PREROUTING таблицы NAT. Далее если пакет соответствует условию он обрабатывается. Пусть таймаут таблицы трансляций будет равен хоть 1 мс (немного утрирую) пока у вас есть правило удовлетворяющее прохождению пакета, таймаут не закончится пока идут пакеты. А пакеты идут пока есть правило в конфиге... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2014, 21:14 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
неТолик1vkle, если пакет попал в цепочку PREROUTING таблицы NAT. Цепочка PREROUTING на FreeBSD - это что то новое... vkle , по идее, NATD для TCP должен держать соответствие больше двух часов - это значение по умолчанию KEEPALIVE для TCP для многих ОС, в том числе и для freebsd, смотрите sysctl net.inet.tcp.keepidle. Кстати, перезагрузка natd не должна разрывать установленные соединения поскольку они сохраняются во внутренних таблицах. Можете попробовать уменьшить net.inet.tcp.keepidle, например, минут до 15-ти. Иными словами, natd держит соединения достаточно долго, и Ваша проблема, скорее всего, в чем-то другом. Например, попробуйте тут более детально описать ее проявления: протокол, при работе по которому возникают проблемы, симптомы, записи в логах и т.п. --- Виктор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 11:02 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
VGreyнеТолик1vkle, если пакет попал в цепочку PREROUTING таблицы NAT. Цепочка PREROUTING на FreeBSD - это что то новое... забыл (Linux) в ковычки поставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 11:47 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
VGreyсмотрите sysctl net.inet.tcp.keepidle Код: sql 1. 2. Да, вроде как два часа. Но распространяется ли это на маршрут, поддерживаемый natd? VGreyИными словами, natd держит соединения достаточно долго, и Ваша проблема, скорее всего, в чем-то другом. Например, попробуйте тут более детально описать ее проявленияПротокол SIP. Моя мини-АТС из локальной сети регистрируется у нескольких провайдеров IP-телефонии. Регистрация (два пакета от меня и два ответных от провайдера) происходит раз в пять минут (менее на мини-АТС установить невозможно). Проблемный провайдер не может послать мне входящий вызов (пакет инвайт) через некоторое время после регистрации. Например, через минуту после регистрации пакет проходит и соединение удается установить, а через четыре минуты - нет. В затишье сравнил обмен по SIP между разными провайдерами. Оказалось, что от беспроблемных провайдеров в промежутках между регистрациями проходит еще четыре "холостых" пакета (запрос опций), которые, как мне кажется, и удерживают соединение. Отсюда и сложилось впечатление о том, что кто-то где-то забывает маршрут быстрее чем через пять минут. На моей стороне потенциально проблемными вроде бы могут быть только natd и ipfw. Вот потому и решил немного углубиться в понимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 14:33 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
Эммм... Тогда еще вопрос вылез. Если правильно понимаю, тут UDP используется. Код: sql 1. 2. 3. 4. 5. Переменная net.inet.tcp.keepidle распространяется только на TCP, или и на UDP тоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 16:00 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
Почему спрашиваю... Для UDP не обнаружил аналогичного параметра Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 16:07 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
А вы попробуйте прокинуть станцию напрямую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 21:30 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
vkle[/src]Переменная net.inet.tcp.keepidle распространяется только на TCP, или и на UDP тоже? Только на tcp, насколько помню, время "удержания" udp определено в самом коде natd и оно порядка двух минут. Но могу и ошибаться. В принципе, Вы можете проверить tcpdump-ом Ваше предположение - если со стороны sip-прова вызывающий пакет есть, а в сторону интерфейса, который смотрит на АТС его нету, таки, проблема в НАТд. Как варианты: - глянуть в коде НАТд, поправить, пересобрать. - как пишет Sergey Orlov , пробросить udp-порт на АТС, например, средствами natd: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 10:54 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
VGreyнасколько помню, время "удержания" udp определено в самом коде natd и оно порядка двух минут. Но могу и ошибаться.По крайней мере, такое время очень похоже на правду. Эх, жаль что код на Си только "читаю со словарём"... И всё же, остался третий вопрос, чисто академического интересу. Можно ли в реальном времени посмотреть таблицу natd? VGreyпробросить udp-порт на АТС, например, средствами natdТак и сделал с утра. Вроде бы, должно помочь. Посмотрим, что получится. Проблема то не постоянна, возникает только в относительно тихое от звонков время. А пока активно названивают - жалоб нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 15:11 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
vkle, не смотрел в сторону pf? время таймаута для udp соединений задается в конфиге и легко меняется. Да и синтаксис у него ощутимо проще в сравнении с ipfw. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 15:33 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
bga83vkle, не смотрел в сторону pf?Не смотрел. Нонешний конфиг в основном написан более семи лет назад и при необходимости слегка допиливается. Работает же исправно, задачи выполняет... bga83время таймаута для udp соединений задается в конфиге и легко меняется.У него свой NAT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 16:29 |
|
||
|
FreeBSD несколько вопросов по natd
|
|||
|---|---|---|---|
|
#18+
vklebga83время таймаута для udp соединений задается в конфиге и легко меняется.У него свой NAT?Да vkleНонешний конфиг в основном написан более семи лет назад и при необходимости слегка допиливается. мне некоторое время назад довелось тоже довольно большую портянку правил ipfw переводить в pf. Делал вручную, потому как параллельно проводилась инвентаризация правил и комментирование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=25&fpage=40&tid=1482452]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 390ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...