Обрыв связи. Проблема с kernel nat Freebsd 8.2

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-10 14:17:18

Привет!

Не могу разобраться я с проблемой, помогите пожалуйста.
Есть сервер FreeBSD8.2, одной картой (fxp0) смотрит в internet, другой (fxp1) - в сетку с приватными IP.

nat висит на внешнем интерфейсе fxp0, натит
внутренюю приватную подсеть 192.168.0/24 и все вроде работает.
Но если из интернета качать большой файл (10-20мб) по http например, связь
рвется через 1-2 мегабайта
То же самое с pop3.

правила ipfw ---

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

00100   104    14122 allow ip from any to any via lo0
00200 28499 29678320 nat 100 ip from any to any via fxp0
00300 50209 46517793 allow ip from any to any

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

#ipfw nat show config
ipfw nat 100 config if fxp0 unreg_only reset
Никак не могу понять в чем дело.
Думал проблема в линке, но если добавить правило в обход nat

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

ipfw add 11 allow tcp from any to me 80 keep-state
то проблема исчезает.

Помогите пожалуйста разобраться.

Хостинговая компания 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/

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-10 14:19:31

Вот так выглядит сбой
На удаленном компе запускаю

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

#wget -t 1 nnn.phys.msu.ru/tmp/test
--2011-11-09 17:41:20--  http://nnn.phys.msu.ru/tmp/test
Resolving nnn.phys.msu.ru (nnn.phys.msu.ru)... 93.180.51.14
Connecting to nnn.phys.msu.ru (nnn.phys.msu.ru)|93.180.51.14|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20480000 (20M) [text/plain]
Saving to: `test'

0% [                                                                         ] 98,893       147K/s   in 0.7s    

2011-11-09 17:41:21 (147 KB/s) - Connection closed at byte 98893. Giving up.

А вот так выглядит tcpdump на компе о котором идет речь

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

17:44:38.186726 IP 93.180.51.14.80 > 78.107.11.34.24281: Flags [.], ack 126, win 8326, options [nop,nop,TS val 1781071408 ecr 3472289116], length 1448
17:44:38.194812 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 575308, win 8145, options [nop,nop,TS val 3472289161 ecr 1781071354], length 0
17:44:38.194851 IP 93.180.51.14.80 > 78.107.11.34.24281: Flags [.], ack 126, win 8326, options [nop,nop,TS val 1781071416 ecr 3472289161], length 1448
17:44:38.194855 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 576756, win 8326, options [nop,nop,TS val 3472289162 ecr 1781071405], length 0
17:44:38.194879 IP 93.180.51.14.80 > 78.107.11.34.24281: Flags [.], ack 126, win 8326, options [nop,nop,TS val 1781071416 ecr 3472289162], length 1448
17:44:38.194884 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 579652, win 8145, options [nop,nop,TS val 3472289165 ecr 1781071405], length 0
17:44:38.194906 IP 93.180.51.14.80 > 78.107.11.34.24281: Flags [FP.], seq 602820:602888, ack 126, win 8326, options [nop,nop,TS val 1781071416 ecr 3472289165], length 68
17:44:38.195784 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 581100, win 8326, options [nop,nop,TS val 3472289166 ecr 1781071405], length 0
17:44:38.198219 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 583996, win 8145, options [nop,nop,TS val 3472289168 ecr 1781071405], length 0
17:44:38.199409 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 585444, win 8326, options [nop,nop,TS val 3472289170 ecr 1781071405], length 0
17:44:38.205475 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 588340, win 8145, options [nop,nop,TS val 3472289176 ecr 1781071408], length 0
17:44:38.206676 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 589788, win 8326, options [nop,nop,TS val 3472289177 ecr 1781071408], length 0
17:44:38.209469 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 592684, win 8145, options [nop,nop,TS val 3472289180 ecr 1781071408], length 0
17:44:38.210427 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 594132, win 8326, options [nop,nop,TS val 3472289181 ecr 1781071408], length 0
17:44:38.213044 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 597028, win 8145, options [nop,nop,TS val 3472289183 ecr 1781071408], length 0
17:44:38.214509 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 598476, win 8326, options [nop,nop,TS val 3472289185 ecr 1781071416], length 0
17:44:38.216805 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 601372, win 8145, options [nop,nop,TS val 3472289187 ecr 1781071416], length 0
17:44:38.218029 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 602820, win 8326, options [nop,nop,TS val 3472289188 ecr 1781071416], length 0
17:44:38.218043 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 602889, win 8317, options [nop,nop,TS val 3472289189 ecr 1781071416], length 0
17:44:38.219115 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [F.], seq 126, ack 602889, win 8326, options [nop,nop,TS val 3472289190 ecr 1781071416], length 0
17:44:38.219143 IP 93.180.51.14.80 > 78.107.11.34.24281: Flags [.], ack 127, win 8325, options [nop,nop,TS val 1781071440 ecr 3472289190], length 0
17:44:42.849132 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [S], seq 2121977761, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 3472293819 ecr 0], length 0
17:44:42.849195 IP 93.180.51.14.25 > 78.107.11.34.55266: Flags [S.], seq 257921642, ack 2121977762, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 36964927 ecr 3472293819], length 0
17:44:42.861307 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [.], ack 1, win 8326, options [nop,nop,TS val 3472293822 ecr 36964927], length 0
17:44:42.967534 IP 93.180.51.14.25 > 78.107.11.34.55266: Flags [P.], ack 1, win 8326, options [nop,nop,TS val 36965046 ecr 3472293822], length 38
17:44:42.970086 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [P.], ack 39, win 8326, options [nop,nop,TS val 3472293940 ecr 36965046], length 15
17:44:42.970194 IP 93.180.51.14.25 > 78.107.11.34.55266: Flags [P.], ack 16, win 8326, options [nop,nop,TS val 36965048 ecr 3472293940], length 24
17:44:42.971940 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [P.], ack 63, win 8326, options [nop,nop,TS val 3472293942 ecr 36965048], length 6
17:44:42.972398 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [F.], seq 22, ack 63, win 8326, options [nop,nop,TS val 3472293942 ecr 36965048], length 0
17:44:42.972430 IP 93.180.51.14.25 > 78.107.11.34.55266: Flags [P.], ack 22, win 8326, options [nop,nop,TS val 36965051 ecr 3472293942], length 15
17:44:42.972469 IP 93.180.51.14.25 > 78.107.11.34.55266: Flags [F.], seq 78, ack 22, win 8326, options [nop,nop,TS val 36965051 ecr 3472293942], length 0
17:44:42.974602 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [R], seq 2121977783, win 0, length 0
17:44:42.974638 IP 78.107.11.34.55266 > 93.180.51.14.25: Flags [R], seq 2121977783, win 0, length 0

Проходил мимо
проходил мимо

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Проходил мимо » 2011-11-10 23:05:25

Проверь, отправка больших файлов тоже обрывается?

koklushkin
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-06-12 11:45:07

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение koklushkin » 2011-11-11 12:09:35

Dmitry122 писал(а):Привет!
То же самое с pop3.
походу нат тут не причем. fxp0 напрямую к провайдеру или через железку?

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-11 14:07:19

Проходил мимо писал(а):Проверь, отправка больших файлов тоже обрывается?
Поразительно, но обрыв идет только при загрузке с сервера. При загрузке НА СЕРВЕР например по ftp обрывов нет.
Я поражен!

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-11 14:12:06

koklushkin писал(а): походу нат тут не причем. fxp0 напрямую к провайдеру или через железку?
Напрямую к свичу провайдера по UTP.
Все работало много лет, пока не понадобился NAT.
Сначала поставил user mode natd - он стал грузить проц на 50-60% и дико тормозить сервер.
Я переставил на ipfw nat - стало с загрузкой проца все нормально, но пользователи стали жаловаться на обрывы связи при получении
больших писем по pop3.
Ну а потом я сделал тест через http с большим файлом на 20мб и обнаружилось что связь рвется и на нем.

ПРИЧЕМ! Если обойти nat правилом в начале списка allow tcp from any to me 80 - никаких обрывов нет!
Т.е. наводит на мысль что дело не в железе.

koklushkin
мл. сержант
Сообщения: 85
Зарегистрирован: 2010-06-12 11:45:07

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение koklushkin » 2011-11-11 17:05:04

ядро для нат пересобрал или подрузил? попробуй PF изменится что то или нет

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-11 22:54:27

koklushkin писал(а):ядро для нат пересобрал или подрузил? попробуй PF изменится что то или нет
Ядро пересобрал. Разбираться с pf не очень хочется, уде пробовал natd и ipfw nat.
Завтра махну сетевуху.

Интересно, что в другую сторону обрывов нет, - при загрузке файла не с сервера а на сервер.

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-14 10:18:27

Замена сетевой карты ситуацию не изменила.
Видимо глюк ipfw nat

snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение snorlov » 2011-11-14 10:42:58

Карту на такую же менял или на другую? Имеется в виду может глюк драйвера...

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-14 11:53:32

Менял на точно такую же, так что может быть и глюк.
А по tcpdump можно что то интересное сказать, я не очень его понимаю.
кажется в какой то момент сервер 93.180.51.14 закрывает коннект,

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

17:44:38.194906 IP 93.180.51.14.80 > 78.107.11.34.24281: Flags [FP.], seq 602820:602888, ack 126, win 8326, options [nop,nop,TS val 1781071416 ecr 3472289165], length 68
а клиент еще надеется на ответы ???

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

17:44:38.195784 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 581100, win 8326, options [nop,nop,TS val 3472289166 ecr 1781071405], length 0
17:44:38.198219 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 583996, win 8145, options [nop,nop,TS val 3472289168 ecr 1781071405], length 0
17:44:38.199409 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 585444, win 8326, options [nop,nop,TS val 3472289170 ecr 1781071405], length 0
17:44:38.205475 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 588340, win 8145, options [nop,nop,TS val 3472289176 ecr 1781071408], length 0
17:44:38.206676 IP 78.107.11.34.24281 > 93.180.51.14.80: Flags [.], ack 589788, win 8326, options [nop,nop,TS val 3472289177 ecr 1781071408], length 0

Аватара пользователя
LimpTeaM
сержант
Сообщения: 236
Зарегистрирован: 2007-10-04 16:26:21

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение LimpTeaM » 2011-11-14 12:36:34

попробуй ipnat
kldload ipfilter

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

 cat /etc/ipnat.conf
map ae0 from 192.168.77.0/24 to any -> 192.168.0.90
ipnat -f /etc/ipnat.conf
и всё

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2011-11-14 15:25:38

LimpTeaM писал(а):попробуй ipnat
kldload ipfilter

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

 cat /etc/ipnat.conf
map ae0 from 192.168.77.0/24 to any -> 192.168.0.90
ipnat -f /etc/ipnat.conf
и всё
Спасибо, попробую.
А ipfw правил никаких писать не надо, только все разрешить?
Заворачивать трафик никуда не надо?

Аватара пользователя
LimpTeaM
сержант
Сообщения: 236
Зарегистрирован: 2007-10-04 16:26:21

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение LimpTeaM » 2011-11-14 15:35:57

Dmitry122 писал(а):
LimpTeaM писал(а):попробуй ipnat
kldload ipfilter

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

 cat /etc/ipnat.conf
map ae0 from 192.168.77.0/24 to any -> 192.168.0.90
ipnat -f /etc/ipnat.conf
и всё
Спасибо, попробую.
А ipfw правил никаких писать не надо, только все разрешить?
Заворачивать трафик никуда не надо?
в принципе нет. эот самый банальный и простейший нат на pf. (сам pf я сам незнаю), но этот нат показал себя хорошо в разных боевых условиях и глюков я пока не видел.

gardener
рядовой
Сообщения: 18
Зарегистрирован: 2012-01-25 19:11:14

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение gardener » 2012-02-04 23:51:51

Похоже что проблема таки в ipfw nat.
У меня та-же проблема на двух разных машинах с разными карточками (intel - fxp и asus - stge).
FreeBSD 8.2-RELEASE.
Проблема не аппаратная, проблема софтовая.

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2012-02-05 2:20:20

Я решил ее у себя. Переписал правила.
Это некий хак, он помогает обойти проблему.
Но проблема есть.

Вот ее временное решение. Все начинает работать нормально.

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

NatIP="93.xxx.xx.14"

ipfw -f flush

ipfw nat 123 config ip ${NatIP} log

ipfw add nat 123 ip from 192.168.0.0/16 to any
ipfw add nat 123 ip from any to ${NatIP}

ipfw add allow all from any to any


gardener
рядовой
Сообщения: 18
Зарегистрирован: 2012-01-25 19:11:14

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение gardener » 2012-02-05 14:52:45

То есть проблема решается указанием вместо имени интерфейса значения адреса?

Пробую....

gardener
рядовой
Сообщения: 18
Зарегистрирован: 2012-01-25 19:11:14

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение gardener » 2012-02-05 15:50:50

Не работает.

Некоторое улучшение есть, в том смысле что скачалось не 1,5 Мб, а 9, но все равно не работает.

Dmitry122
рядовой
Сообщения: 10
Зарегистрирован: 2011-11-10 13:23:06

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение Dmitry122 » 2012-02-05 17:33:33

gardener писал(а):То есть проблема решается указанием вместо имени интерфейса значения адреса?

Пробую....
Нет, фишка именно в использовании 2 строк вместо одной.
в первой заворачиваем исходящий трафик, во второй- входящий.

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

ipfw add nat 123 ip from 192.168.0.0/16 to any
ipfw add nat 123 ip from any to ${NatIP}
Прописывание только IP вместо имени интерфейса у меня проблему тоже не решило.

gardener
рядовой
Сообщения: 18
Зарегистрирован: 2012-01-25 19:11:14

Re: Обрыв связи. Проблема с kernel nat Freebsd 8.2

Непрочитанное сообщение gardener » 2012-02-15 18:33:49

Оказалось что в моем случае НАТ ни при чем.
Просто у меня классический вариант FreeBSD8.2 + ipfw2 + nat + mpd5.
Еще раз внимательно пересобрал ядро, перепроверил rc.conf и mpd5.conf, отключил аппаратный подсчет сумм (-rxcsum) и TCP Segmentation Offload (-tso) на интерфейсе и все заработало.

P.S. Нашел интересные моменты, на которые мало где обращается внимание. Как нуб, я по крайней мере нигде до этого не встречал. Делюсь: http://bsdportal.ru/viewtopic.php?p=145 ... 96e#145464