我有一个程序将数据包(目标地址10.3.0.2 )写入到TUN / TAP接口。
networking:
host1|tun0----eth1(10.3.0.1)|-------------------host2|eth1(10.3.0.2)|
Wireshark捕获来自接口tun0这些数据包,但它们不会被转发到接口eth1 。
命令:
sysctl -w net.ipv4.ip_forward=1 sysctl -p iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT /etc/init.d/networking restart /etc/init.d/openvpn restart
你正在使用一个隧道或水龙头?
如果您希望远程主机位于同一个子网中,则应该使用tap而不是tun,从eth1中删除10.3.0.1,在eth1和tap0之间创build一个网桥,并将10.3.0.1分配给网桥接口。
这比tun稍微低效,但是会允许vpn主机和本地networking之间的非IP和广播stream量。 (因此,允许您的vpn主机在本地networking上使用DHCP服务器,或者如果他们想要的话欺骗他们的地址)。
如果你想为你的vpn主机build立一个单独的networking,你应该为这个隧道分配一对地址(或者如果你在多客户端服务器模式下使用openvpn,而不是在p2p模式下),你应该确保这些地址是绑定到tun接口,并且tun已经启动。 在你的图纸中没有隧道的地址。
根据你的发行版,重新启动networking服务可能会破坏你对iptables所做的修改。
您需要在两个接口(tun0和eth0)之间设置桥接,下面是一些关于如何设置网桥的文档:
http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
您遇到的问题是由于未启用内核中的gre模块:sudo modprobe ip_gre