我目前在我的VPS上运行OpenVPN,通过TCP监听端口1194。 我需要使用TCP,因为我有时需要通过HTTP代理来传输stream量。 但是,我也想能够使用UDP,这应该更快。 但是,我不想创build两个子网,因为我也有我的机器相互连接,我想要在一个子网上。
有什么办法我有两个实例共享一个IP池?
这是我的服务器configuration,供参考:
dev tun proto tcp persist-key persist-tun log-append /var/log/openvpn comp-lzo port 1194 ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem ifconfig-pool-persist ipp.txt server 192.168.192.0 255.255.255.0 topology subnet client-to-client push "dhcp-option DNS 192.168.192.1" push "dhcp-option DOMAIN my.example.com" # Daemon settings user nobody group nogroup
好的,我解决了这个问题。
首先,我切换到桥接networking。 我创build了一个桥接设备和两个连接的tap设备(我在桥上没有以太网设备)。 UDP服务器监听192.168.192.1 [和tap0]上的TCP 192.168.192.2 [和tap1上]。 桥本身是192.168.192.1,但我不认为这是重要的。 两者都具有相同的ifconfig-pool-persist文件。
这工作,但我不能从通过UDP连接的客户端连接到通过TCP连接的客户端,反之亦然(客户端使用相同的方法可以相互交谈)。 我添加了一个防火墙规则:
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
现在一切正常。
您放入VPN的stream量与用于隧道的协议无关。 在OpenVPN隧道中,您可以将AFAIK任何stream量(TCP,UDP,ICMP,…)。
编辑:我真的不认为你可以有两个OpenVPN实例与相同的子网,将给你一个不可能的路由表。 你可以做什么,必须分开子网或他们之间的路线。 我从来没有这样做,但我认为这是可行的,认为它会起作用。