Добрый день всем.
Вопрос таков:
eth0:
vlan10 (внешний статический ип - провайдер1)
vlan11 (внешний статический ип - провайдер2)
eth1:
vlan100 (локалка 192.168.0.0 255.255.255.0)
vlan101 (локалка 192.168.1.0 255.255.255.0)
Суть в том что бы разрулить внутренние локалки по разным интернет каналам, допустим вот так:
--------------------
|интернет| Сеть |
--------------------
| vlan10 | vlan100 |
| vlan11 | vlan101 |
--------------------
#/bin/sh
# Интерфейс, подключенный к провайдеру:
IF_OUT_VLAN100="vlan10"
IF_OUT_VLAN101="vlan10"
# Сбрасываем все правила во всех таблицах:
iptables -F
iptables -F -t nat
iptables -F -t mangle
# Игнорировать входящие,
# Разрешить исходящие,
# Игнорировать пересыламые (запрещать):
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# Разрешаем входящие в ответ на исходящие:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Разрешаем весь трафик на loopback-интерфейсе:
iptables -A INPUT -i lo -j ACCEPT
#--------|
#VLAN100:|
#--------|
# Разрешаем пересылку пакетов из этого влана наружу:
iptables -A FORWARD -i vlan100 -o ${IF_OUT_VLAN100} -s 192.168.0.0/255.255.255.0 -j ACCEPT
# Разрешаем пересылку пакетов снаружи в этот влан, но только в ответ на исходящие запросы:
iptables -A FORWARD -i ${IF_OUT_VLAN100} -o vlan100 -d 192.168.0.0/255.255.255.0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# NAT для подсети из этого влана:
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE -o ${IF_OUT_VLAN100}
# Разрешаем использование нашего DNS из этого влана:
iptables -A INPUT -m udp -p udp --dport 53 -s 192.168.0.0/255.255.255.0 -i vlan100 -j ACCEPT
#--------|
#VLAN101:|
#--------|
iptables -A FORWARD -i vlan101 -o ${IF_OUT_VLAN101} -s 192.168.1.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${IF_OUT_VLAN101} -o vlan101 -d 192.168.1.0/255.255.255.0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j MASQUERADE -o ${IF_OUT_VLAN101}
iptables -A INPUT -m udp -p udp --dport 53 -s 192.168.1.0/255.255.255.0 -i vlan101 -j ACCEPT
В данном случае у меня стоит IF_OUT_VLAN101=«vlan10», если я ставлю IF_OUT_VLAN101=«vlan11» - доступ в интернет пропадает через VLAN101. Но если ставлю IF_OUT_VLAN101=«vlan11» и отключаю vlan10 down - то vlan101 сразу начинает работать через шлюз vlan11. Я полагаю из-за ip route - не настроивал, по дефолту выглядет так:
# ip route
194.190.203.16/28 dev vlan10 proto kernel scope link src 194.190.203.21
62.100.133.240/28 dev vlan11 proto kernel scope link src 62.100.133.245
192.168.0.0/24 dev vlan100 proto kernel scope link src 192.168.0.1
192.168.1.0/24 dev vlan101 proto kernel scope link src 192.168.1.1
default via 194.190.203.17 dev vlan10 metric 100
default via 62.100.133.241 dev vlan11 metric 100
Подскажите или посоветуйте как быть, куда копать? Заранее спасибки.