OpenVPN网桥:远程客户端看不到本地

粗糙的解决scheme:

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

我仍然不明白发生了什么事。 在L2上进行桥接,iptables不应该触及该数据包。


组态:

Debian 6.0挤压

OpenVPN 2.2.1(来自backports)

我的任务是在数据链路层上将远程客户端与本地networking连接起来,以便它们停留在一个广播域中,并具有与本地客户端相同的networking/networking掩码。 我正在使用TAP接口和桥接。 所有相关的接口(以太网(本地networking),TAP(VPN)和网桥)都设置为混杂模式。 networking/networking掩码是172.20.200.0/24。 服务器地址是172.20.200.2。

本地和远程客户端都可以ping服务器,但本地和远程客户端之间没有连接。 在服务器上使用数据包捕获程序tshark( tshark -i br200 -f "icmp" )我看到从远程客户端到本地的icmp echo请求。 在本地客户端,我没有看到这个请求(使用Wireshark)。 而且,本地客户端在arpcaching中有远程客户端arp地址,远程客户端在arpcaching中有本地客户端arp地址。 所以,他们在数据链路networking层看到对方。 但是他们不能相互ping通! 防火墙和防病毒在两个客户端上都被禁用。 哪里有问题? 我不明白。

的/ etc /networking/接口

 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 /客户机- arm23

 ifconfig-push 172.20.200.132 255.255.255.0 

在/ etc / OpenVPN的/网桥启动

 #!/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的/桥站

 #!/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和MRU重合。

bond0.200是vlan设备over bond设备。 也许这在一些奇怪的方式导致错误?

最有可能忘记启用转发。 将net.ipv4.ip_forward=1添加到/etc/sysctl.conf ,然后将sysctl -p或重新启动。 另外尝试添加以下OpenVPNconfiguration:

 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" 

请注意,添加到桥接口,适当地设置promisc标志。 桥接口不需要处于promisc模式。

我运行的是相同的设置,但在OpenSUSE上,TAP界面在启动时创build,OpenVPN只是打开它们 – 在OpenVPN中没有启动/停止脚本。