Я пытаюсь настроить работающее соединение между моей локальной сетью и Интернетом. Сначала я настроил мост (br0, имеет IP-адрес, которого нет у других интерфейсов) между eth0 (LAN) и eth1 (Internet), и создал правило nat в iptables для маскировки исходного IP-адреса локальных IP-адресов в LAN. Все работает отлично, и я могу получить доступ к Интернету из подсети 192.168.1.0.
Теперь я хочу создать два vlan: 100 и 200. Я пытался использовать vconfig для создания eth0.100 и eth0.200, но не могу понять, как подключить их к интернету. Пакеты из моей локальной сети приходили с тегом vlan Id 100/200, и трафик проходил через eth1. Но как мне заставить пакеты вернуться на правильный eth0.x?
Я думал о создании двух мостов, одного для vlan 100 и одного для 200, и подключить их к eth1. Но опять же, как мне направить пакеты, полученные из интернета, на нужный мост?
Текущая настройка:
eth0 <--> br0 <--> eth1
предложенный:
1.
eth0.100 <--> br100 <--> eth1
eth0.200 <--> br200 <--> eth1
2.
eth0.100 и eth0.200 <--> br0 <--> eth1
решение1
Вам необходимо направить трафик из локальной сети в глобальную сеть.
Это делается маршрутизатором, а не мостом, поэтому это должно выглядеть так:
eth0 (192.168.1.0/24) <==> eth1 (Общедоступный Интернет)
Для vlan 100 и 200, как направить трафик в нужную VLAN? Создав разные подсети для каждой VLAN, чтобы ваш хост знал, какая vlan является правильным выходным интерфейсом, теперь это должно выглядеть так:
eth0.100 (192.168.100.0/24) <==> eth1 (Общедоступный Интернет)
eth0.200 (192.168.200.0/24) <==> eth1 (Общедоступный Интернет)
Запомните NAT для обоих случаев:
iptables -I POSTROUTING -t nat -o eth1 -j МАСКАРАД