Jump to content

Recommended Posts

Posted (edited)

Добрый день!

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
Posted (edited)

вместо

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
Posted

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

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", иначе получается бессмыслица.

Posted (edited)

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

Все также в таблице 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
Posted

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

Posted (edited)

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

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

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
Posted (edited)

Хмм... А 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
Posted

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

 

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

Posted

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

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

 

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

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

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

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 и с Политикой конфиденциальности.