freebsd 7.0 + pf в ядре
2 канала в инет лимитный (isp) и безлимитый (adsl).
adsl поднимается как ppp -ddial adsl
pf.conf:
Код: Выделить всё
# первый провайдер
isp_if="rl0"
isp_gw="10.10.10.1"
# второй провайдер
adsl_if="tun0"
adsl_gw="78.x.x.1" # он же дефлотовый маршрут
# локалка
lan_if="rl1"
lan_ip="192.168.1"
# внутренние ресурсы провайдера isp
table <isp_nets> { 88.x.x.x/16, 81.x.x.x/16 }
# юзеры, которые будут ходить через isp
table <isp_users> { $lan_ip.2, $lan_ip.3, $lan_ip.4, $lan_ip.5 }
# юзеры, которые будут ходить через adsl
table <adsl_users> { $lan_ip.100, $lan_ip.101 }
set block-policy drop
set skip on lo0
scrub in
nat on $adsl_if from $lan_if:network to <isp_nets> -> ($isp_if)
nat on $adsl_if from <isp_users> to !$lan_if:network -> ($isp_if)
nat on $adsl_if from $lan_if:network to !$lan_if:network -> ($adsl_if)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $lan_if proto tcp from $lan_if:network to !$lan_if:network port 21 -> 127.0.0.1 port 8021
block log all
anchor "ftp-proxy/*"
pass out quick on $adsl_if route-to ($isp_if $isp_gw) from $isp_if to any
pass out on $adsl_if
pass out on $isp_if
pass in on $lan_if proto tcp from $lan_if:network to $lan_if port 22
pass in on $lan_if from { <adsl_users>,<isp_users> } to !$lan_if:network
Код: Выделить всё
# провайдер
isp_if="rl0"
isp_gw="10.10.10.1"
# локалка
lan_if="rl1"
lan_ip="192.168.1"
# юзеры, которым разрешен инет
table <isp_users> { $lan_ip.2, $lan_ip.3, $lan_ip.4, $lan_ip.5, $lan_ip.100, $lan_ip.101 }
set block-policy drop
set skip on lo0
scrub in
nat on $isp_if from $lan_if:network to !$lan_if:network -> ($isp_if)
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $lan_if proto tcp from $lan_if:network to !$lan_if:network port 21 -> 127.0.0.1 port 8021
block log all
anchor "ftp-proxy/*"
pass out on $isp_if
pass in on $lan_if proto tcp from $lan_if:network to $lan_if port 22
pass in on $lan_if from <users> to !$lan_if:network
Как сделать, чтоб вместе они работали как надо?