Ponte OpenVPN: clientes remotos não veem local

2

Solução aproximada:

iptables -A FORWARD -i br200 -j ACCEPT
iptables -A FORWARD -o br200 -j ACCEPT

Ainda não entendi o que está acontecendo. Bridging é feito em L2, o iptables não deve tocar nos pacotes.

Configuração:

Debian 6.0 Squeeze

OpenVPN 2.2.1 (de backports)

Minha tarefa é conectar clientes remotos com a rede local na camada de enlace de dados, para que permaneçam em um domínio de broadcast e tenham a mesma rede / máscara de rede que os clientes locais. Estou usando interfaces TAP e bridging. Todas as interfaces relacionadas (ethernet (rede local), TAP (VPN) e bridge) são configuradas para o modo promíscuo. Rede / netmask é 172.20.200.0/24. O endereço do servidor é 172.20.200.2.

Os clientes locais e remotos podem executar ping no servidor, mas não há conexão entre clientes locais e remotos. Usando o programa de captura de pacotes tshark no servidor ( tshark -i br200 -f "icmp" ), vejo solicitações de eco icmp do cliente remoto para o local. No cliente local, não vejo solicitações (usando o Wireshark). Além disso, o cliente local tem o endereço arp do cliente remoto no cache do arp, e o cliente remoto tem o endereço arp do cliente local no cache do arp. Então, eles se vêem na camada de rede de enlace de dados. Mas eles simplesmente não podem pingar uns aos outros! O firewall e o antivírus estão desativados nos dois clientes. Onde está o problema? Eu não entendo.

/ etc / network / interfaces

auto bond0.200
  iface bond0.200 inet manual
        vlan_raw_device bond0
        up ifconfig bond0.200 0.0.0.0 promisc up

  auto br200
  iface br200 inet static
        bridge_ports bond0.200
        bridge_stp off
        bridge_fd 1
        address 172.20.200.2
        netmask 255.255.255.0
        post-up ifconfig br200 promisc

/etc/openvpn/server.conf

mode server
tls-server
port *****
proto tcp-server
dev tap200

script-security 2

up /etc/openvpn/bridge-start
down /etc/openvpn/bridge-stop

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
#crl-verify crl.pem

auth sha1
cipher AES-256-CBC

; !!!
; comp-lzo

tun-mtu 1500
mssfix 1450

client-config-dir /etc/openvpn/ccd
ccd-exclusive

client-to-client
keepalive 10 120

persist-key
persist-tun

status /var/log/openvpn/server-arm.status
log-append  /var/log/openvpn/server-arm.log

/ etc / openvpn / ccd / client-arm23

ifconfig-push 172.20.200.132 255.255.255.0

/ etc / openvpn / bridge-start

#!/bin/bash
#set -x
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

br="br200"
tap="tap200"

openvpn --mktun --dev $tap
ifconfig $tap 0.0.0.0 promisc up

brctl addif $br $tap

exit 0

/ etc / openvpn / bridge-stop

#!/bin/bash
#set -x
####################################
# Tear Down Ethernet bridge on Linux
####################################

br="br200"
tap="tap200"

brctl delif $br $tap

openvpn --rmtun --dev $tap

exit 0

MTU e MRU em todas as interfaces coincidem.

bond0.200 é dispositivo vlan sobre dispositivo de ligação. Talvez isso de alguma forma estranha cause erros?

    
por Selivanov Pavel 14.08.2012 / 13:12

1 resposta

2

O mais provável é que você tenha esquecido de ativar o encaminhamento. Adicione net.ipv4.ip_forward=1 a /etc/sysctl.conf e, em seguida, sysctl -p ou reinicie. Além disso, tente adicionar o seguinte à configuração do OpenVPN:

server-bridge 172.20.200.2 255.255.255.0 172.20.200.100 172.20.200.200
push "route 172.20.200.0 255.255.255.0"

Note que adicionando interface para bridge, define o promisc flag apropriadamente. A interface Bridge não precisa estar no modo promisc.

Eu tenho a mesma configuração em execução, mas no OpenSUSE, as interfaces TAP são criadas durante a inicialização e o OpenVPN apenas as abre - nenhum script start / stop no OpenVPN.

    
por 17.08.2012 / 23:31

Tags