我试图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正在工作。