ipfw nat

Обсуждаем OS FreeBSD и сервисы на ней.

ipfw nat

Сообщение Alexam » 11 ноя 2013, 10:38

Необходимо перейти от ipnat к ipfw nat, тк тормоза с открытием страниц. Ipnat тюнинговать пробовал - сервер падает :( Плюнул, решил ipfw nat сделать, вроде он лучше в любом случае. Пытаюсь ipfw_nat запустить на 3-м уже компе и всё впустую :( Наверно, что-то упускаю, но не пойму что - перекопал уже всё, что мог.
FreeBSD 8.3 и 7.1 Подключено ipfw_nat, dummynet, ipdivert, libalias. правда через kldload.
Сейчас пытаюсь на простейших правилах запустить - вроде они должны работать:
00050 38204382 8011547595 allow ip from me to any
00050 40604794 16623011331 allow ip from any to me
00051 28356 15522550 allow ip from any to any via em1
00052 2206 125970 nat 1 ip from any to any via em0
00058 1713 111050 allow ip from any to any

По виду через нат что-то идёт, но результата 0. С сервера выход есть в инет есть, через ipnat работает. Подскажите, куда копать?
Ещё вопрос, насколько в данном случае необходимо добавление IPFIREWALL_DEFAULT_TO_ACCEPT?
Alexam
новичок
 
Сообщения: 25
Зарегистрирован: 01 мар 2011, 14:22

Re: ipfw nat

Сообщение root » 12 ноя 2013, 07:29

Alexam писал(а):вроде они должны работать

Если у тя one_pass в 1, то работать точно не будет, т.к. "me" в 50-м правиле означает все ипы сервера и до 52 дело не дойдет.

Alexam писал(а):Ещё вопрос, насколько в данном случае необходимо добавление IPFIREWALL_DEFAULT_TO_ACCEPT?

это всего лишь автоматом добавляет последним правилом allow ip from any to any и ничего более

Запости выводы результатов команд:
Код: Выделить всё
# kldstat

Код: Выделить всё
# sysctl net.inet.ip.forwarding

Код: Выделить всё
# sysctl net.inet.ip.fw.one_pass

Код: Выделить всё
# ipfw nat 1 show config
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: ipfw nat

Сообщение Alexam » 12 ноя 2013, 08:55

root писал(а):Если у тя one_pass в 1, то работать точно не будет, т.к. "me" в 50-м правиле означает все ипы сервера и до 52 дело не дойдет.

Пишут, что для такого варианта 1 должно работать. Но я менял туда-сюда.

root писал(а):Запости выводы результатов команд:.

# kldstat
1 10 0xc0400000 a3ee9c kernel
2 1 0xc0e3f000 6a45c acpi.ko
3 1 0xc785c000 22000 linux.ko
4 1 0xcd4c2000 4000 ipfw_nat.ko
5 1 0xcd4c6000 9000 libalias.ko

Я так понимаю, что то, что загружено в ядре при сборке при kldstat не выводится?

Код: Выделить всё
# sysctl net.inet.ip.forwarding=1

Код: Выделить всё
# sysctl net.inet.ip.fw.one_pass=0

Код: Выделить всё
# ipfw nat 1 show config
ipfw nat 1 config if em0 log same_ports reset
Alexam
новичок
 
Сообщения: 25
Зарегистрирован: 01 мар 2011, 14:22

Re: ipfw nat

Сообщение root » 13 ноя 2013, 07:04

Alexam писал(а):Пишут, что для такого варианта 1 должно работать. Но я менял туда-сюда.

не знаю что пишут и что ты куда менял, я вижу то что ты запостил
у тя one_pass в нуле, а значит пакет должен проваливаться ниже
но правила у тя написаны и расположены идеологически не верно. сначала правила под локалхост, потом под nat потом уже allow должны идти
расставь правила, ведь ipfw их рассматривает по порядку и сверху вниз.
так же ты можешь добавить к правилам опцию log и посмотреть что (какие пакеты) попадают под каждое из этих правил.

я так понимаю что em0 это аплинк ифейс, а em1 это даунлинк. так ?
сколько ипов висит на em0 ?

Alexam писал(а):что загружено в ядре при сборке при kldstat не выводится?

да, т.к.:
Код: Выделить всё
# man kldstat

Код: Выделить всё
     kldstat -- display status of dynamic kernel linker


На лисяре есть хорошая подробная статья: Подробное руководство по ipfw nat
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: ipfw nat

Сообщение Alexam » 13 ноя 2013, 13:47

На интерфейсах по одному ИПу, а эту статью я вдоль и поперёк уже. Как раз там для самого простого варианта и указано
Код: Выделить всё
net.inet.ip.fw.one_pass=1
, но не суть, так как менять-то пробовал.
Ифейсы да em0 - аплинк, em1 - даунлинк. По идеологии сейчас переварю :) , но локалхост у меня прописан первым правилом - я его просто при копировании сюда упустил.
Alexam
новичок
 
Сообщения: 25
Зарегистрирован: 01 мар 2011, 14:22

Re: ipfw nat

Сообщение Alexam » 13 ноя 2013, 14:22

Заработало в таком варианте:
Код: Выделить всё
00045   7541281  2581409673 allow ip from any to any via lo0
00047   1535777   152858788 nat 1 ip from any to any via em0
00050 101676619 16795290251 allow ip from me to any
00050 115303487 34636249466 allow ip from any to me
00051    203700    43809040 allow ip from any to any via em1

sysctl net.inet.ip.fw.one_pass=1

работает и при net.inet.ip.fw.one_pass=0, если за 51-м правилом следующим разрешить всё.
Спасибо, большое! Я понял, что всё-таки не разобрался, как бегают пакеты через nat :( .
Alexam
новичок
 
Сообщения: 25
Зарегистрирован: 01 мар 2011, 14:22

Re: ipfw nat

Сообщение root » 14 ноя 2013, 08:16

Alexam писал(а):Заработало в таком варианте

Alexam писал(а):работает и при net.inet.ip.fw.one_pass=0

ну не удивительно, теперь правила стоят логически верно

я б ещё рекомендовал юзать не:
Код: Выделить всё
ipfw nat 1 config if em0 log same_ports reset

при настройке NAT`а указывать конкретный IP для NAT`а, чтобы в дальнейшем избежать непоняток, когда на ифейсе появится второй IP.
а так же не использовать "общее" правило аля:
Код: Выделить всё
nat 1 ip from any to any via em0

а заворачивать в NAT конкретные серые подсети
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: ipfw nat

Сообщение Alexam » 14 ноя 2013, 14:03

У меня там 2 подсети, поэтому, чтобы не мудрить, nat включен с unreg_only. Другой IP там, даже если поднимется, деваться пакетам через него дальше там вроде некуда. Но всё равно спасибо за советы!
Alexam
новичок
 
Сообщения: 25
Зарегистрирован: 01 мар 2011, 14:22


Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 22

cron