Jump to content

Recommended Posts

Posted

Добрый день!

Имею такую схему сети:

myseti.jpg

На бордере написано - route 91.123.456.0/22 via 192.168.1.2

Нужно с NAS выйти в инет. Правила фаервола:

ipfw add 10 allow ip from any to any via igb0
ipfw add 30 allow ip from not me to any via igb1
ipfw nat 10000 config ip 91.123.456.1 same_ports unreg_only deny_in log
ipfw add 1000 nat 10000 log logamount 10000 ip from me to not 192.168.1.0/30
ipfw add 65534 allow ip from any to any

Пинг на любой адрес ходит прекрасно. Соединение не устанавливается.

telnet mail.ru 80 - около минуты пытается соединиться, при этом tcpdump на border пишет такое:

17:23:28.273826 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 53477024 ecr 0], length 0
17:23:31.272969 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 53480024 ecr 0], length 0
17:23:34.472872 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 53483224 ecr 0], length 0
17:23:37.672901 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,sackOK,eol], length 0
17:23:37.711833 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:37.712002 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:23:40.872802 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,sackOK,eol], length 0
17:23:40.911528 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:40.911654 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:23:41.383801 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:41.383882 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:23:44.072830 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,sackOK,eol], length 0
17:23:44.111819 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:44.111932 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:23:47.383666 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:47.383793 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:23:50.272625 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,sackOK,eol], length 0
17:23:50.311353 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:50.311478 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:23:59.383811 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:23:59.383866 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0
17:24:02.472458 IP 91.123.456.1.17396 > 94.100.191.204.80: Flags [s], seq 1903326407, win 65535, options [mss 1460,sackOK,eol], length 0
17:24:02.511451 IP 94.100.191.204.80 > 91.123.456.1.17396: Flags [s.], seq 1860930119, ack 1903326408, win 5640, options [mss 1410,nop,nop,sackOK], length 0
17:24:02.511559 IP 91.123.456.1.63478 > 94.100.191.204.80: Flags [R], seq 1903326408, win 0, length 0

 

Помогите разобраться, где я напортачил.

Posted (edited)

Какую еще информацию нужно предоставить? Это все, что я наконфигурил.

 

Ничего не понятно, обратка в нат не завернута ?

Насколько я понимаю, при исходящем пакете в нате создается динамическое правило, которое и обслужит обратку. Edited by DemonS
Posted (edited)

А Вы айпишник спецом меняли в кусках конфига и лога, или у Вас там действительно 91.123.456.1?

Там белый ИП-шник. Клиентам предполагается раздавать белые адреса.

Поменял средние два октета для маскировки.

 

Доп. инфо... Посмотрел через wireshark пакеты, первые три пакета на установку связи идут с битой контрольной суммой. Что может на это повлиять?

Попробовал натить за другой внешний адрес (91.123.456.2) - картина такая же.

 

Мда... Проблема оказалась в карточках интеловских. Переконфигурил вместо igb1 на nfe0, встроенную, и трафик забегал как надо...

 

Нашел статью, http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/, где и написано про несовместимлсть апартного ускорения карточек с libalias.

- Библиотека libalias, на которой основан ipfw nat, плохо дружит с функциями аппаратного ускорения расчета контрольных сумм и
управления потоками, которые доступны на некотроых сетевых адаптерах. Рекомендуется выключать tcp segmentation offloading (TSO),
а так же rxcsum на том сетевом адаптере где работает нат (ifconfig em0 -rxcsum -tso).

 

Всем спасибо за участие.

Edited by DemonS
Posted

Вряд ли дело в картах. Сам на igb чего только не настраивал, и НАТ во все красе. Так что что-то еще не так было...

Posted (edited)

ipfw add 10 allow ip from any to any via igb0
ipfw add 30 allow ip from not me to any via igb1
ipfw nat 10000 config ip 91.123.456.1 same_ports unreg_only deny_in log
ipfw add 1000 nat 10000 log logamount 10000 ip from me to not 192.168.1.0/30
ipfw add 65534 allow ip from any to any

Помогите разобраться, где я напортачил.

 

Ошибка в правилах 1000 и 30

И фантастический адрес 91.123.456.1

Вам нужно правильно описать вход и исход через nat

например:

выключить правила 30 и 1000
table(1) - список сетей, которые нужно натить
table(2) = table(1) + блок ваших реальных адресов
iface=igb1
nat_ip=91.123.456.1
ipfw add 1000 nat 10000 ip from  table(1) to not table(2) out via $iface 
ipfw add 1010 nat 10000 ip from any to ${nat_ip} in via $iface

Edited by vlad11

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.