OpenVPN连接工作,但没有分配网关

我尝试在vps上设置openvpn,并且能够build立到服务器的连接,但网关没有分配给客户端。

这是我的configuration文件:

客户端configuration:

client dev tun proto udp remote foo.bar 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key ns-cert-type server redirect-gateway comp-lzo verb 3 pull 

服务器configuration:

 port 1194 proto udp dev tun ca easy-rsa/2.0/keys/ca.crt cert easy-rsa/2.0/keys/server.crt key easy-rsa/2.0/keys/server.key dh easy-rsa/2.0/keys/dh2048.pem server 172.30.90.0 255.255.255.192 ifconfig-pool-persist ipp.txt push "redirect-gateway def1" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun status openvpn-status.log log openvpn.log log-append openvpn.log verb 3 

ifconfig客户端:

 tun0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 172.30.90.6 --> 172.30.90.5 netmask 0xffffffff open (pid 42823) 

服务器上的iptables规则:

iptables -L

 Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT udp -- anywhere anywhere state NEW udp dpt:openvpn REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination 

我想通过VPN路由整个stream量。 我已经添加了redirect网关,所以它应该工作。 我真的不明白这里有什么问题,我希望你能帮我解决这个问题。

谢谢!

连接到VPN后,在客户端运行命令route -nnetstat -rn ,查看是否分配了网关地址。

检查你是否做了以下事情:

在服务器上:

推送网关到客户端:

将其添加到文件:/etc/openvpn/server.conf

 push "redirect-gateway def1" 

将其添加到文件:/etc/sysctl.conf

 net.ipv4.ip_forward=1 

或者发出以下命令为当前会话设置此variables:

 echo 1 > /proc/sys/net/ipv4/ip_forward 

发出以下命令来configurationiptables以正确地转发通过VPN的stream量:

 iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s [vpn client subnet] -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s [vpn client subnet] -o eth0 -j MASQUERADE 

资源

尝试删除:

 redirect-gateway 

在客户端configuration。

您已经通过服务器的push机制推送了redirect-gatewayconfiguration,只有在这种情况下,您才使用正确的参数( def1 )发送redirect-gatewayconfiguration。

没有参数的redirect-gateway的行为是依赖于openvpn版本的(并且你没有指定你的具体版本),所以最好在安全的一面。

如果这没有帮助,我看到不同的可能的问题。

我build议以下疑难解答:

  • 检查你可以ping通隧道的另一端
  • 如果是,请尝试手动添加指向隧道远端的默认网关,然后尝试ping 8.8.8.8(以删除通过隧道推送的DNS中可能存在的问题)
  • 如果这不起作用,你的问题可能是在NATconfiguration中(你没有发布iptables -L -t nat的结果),或者在转发configuration中
  • 如果这样的作品,但ping http://www.google.com不起作用,您的问题可能在DNSconfiguration