获取openvpn客户端通过服务器转发所有stream量

我试图build立一个openvpn服务器和客户端,所有的客户端stream量都通过服务器路由。 我目前能够通过客户端访问服务器,但是当我在服务器上启用“推送”redirect网关def1“'时,客户端失去了连接到互联网,VPN或其他的所有能力。 此外,它不能再连接到服务器,虽然局域网连接仍然很好。 我的服务器configuration文件是:

local ***.*** port 1194 proto tcp dev tun ca ca.crt cert server.crt key server.key dh dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway local def1" keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3 

这里是客户端:

 client dev tun proto tcp remote ***.*** 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert laptop.crt key laptop.key ns-cert-type server comp-lzo verb 3 

在服务器上,我启用了IP转发,并通过iptables启用了路由:

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

但客户端仍然无法连接到VPN或互联网上的任何东西。

作为参考,HOWTO的相关部分在这里 ,但我怀疑你已经遵循了。

我想尝试的第一件事是删除“本地”,这是命令应该是

 push "redirect-gateway def1" 

并不是

 push "redirect-gateway local def1" 

本地标志只适用于所有的客户端在同一个子网上。

还有一些需要注意的事情是,DNSstream量通过vpn路由,所以除非您处理了这个问题,否则您将无法parsing地址。 DHCP也可以得到转发,虽然看起来你不应该发生这种情况,因为你使用的路由不是桥接的VPN,但可能值得检查。

如果您“推”一个新的网关到客户端,那么您还需要推送一些路由,特别是到该网关所在子网的路由。 这将使您通过VPN访问互联网。 如果网关所在的networking不同于VPN服务器所在的networking,则还需要额外的路由,以便客户端可以访问这些其他networking。 此外,您可能还希望将DNS服务器推送到客户端,否则客户端无法parsing现在连接到的networking上的任何目标的名称。

以下是我们OpenVPN服务器configuration文件的摘录:

  #推送路由到客户端绑定到我们的本地
 #虚拟端点。
 #
推“路由10.180.0.1 255.255.255.255”

 #推送客户端需要的任何路由
 #到本地networking。
 #
推“路由10.171.0.0 255.255.0.0”
推“路由10.172.0.0 255.255.0.0”
推“路由10.173.0.0 255.255.0.0”
推“路由10.174.0.0 255.255.0.0”
推“路由10.175.0.0 255.255.0.0”
推“路由10.176.0.0 255.255.0.0”
推“路由10.177.0.0 255.255.0.0”
推“路由10.181.0.0 255.255.0.0”
推“路由10.182.0.0 255.255.0.0”
推“路由192.168.61.0 255.255.255.0”

 #将DHCP选项推送到Windows客户端。
 #
推“DHCP选项DOMAIN our-internal-domain.com”
推“dhcp-option DNS 10.abc”
推“dhcp-option WINS 10.bcd”

这些都是内部networking,我们甚至不推新的网关(因为我们大多数的用户从远方连接,他们通过默认网关访问互联网更好,我们不是控制怪胎)。

其实问题是NAT设置不正确。 修复了,vpn正在工作。