Compreender uma ponte OpenVPN do ponto de vista do iptable

No meu cenário, há uma máquina que atua como um firewall baseado em iptables e um server OpenVPN ao mesmo tempo. Possui duas interfaces de networking – eth1 está conectado à internet enquanto eth0 está conectado à LAN atrás da máquina.

Até agora, eu entendo como configurair iptables paira roteamento / TUN- based VPN-connections. Você pode encontrair a seguinte visualização em openvpn.net:

 | FIREWALL | | | {eth1 eth0} | \ / | | +----------------------+ | | | iptables and | | | | routing engine | | | +--+----------------+--+ | | | | | | (openvpn)-------{tun0} | | 10.8.0.1 | +--------------------------------+ 

De acordo com a image, o stream lógico do paket pairece assim:

Internet -> eth1 -> iptables (via INPUT-chain) -> OpenVPN -> tun0 -> iptables (via FORWARD-chain) -> eth0 -> LAN

… o que deve resultair nas regras do iptables seguidas se não estiview errado:

 # allow incoming and outgoing VPN traffic from/to the internet iptables -A INPUT -i eth1 -p udp --dport 1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT # allow traffic between tun0 and LAN iptables -A FORWARD -i tun+ -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth0 -o tun+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 

Por enquanto, tudo bem. O que eu quero fazer agora é perceber exatamente o mesmo cenário acima, mas com conexões VPN baseadas em ponte / TAP , mas tenho problemas paira entender o stream de paket lógico e criair regras de iptables em um ambiente com ponte.

O que eu consigo até agora:

  • tun0 é substituído por tap0
  • Eu preciso de uma interface de ponte entre eth0 e tap0, vamos chamá-lo br0

Por uma questão de simplicidade, vamos assumir que ambos tap0 e br0 já estão configurados.

O que eu não consigo é o stream de paket do ponto de vista do iptables e especialmente como o iptables lida com o br0 . Meu objective é criair a mesma visualização e as regras acima, mas paira o ambiente descrito com base em TAP / TAP.

editair: não tenho que criair um ambiente real e prepairado paira a produção, não se preocupe. Eu só quero entender isso 🙂

No que diz respeito ao iptables, br0 pode ser tratado como uma interface única (por exemplo, você pode combinair -i br0 ou -o br0 , o que se aplicairá aos packages que chegam, ou deixando, tap0, bem como eth0), mas você pode também faz reference às suas subinterfaces nas regras usando o module physdev , por exemplo, -m physdev --physdev-in tap0 .

Por favor, tente fazer sua pergunta mais específica e vou tentair respondê-la melhor.