
Я создал два моста VLAN в системе на базе OpenWRT с одним физическим интерфейсом.
*) eth0->lan->br-lan
*) br-lan->br-lan.2(VLAN INTF)->br-vlan2(BRIDGE INTF)
*) br-lan->br-lan.20(VLAN INTF)->br-vlan20(BRIDGE INTF)
Я запускаю DHCP-сервер на машине с Ubuntu.
Я пытаюсь маршрутизировать между vlan, чтобы открыть межvlan-коммуникацию. Но у меня не получилось.
то, что я сделал, это
iptables -t nat -I POSTROUTING -o br-vlan2 -j MASQUERADE
iptables -A FORWARD -i br-vlan2 -o br-vlan20 -mstate --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br-vlan20 -o br-vlan2 -j
ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
И я попробовал обновить /etc/config/firewall с правилами пересылки
config zone
option name 'vlan2'
list network 'br-lan.2'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config zone
option name 'vlan20'
list network 'br-lan.20'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config forwarding
option src 'br-lan.2'
option dest 'br-lan.20'
config forwarding
option src 'br-lan.20'
option dest 'br-lan.2'
Что здесь не так? А я новичок в концепциях маршрутизаторов.
Редактировать:
Вот как выглядит моя установка
IP: 192.168.2.10 192.168.20.10
GW: 192.168.2.1 192.168.20.1
|client 1| |client 2|
^ ^
____|______________|________
| br-vlan2 | br-vlan20 |
_____________ |192.168.2.2 | 192.168.20.2 |
| | |_____________|______________|
| 192.168.1.1 | | |br-lan IP: 192.168.1.2|
| router |---->|eth0| GW: 192.168.1.1 |
|_____________| |____|_______________________|
| x86 machine as AP |
|____________________________|
решение1
Обычный маршрутизатор OpenWRT обычно имеет один интерфейс Ethernet в ЦП, который внутренне подключен к чипу «умного коммутатора». Другие порты коммутатора доступны снаружи как разъемы, один обычно помечен как «WAN», а другие как «LAN». Коммутатор настраивается следующим образом: соединение ЦП-коммутатор является магистральным (все VLAN помечены), один порт («WAN») делается одним VLAN без тега, а остальные порты («LAN») делаются другими VLAN без тега. По сути, это стандартная настройка «маршрутизатора на палочке», где коммутатор работает как простой расширитель портов для маршрутизатора с малым количеством портов.
Остальное выглядит точно так же, как в вашем случае, компьютер Linux с одним интерфейсом Ethernet. Чтобы дополнить настройку коммутатора, он разделен на подынтерфейсы VLAN. Затем эти подынтерфейсы настраиваются в соответствии с их функцией: LAN помещается в мост с интерфейсом(ами) WLAN, в то время как WAN настраивается без мостов.
Эта настройка выглядит следующим образом (eth0 — единственный интерфейс маршрутизатора):
- eth0 имеет два подинтерфейса VLAN, .1 и .2
- eth0.1, wlan0 и wlan1 объединены в br-lan, которому назначен IP-адрес и который помещен в зону LAN.
- eth0.2 также имеет назначенный адрес.
Если вам действительно нужны мосты, вот способ:
config interface 'vlan20'
option ifname 'eth0.20'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.20.1'
config interface 'vlan2'
option ifname 'eth0.2'
option type 'bridge'
option proto 'static'
option netmask '255.255.255.0'
option ipaddr '192.168.2.1'
Это будет переведено в: Два подынтерфейса VLAN будут созданы из eth0
, и два моста созданы, br-vlan20
и br-vlan2
. Каждый подынтерфейс VLAN будет участвовать в своем собственном мосте. Затем мостам назначаются IP-адреса.
Если вам не нужен мост (например, вы не планируете добавлять другие интерфейсы), просто удалите option type 'bridge'
строку из определения.
Будьте осторожны, в этом случае устройство на другой стороне соединения eth0
должно быть готово работать с маркированными кадрами!
Настройка брандмауэра для этого случая может выглядеть следующим образом:
config zone
option name 'zone20'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option network 'vlan20'
config zone
option name 'zone2'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
option masq '1'
option network 'vlan2'
config forwarding
option src 'zone20'
option dest 'zone2'
config forwarding
option src 'zone2'
option dest 'zone20'
Обратите внимание, как параметры zone
' network
в брандмауэре соответствуют interface
именам ' в network
файле конфигурации. Имена интерфейсов Linux появляются только один раз в network
файле конфигурации и больше нигде. Однако параметры forwarding
' src
и dst
соответствуют параметрам zone
' name
.