Como posso MASQUERADE entre pontes vlan

Como posso MASQUERADE entre pontes vlan

Eu criei duas pontes VLAN em um sistema baseado em openwrt que possui uma única interface física.

*) 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)

Estou executando um servidor DHCP em uma máquina Ubuntu.

Estou tentando rotear entre a vlan para abrir a comunicação intervlan. Mas não consegui.

o que eu fiz foi

 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

E tentei atualizar /etc/config/firewall com regras de encaminhamento

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'

O que há de errado aqui? E sou iniciante nos conceitos de roteador.

Editar:

É assim que minha configuração se parece

             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       |
                    |____________________________|

Responder1

O roteador OpenWRT comum geralmente possui uma única interface Ethernet na CPU que é conectada internamente a um chip "smart switch". Outras portas do switch são disponibilizadas externamente como conectores, uma geralmente rotulada como "WAN" e outras como "LAN". O switch é configurado da seguinte maneira: o link CPU-switch é tronco (todas as VLANs são marcadas), uma porta ("WAN") é transformada em uma VLAN não marcada e as demais portas ("LAN") são transformadas em outras VLAN não marcadas. Esta é essencialmente a configuração padrão do "roteador no stick", onde o switch funciona como um simples extensor de porta para um roteador com baixa contagem de portas.

O resto se parece exatamente com o seu caso, o computador Linux que possui uma única interface Ethernet. Para complementar a configuração do switch, ele é dividido em subinterfaces VLAN. Então, essas subinterfaces são configuradas de acordo com sua função: a LAN é colocada em uma ponte com interface(s) WLAN, enquanto a WAN é configurada sem pontes.

Esta configuração se parece com a seguinte (eth0 é a única interface do roteador):

  • eth0 tem duas subinterfaces VLAN, .1 e .2
  • eth0.1 e wlan0 e wlan1 são combinados em br-lan que tem endereço IP atribuído e colocado na zona LAN
  • eth0.2 também tem endereço atribuído.

Caso você realmente precise de pontes, este é o caminho a seguir:

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'

Isso seria traduzido em: Duas subinterfaces VLAN serão criadas a partir de eth0, e duas pontes criadas, br-vlan20e br-vlan2. Cada subinterface VLAN participará de sua própria ponte. As pontes então têm IPs atribuídos.

Se você não precisar de uma ponte (por exemplo, se não estiver planejando adicionar outras interfaces), basta remover option type 'bridge'line da definição.

Cuidado, o dispositivo do outro lado do eth0link neste caso deve estar preparado para lidar com frames etiquetados!

A configuração do firewall para este caso pode ser assim:

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'

Observe como as opções zonedo ' networkno firewall correspondem aos interfacenomes do ' no networkarquivo de configuração. Os nomes das interfaces do Linux aparecem apenas uma vez no networkarquivo de configuração e em nenhum outro lugar. forwarding's srce dstopções, no entanto, correspondem às opções zonede ' .name

informação relacionada