Perdendo o acesso à Internet ao criar a ponte ethernet para o OpenVPN

2

Estou tentando configurar uma ponte ethernet com o OpenVPN. Eu crio minha bridge usando este script que eu obtive do guia de instalação no openvpn.org, modificado levemente para funcionar no Arch Linux.

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.1.202"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
#brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ip link set dev $t promisc on
done

ip link set dev $eth promisc on

#ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

Isso funciona, exceto que o servidor perde sua conexão com a Internet imediatamente depois de executar o script até que eu reinicie. Ainda sou capaz de me conectar no cliente, e rotear todos os dados pela vpn com push "redirect-gateway def1" parece funcionar - se eu tentar pingar google.com no cliente, recebo uma mensagem do servidor dizendo que não é possível ser alcançado. O que estou fazendo de errado?

EDIT:
Eu removi a ponte para eth0 como sugerido em esta questão . Também comentei ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast . Tudo parece funcionar agora, exceto pelo fato de que não consigo fazer o ping do cliente pelo servidor.

Quando faço um traceroute para google.com, ele passa por 192.168.1.109 antes de passar pelo meu roteador. Este endereço está em minhas tabelas de roteamento vpn, então isso significa que o tráfego está passando pela VPN? Outro problema pode ser que o cliente com o qual tenho testado está na mesma rede local que o servidor. Isso poderia estar causando problemas? Com uma ponte ethernet, os computadores na rede local ainda podem acessar os clientes mesmo que não estejam conectados à rede? Vou tentar testá-lo de outra rede e atualizar isso com minhas descobertas.

EDIT 2:

Veja como são as tabelas de roteamento no servidor:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
0.0.0.0         192.168.1.2     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.1.109   127.0.0.1       255.255.255.255 UGH       0 0          0 lo
    
por Lily Hahn 30.12.2013 / 01:26

1 resposta

3

Ao fazer uma ponte com o OpenVPN, você entrincheirará seus eth0 e tap0 existentes em uma ponte br0 . Essa é a coisa certa a fazer se você quiser que os clientes do OpenVPN façam parte da mesma rede em que eth0 está e permita que o tráfego de broadcast atravesse.

Quando os eth0 e tap0 estão em uma ponte, eles agora são como portas em um switch, e seus IPs individuais não importam mais. Você perde a conexão com a internet porque br0 não tem IP agora.

br0 agora é sua NIC e agora precisa de um IP, seja por DHCP ou manualmente atribuído. Experimente dhclient -v br0 .

Se você não tiver um servidor DHCP em execução, precisará configurar um, apenas para br0 (é possível informar isc-dhcp-server para fornecer apenas IPs na interface br0 e não em eth0 ) .

    
por 18.01.2014 / 18:12