OpenVPN 已连接但没有 Internet 或 LAN

OpenVPN 已连接但没有 Internet 或 LAN

晚上好,

我在安装 OpenVPN 时遇到了问题。已经安装 3 天了,但还是不知道问题出在哪里...

基本上问题是我能够从我的客户端(win 7 pc)连接到我的服务器(ubuntu 14.04 专用机),但虽然我已连接,但我无法访问互联网和 LAN(无法 ping 10.0.0.1 的服务器)。

我已经在服务器上设置了 IP 转发,并尽我所知添加了 iptable 规则,以及在路由器上设置了端口转发;但仍然无法使其正常工作。

由于我对 openvpn 还不熟悉,所以非常感谢大家的帮助。提前感谢大家的宝贵时间。

请参阅下面我的 server.conf、client.conf 和 iptable 规则的副本。

服务器配置文件

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
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

答案1

概括:

  • 远程 LAN 是 192.168.0.0/24。

  • OpenVPN网络是10.8.0.0/24。

  • 您的 OpenVPN 客户端获得 10.8.0.0/24 中的 IP。我们假设它是 10.8.0.42。

尝试与远程 LAN 对话:

  • 当您的 OpenVPN 客户端向远程 LAN 中的 IP(假设为 192.168.0.56)发送数据包时,该数据包将使用源地址 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

可能的解决方案:

  • 为 LAN 中的每个节点添加到 10.8.0.0/24 的路由(ip route add 10.8.0.0/24 via $ip_of_vpn_server);

  • 在默认网关上添加到 10.8.0.0/24 的路由

    • 数据包将会无用地跳转到路由器,而不是直接到达 OpenVPN 服务器;

    • 但是您send_redirects在路由器上启用了该功能,并且accept_redirects在 LAN 节点上启用了该功能,则路由器将发送 ICMP 重定向以指示更好的路由,并且 LAN 节点随后应使用此路由;

  • 在 OpenVPN 服务器上设置 NAT 以隐藏 10.8.0.0/24 地址。

当你尝试从 OpenVPN 客户端访问公共 IP 时也会发生同样的问题:

  • 如果您使用了第一种或第二种解决方案,则必须确保 10.8.0.0/24 已被远程 LAN 的路由器正确地进行 NAT;

  • 如果您在 OpenVPN 服务器上使用了 NAT,则您不必执行任何其他操作。

我建议使用第二种解决方案。NAT 越少越好。

答案2

如果您能够连接到 VPN 服务器,则您很可能已正确设置服务器/客户端进行通信。然后问题就变成了 IP 和路由。我通常为我的 openvpn 服务器使用 pfsense,而不是使用 conf 文件,但效果应该是一样的。

每次我使用 openvpn 时,我都无法在 xxx2 上建立连接,但可以 ping xxx1 。可能是我的问题,但我看到它总是从 .6 和 .5 的路由器开始

  1. 当您连接到 vpn 时,请检查您的 ip 地址。 ipconfig

  2. 连接时检查路由表route print

  3. 看看你是否可以 ping 通你的 vpn IP 和 vpn 上的网关。你的情况可能是 10.8.0.5

如果您可以发布您的 IPv4 路由,这可能会有所帮助。我们可以缩小问题的范围。

答案3

拥有 VPN 并不一定意味着您可以立即连接。您仍然必须“告诉”您的客户端通过该 VPN 路由其流量。如果您尝试连接到 10.0.0.1,而您的客户端位于不同的网络中,它将尝试与其默认网关通信。相反,您必须告诉它与 VPN 连接通信。

在管理员CMD中:

route add <remote network> <VPN IP>

相关内容