У меня есть Linux под управлением Ubuntu 10.04 с тремя интерфейсами: eth0
, eth1
и eth2
. Я планирую использовать его в качестве маршрутизатора WAN для 4 общедоступных подсетей, назначенных двумя разными интернет-провайдерами. Вот подсети (я преобразовал подсети, назначенные провайдером, в частные подсети класса C):
ISP 1
WAN 192.168.0.176/30 gateway 192.168.0.177
LAN 192.168.3.192/29
ISP 2
WAN 192.168.6.208/30 gateway 192.168.6.209
LAN 192.168.9.216/29
/30
подсети сталкиваются с соответствующими интернет-провайдерами и /29
подсети обращены к моему коммутатору LAN.
Вот как IP-адреса назначаются интерфейсам:
LAN interface
eth0 192.168.3.193/29
eth0:0 192.168.9.217/29
ISP 1 interface
eth1 192.168.0.178/30
ISP 2 interface
eth2 192.168.6.210/30
Я хочу маршрутизировать трафик между соответствующими назначенными провайдерами /30
и /29
подсети отдельно. Если трафик идет от одного интернет-провайдера /30
сети, он должен быть направлен к этому интернет-провайдеру /29
сеть и наоборот. Я не против, если трафик исходил от одного провайдера /29
сеть, предназначенная для других интернет-провайдеров /29
сеть маршрутизируется в моем маршрутизаторе (без отправки одному интернет-провайдеру и возвращается по ссылке другого провайдера).
Моя цель - не покупать два роутера для двух интернет-провайдеров. Как я могу добиться этого, используя таблицы iproute2 и политику маршрутизации?
Сначала создайте таблицу маршрутизации для каждого провайдера (выполняется только один раз):
echo "11 isp1" >> /etc/iproute2/rt_tables
echo "12 isp2" >> /etc/iproute2/rt_tables
Затем добавьте в каждую таблицу маршрут по умолчанию, указывающий на соответствующий шлюз:
ip route add default via 192.168.0.177 table isp1
ip route add default via 192.168.6.209 table isp2
Затем добавьте правила для отправки трафика в эти таблицы на основе адреса источника:
ip rule add from 192.168.3.192/29 table isp1
ip rule add from 192.168.0.176/30 table isp1
ip rule add from 192.168.9.216/29 table isp2
ip rule add from 192.168.6.208/30 table isp2