Перейти к содержимому
Калькуляторы

Подскажите с правилами 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 тоже не получается

Изменено пользователем kirush

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вместо

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

Изменено пользователем vlad11

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Изменено пользователем kirush

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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 адреса навешаны алиасами.

Изменено пользователем kirush

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем Deac

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Использование 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.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.