晚上好,
我正在面对我的OpenVPN安装问题。 在这里已经3天了,但还是无法弄清楚我的生活有什么问题。
基本上问题是,我能连接到我的服务器(Ubuntu的14.04专用箱)从我的客户端(赢7电脑),但虽然我连接,我不能访问互联网和局域网(不能ping服务器在10.0 .0.1)。
我已经在服务器上设置了ip转发,并且尽我所知添加了iptable规则,以及在路由器上设置端口转发; 但仍然无法使其处于正常工作状态。
所有的帮助将不胜感激,因为我仍然是新的openvpn。 预先感谢您的宝贵时间。
请在下面find我的server.conf,client.conf和iptable规则的副本。
为server.conf
dev tun proto udp port 1194 ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key dh /etc/openvpn/dh1024.pem user nobody group nogroup server 10.8.0.0 255.255.255.0 persist-key persist-tun client-to-client push "route 192.168.0.0 255.255.255.0" push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" log-append /var/log/openvpn plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so openvpn client-cert-not-required username-as-common-name management localhost 7505
IP表格
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:openvpn Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- 192.168.0.0/24 anywhere ctstate NEW ACCEPT all -- 10.8.0.0/24 anywhere ctstate NEW ACCEPT all -- 10.8.0.0/24 192.168.0.0/24 ctstate NEW Chain OUTPUT (policy ACCEPT) target prot opt source destination
Client.conf
client dev tun proto udp remote 196.xxx.xxx.xxx 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt auth-user-pass comp-lzo verb 3
概要:
远程局域网是192.168.0.0/24。
OpenVPNnetworking是10.8.0.0/24。
你的OpenVPN客户端获得10.8.0.0/24的IP地址。 我们假设它是10.8.0.42。
试图与远程局域网交谈:
当您的OpenVPN客户端发送一个数据包到远程局域网(比如说192.168.0.56)的IP地址时,它会被发送到源地址10.8.0.42,并到达OpenVPN服务器。
除非您启用了IP转发,否则OpenVPN服务器将会丢弃它sysctl -w net.ipv4.ip_forward=1 )。
如果启用IP转发,则192.168.0.56接收数据包,并尝试通过向10.8.0.42发送数据包进行应答,但没有路由。 相反,它使用默认网关。 除非OpenVPN服务器恰好是默认网关,否则数据包将会丢失。 您可以使用ip route get 10.8.0.42来检查远程机器上的ip route get 10.8.0.42 。
可能的解决scheme:
在局域网内为每个节点添加一条路由到10.8.0.0/24(ip ip route add 10.8.0.0/24 via $ip_of_vpn_server );
在默认网关上添加一条到10.8.0.0/24的路由
数据包将无用地跳到路由器,而不是直接到达OpenVPN服务器;
但是您在路由器上启用了accept_redirects并且在LAN节点上启用了accept_redirects ,则路由器将发送ICMPredirect以指示更好的路由,之后LAN节点应该使用此路由;
在OpenVPN服务器上设置NAT以隐藏10.8.0.0/24地址。
尝试从OpenVPN客户端访问公共IP时会发生同样的问题:
如果您使用第一种或第二种解决scheme,则必须确保10.8.0.0/24已由远程LAN的路由器正确NAT;
如果您在OpenVPN服务器上使用NAT,则不必执行其他任何操作。
我build议使用第二种解决scheme。 你的NAT越less越好。
如果您能够连接到您的VPN服务器,而不是您正确设置的服务器/客户端通话。 这个问题就成了IP和路由的问题之一。 我通常使用pfsense作为我的openvpn服务器,而不是使用conf文件,但效果应该是一样的。
每次我使用openvpn,我都没有得到xxx2的连接,并且可以ping xxx1。 这可能是我,但我已经看到它始终在.6和0.5的路由器开始
当你连接到VPN,检查你的IP地址。 ipconfig
连接route print时检查路由表
看看你是否可以ping你的vpn IP和VPN上的网关。 这可能是你的情况10.8.0.5
如果你可以发布你的IPv4路由,可能有帮助。 我们可以缩小问题所在。
只是因为你有一个VPN,并不一定意味着你可以立即连接。 您仍然必须“告诉”您的客户端通过该VPN路由它的stream量。 如果您尝试连接到10.0.0.1,并且您的客户端位于不同的networking中,则会尝试与其默认网关进行通信。 相反,您必须告诉它与VPN连接进行通话。
在pipe理员CMD中:
route add <remote network> <VPN IP>