Entendendo uma ponte OpenVPN do ponto de vista do iptable

1

No meu cenário, existe uma máquina que atua como um firewall baseado no iptables e um servidor OpenVPN ao mesmo tempo. Ele tem duas interfaces de rede - eth1 está conectado à Internet, enquanto eth0 está conectado à LAN atrás da máquina.

Até agora, eu entendo como configurar o iptables para conexões VPN baseadas em roteamento / TUN . Você pode encontrar a seguinte visualização no openvpn.net:

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

De acordo com a imagem, o fluxo do pacote lógico é assim:

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

... o que deve resultar nas seguintes regras de iptables se eu não estiver 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

Até agora, tudo bem. O que eu quero fazer agora é perceber exatamente o mesmo cenário acima, mas com conexões VPN baseadas em bridge / TAP , mas tenho problemas para entender o fluxo do pacote lógico e criar regras de iptables em um ambiente em ponte.

O que eu ganho até agora:

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

Por uma questão de simplicidade, vamos supor que os dois tap0 e br0 já estejam configurados.

O que eu não entendo é o fluxo de pacotes do ponto de vista do iptables e especialmente como o iptables lida com br0 . Meu objetivo é criar a mesma visualização e as regras acima, mas para o ambiente descrito em ponte / baseado em TAP.

edit: Não preciso criar um ambiente real e pronto para produção, não se preocupe. Eu só quero entender isso:)

    
por JFo 05.07.2014 / 18:03

1 resposta

1

No que diz respeito ao iptables, br0 pode ser tratado como uma única interface (por exemplo, você pode combinar -i br0 ou -o br0 , que se aplicará aos pacotes que chegam ou saem, tap0 e eth0), mas você também pode referenciar suas subinterfaces em regras usando o módulo physdev , por exemplo -m physdev --physdev-in tap0 .

Por favor, tente tornar sua pergunta mais específica e tentarei respondê-la melhor.

    
por 03.09.2014 / 00:49