Jump to content
Калькуляторы

Подскажите с правилами ipfw

Добрый день!

table 100 - храним IP адреса, которым можно ходить в интернет.

Как правильно добавить правило:

allow ip from table(100) to any
allow ip from any to table(100)

чтобы ipfw проверил таблицу 100 и если его IP присутсвует в таблице то делал skipto НАТ правилом 500.

 

Если IPа нет в таблице 100 то посылал бы нафиг.

ipfw add 500 nat tablearg ip from table(15) to any out xmit igb0
ipfw add 550 nat tablearg ip from any to table(10) in recv igb0

 

Пробовал нечто вида:

ipfw add 50 skipto 51 ip from table(100) to any
ipfw add 51 skipto 500 ip from any to table(100)

не получается ;(

 

если поставить правила перед NAT и sysctl -w net.inet.ip.fw.one_pass=0 тоже не получается

Edited by kirush

Share this post


Link to post
Share on other sites

вместо

ipfw add 500 nat tablearg ip from table(15) to any out xmit igb0
ipfw add 550 nat tablearg ip from any to table(10) in recv igb0

 

сделайте:

ipfw add 500 nat ip from table(100) to any out xmit igb0
ipfw add 550 nat ip from any to me in recv igb0

Edited by vlad11

Share this post


Link to post
Share on other sites

Пробовал нечто вида:

ipfw add 50 skipto 51 ip from table(100) to any

ipfw add 51 skipto 500 ip from any to table(100)

 

не получается ;(

"skipto 51" замените на "skipto 500", иначе получается бессмыслица.

Share this post


Link to post
Share on other sites

Немного изменил схему:

Все также в таблице 100 - клиенты которым можно ходить в интернет:

${fwcmd} table 10 add реальный_ip/32 1
${fwcmd} table 10 add реальный_ip/32 2
${fwcmd} table 10 add реальный_ip/32 3
${fwcmd} table 10 add реальный_ip/32 4
${fwcmd} table 10 add реальный_ip/32 5
${fwcmd} table 10 add реальный_ip/32 6

${fwcmd} table 15 add 172.16.0.0/22 1
${fwcmd} table 15 add 172.16.4.0/22 2
${fwcmd} table 15 add 172.16.8.0/22 3
${fwcmd} table 15 add 172.16.12.0/22 4
${fwcmd} table 15 add 172.16.16.0/22 5
${fwcmd} table 15 add 172.16.20.0/22 6

${fwcmd} nat 1 config ip реальный_ip/32 same_ports
${fwcmd} nat 2 config ip реальный_ip/32 same_ports
${fwcmd} nat 3 config ip реальный_ip/32 same_ports
${fwcmd} nat 4 config ip реальный_ip/32 same_ports
${fwcmd} nat 5 config ip реальный_ip/32 same_ports
${fwcmd} nat 6 config ip реальный_ip/32 same_ports

Далее:

 

${fwcmd}        add     300     skipto 500 ip from table\(100\) to any out xmit igb0
${fwcmd}        add     500      nat tablearg ip from table\(15\) to any out xmit igb0
${fwcmd}        add     500      nat tablearg ip from any to tab\le\(10\) in recv igb0
${fwcmd}        add     550     allow ip from any to table\(100\) in recv igb0

Счетчики выглядят так:

00300  417  22278 skipto 500 ip from table(100) to any out xmit igb0
00500 2328 142508 nat tablearg ip from table(100) to any out xmit igb0
00500   71   8208 nat tablearg ip from any to table(10) in recv igb0
00550    0      0  allow ip from any to table(100) in recv igb0

трафик на клиента не идет.

Edited by kirush

Share this post


Link to post
Share on other sites

Естественно не пойдёт, блин - вам же уже написали, замените 550 правило на "allow ip from any to me in recv igb0". "me", естественно, в случае если NAT-адреса на интерфейсе альясами, а не в blackhole смаршрутизированы.

Share this post


Link to post
Share on other sites

Прошу прощения проморгал.

Исправил, но толку мало

00300  119   8318 skipto 500 ip from table(100) to any out xmit igb0
00500  153  13593 nat tablearg ip from table(15) to any out xmit igb0
00500  236  21439 nat tablearg ip from any to table(10) in recv igb0
00550    0      0 allow ip from any to me in recv igb0

NAT адреса навешаны алиасами.

Edited by kirush

Share this post


Link to post
Share on other sites

Хмм... А one_pass случайно не включен?

 

${fwcmd} add 500 nat tablearg ip from any to tab\le\(10\) in recv igb0

Должно быть так:

${fwcmd}        add     510      nat ip from any to me in via igb0
${fwcmd}        add     520      allow all from table\(10\) or table\(15\) to any out via igb0

Edited by Deac

Share this post


Link to post
Share on other sites

пробовал и с включеным и выключенным.

 

По поводу совета Ваших правил немного не понял, так как у меня трнаслируется table(15) в пул реальных IP адресов table(10). Логически у меня все написано верно.

Share this post


Link to post
Share on other sites

пробовал и с включеным и выключенным.

Использование NAT требует обязательного отключение one_pass.

 

По поводу совета Ваших правил немного не понял, так как у меня трнаслируется table(15) в пул реальных IP адресов table(10). Логически у меня все написано верно.

При трансляции изнутри - наружу указание tablearg имеет смысл, при обратной трансляции это бессмысленно, если конечно это не попытка binat.

Мало NAT-ить, надо ещё и разрешить прохождение.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this