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

Прошу помочь PF Freebsd

Хелп, зашел в тупик. Нужно поднять 2 ната с помощью pf на freebdsd 8.0. Нужно направить одну подсеть в один канал, другую подсеть в другой канал, и что б первая подсеть видела ресурсы второго канала. Для начала просто пытаюсь пустить одну сеть и один канал, другую в другой. PF подключал как модуль.

 

rc.conf:

ifconfig_em0="172.16.1.230/24"
ifconfig_em1="192.168.1.10/24"
ifconfig_em2="10.10.10.2/24"
defaultrouter="172.16.1.1"
hostname="gateway"
sshd_enable="YES"
named_enable="YES"
gateway_enable="YES"
pf_enable="YES"
pflog_enable="YES"

 

 

pf.conf:

int_if="em1"
ext_if="em0"
ext_if2="em2"
ext_gw="172.16.1.1"
ext_gw2="10.10.10.1"
table <nat_user1> persist {192.168.1.0/24}
table <nat_user2> persist {192.168.2.0/24}
nat on $ext_if inet from <nat_user1> to any -> ($ext_if)
nat on $ext_if2 inet from <nat_user2> to any -> ($ext_if2)
pass out route-to ($ext_if 172.16.1.1) inet from ($ext_if) to any
pass out route-to ($ext_if2 10.10.10.1) inet from ($ext_if2) to any

 

В чем грабли? Что не так?

Share this post


Link to post
Share on other sites

А где указано что сеть 192.168.1.0/24 должна пойти в em0 а 192.168.2.0/24 в em2 ? Судя по тому, что defaultrouter="172.16.1.1", то все пакеты поедут в em0 и правило

 

nat on $ext_if2 inet from <nat_user2> to any -> ($ext_if2)

 

не отработает никогда (кроме как, если трафик поедет в 172.16.1.0/24). сответсвтенно до pass out тоже не доедет....

 

Я бы, наверное, попробовал сделать 2 таблицы маршрутизации, с разными дефолтами и на входе пакеты распихал по ним, в зависимости от срц.. (для freebsd 8+)

Share this post


Link to post
Share on other sites

я это указывал с помощью макросов в строках:

nat on $ext_if inet from <nat_user1> to any -> ($ext_if)

nat on $ext_if2 inet from <nat_user2> to any -> ($ext_if2)

А почему оно его не отправит? Сколько манов перечитал то написано что должно работать. Сейчас оправляет сеть <nat_user1> через 172.16.1.1, а сеть <nat_user2> через 10.10.10.1 отправлять не хочет.

Share this post


Link to post
Share on other sites

pass in on $int_if2 route-to ($ext_if2 айпишнег_ext_if2) from <nat_user2> to any

Edited by Zohan

Share this post


Link to post
Share on other sites

MAD

 

Еще раз, кто трафик от сети nat_user2 заставит быть на "on $ext_if2" чтобы второе Ваше нат правило сработало. почему этот трафик должен попасть на em2, если в таблице маршрутизации она вываливает через em0?

 

Если же поменять на

 

nat on $ext_if inet from <nat_user2> to any -> ($ext_if2) тогда матчиться оно будет и запрос натиться будет.. ответ не будет, потому что он приедет через em2. нужно засатавить трафик от nat_user2 вылитать в мир через em2 ДО pf. Или как написал Zohan или через setfib входящего трафика. Что больше нравится.

Share this post


Link to post
Share on other sites

В нете были примеры с объяснением на рукосском языке, аж чуть ли не с 2009 года или раньше.

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