LINUX.ORG.RU
ФорумAdmin

Маршрутизация между Vlan


0

1

Добрый день всем.

Вопрос таков:
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 |
--------------------
В данном случае настроил iptables, но все выходят в интернет через 1 канал.

#/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

Подскажите или посоветуйте как быть, куда копать? Заранее спасибки.

Делаете две роут таблицы с одним дефолтом в каждой, в сторону разных провайдеров. Заворачиваете трафик от влан100 и влан101 , каждый в свою роуттаблицу (ip rule). Делаете нат на каждом интерфейсе в сторону провайдера (это вы уже сделали).

ventilator ★★★ ()
Ответ на: комментарий от ventilator

Создал запись на таблицы 2 провайдеров:

echo 19 PT >> /etc/iproute2/rt_tables
echo 23 BL >> /etc/iproute2/rt_tables

Добавил в таблици default маршруты по провайдерам:

ip route add default via 194.190.203.17 table PT
ip route add default via 62.100.133.241 table BL

Добавил правило для маршрутизации по источнику

ip rule add from 192.168.10.0/24 table PT

Правило для подсети:

ip rule add from 192.168.0.0/24 table PT
Итог - интернет в посети 192.168.10.0/24 не работает. Где-то накосячил или не дописал?

vlan101 пока отключил.

# ip rule
0:      from all lookup local
32763:  from 192.168.0.0/24 lookup PT
32766:  from all lookup main
32767:  from all lookup default

# 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

# ip route list table BL
default via 62.100.133.241 dev vlan11

# ip route list table PT
default via 194.190.203.17 dev vlan10

ReaLisT ()
Ответ на: комментарий от ventilator

Так и не решил. При добавлении:

 ip rule add from 192.168.0.0/24 table PT 
перестает пинговаться с локальных машин интерфейс vlan100 ip 192.168.0.1, а если при таком раскладе пинговать с сервера локальные машины, то пингуются.

ReaLisT ()
Ответ на: комментарий от ReaLisT

Исключил из таблицы PT интерфейс ip vlan100 - все заработало, подключил Vlan101 к таблице BL с теми же условиями - работает! Спасибо большое ventilator!

ReaLisT ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.