Date: 23 Jul 2003
From: Lamer <lamer@e-inet.ru>
Subject: Policy routing в FreeBSD с помощью ipfw.
Статическая маршрутизация по двум исходящим каналам в зависимости от ip-адреса источника.
Итак, имеем следующие интерфейсы.
rl0 (1.1.1.2/30) - смотрит на одного провайдера, у провайдера интерфейсный ip-адрес 1.1.1.1/30
rl1 (2.2.2.2/30) - смотрит на другого провайдера, у провайдера интерфейсный ip-адрес 2.2.2.1/30
rl2 (3.3.3.1/24, alias 4.4.4.1/24) - смотрит на клиентов,
Пользователи из сети 3.3.3.0/24 идут в инет через первого провайдера,
а пользователи из сети 4.4.4.0/24 идут в инет через второго провайдера.
#
# /etc/rc.firewall
#
ipfw -f flush
# эта часть скрипта для того, чтобы пользователи могли
#"ходить" друг к другу напрямую.
nets="
#список ваших сетей
1.1.1.0/30
2.2.2.0/30
3.3.3.0/24
4.4.4.0/24
"
rule_num=200
for net in $nets
do
for net1 in $nets
do
rule_num=$(($rule_num+1))
ipfw add $rule_num allow ip from $net to $net1
done
done
#самая нужна часть:
ipfw add 1000 fwd 1.1.1.1 ip from 3.3.3.0/24 to any
ipfw add 1005 fwd 2.2.2.1 ip from 4.4.4.0/24 to any