Страница 1 из 1

Два канала и ограниченные умственные возможности.

Добавлено: 2010-01-10 20:45:05
chocopie
Доброго времени суток. Суть проблемы в следующем.
Имеется FreeBSD (7.1): 172.19.48.239
Mpd 5.1 держит виртуальную подсеть 172.26.159.0/24.
Два интерфейса в интернет : ng0 ng1 (оба pptp). Default route стоит на ng1.
Коннекты по VPN принимаются через rl0. (подсеть 172.19.48.0/24)
Брандмауэр: pf.
Задача: Выпускать клиентов в интернет, при этом направлять HTTP, ICMP, POP3, SMTP ну и некоторые другие протоколы в ng0, а все остальное в ng1(для этого и маршрут дефолтным стоит).
Ход работы:

pf.conf:

Код: Выделить всё

nat on ng0 from 172.26.159.0/24 to any -> ng0
nat on ng1 from 172.26.159.0/24 to any -> ng1
pass out route-to (ng0 адрес шлюза?) proto tcp from ng1 to any port 80
Вот как раз с выпусканием, а также, как сказано в руководстве pf, с грамотным впусканием проблемы. Не могу схватить суть перенаправления, в каком месте отфильтровывать по порту, а также, можно ли обойтись без указания шлюза при перенаправлении (т.к. шлюз при каждом подключении разный выдается).

Re: Два канала и ограниченные умственные возможности.

Добавлено: 2010-02-28 20:16:48
Alex Keda
юзайте ipfw =)

Re: Два канала и ограниченные умственные возможности.

Добавлено: 2010-03-01 0:21:40
_Гагарин
тут как-то недавно TITANius бился над идеей роуте ту
добились чтобы вообще получилось использовать роуте ту, завернув пакеты хотя бы в один интерфейс
defaultrouter закомменчен

Код: Выделить всё

int_if="stge0"
ext_if1="rl0"
ext_gw1 = "192.168.2.111"

#  правила nat для исходящих соединений
nat on $ext_if1 from any to any -> ($ext_if1)

block all

#  пропускаем все исходящие пакеты на внутреннем итерфейсе
pass out on $int_if from any to any

#  всё из внутренней сети должно идти через шлюз $ext_gw1
pass in on $int_if route-to ($ext_if1 $ext_gw1) from any to any

pass out on $ext_if1 from any to any
идея в принципе у тебя та же
то есть на ВНУТРЕННЕМ интерфейсе делаем роуте ту
судя по ману:
route-to
The route-to option routes the packet to the specified interface with an optional address for the
next hop. When a route-to rule creates state, only packets that pass in the same direction as the
filter rule specifies will be routed in this way. Packets passing in the opposite direction (replies) are
not affected and are routed normally.
адрес шлюза указывать не обязательно, тогда предположительные правила где-то такие:
defaultrouter в rc.conf закомменчен

Код: Выделить всё

int_if="ВнутреннийИнтерфейс"

...

nat on ng0 from 172.26.159.0/24 to any -> ng0
nat on ng1 from 172.26.159.0/24 to any -> ng1

...

pass in quick on $int_if route-to ng0 from any to any port { http pop3 smtp }
pass in quick on $int_if inet proto icmp route-to ng0 from any to any

pass in on $int_if route-to ng0 from any to any

pass out on ng0 from any to any
pass out on ng1 from any to any