晚上好,
我在安装 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 的路由器开始
当您连接到 vpn 时,请检查您的 ip 地址。
ipconfig
连接时检查路由表
route print
看看你是否可以 ping 通你的 vpn IP 和 vpn 上的网关。你的情况可能是 10.8.0.5
如果您可以发布您的 IPv4 路由,这可能会有所帮助。我们可以缩小问题的范围。
答案3
拥有 VPN 并不一定意味着您可以立即连接。您仍然必须“告诉”您的客户端通过该 VPN 路由其流量。如果您尝试连接到 10.0.0.1,而您的客户端位于不同的网络中,它将尝试与其默认网关通信。相反,您必须告诉它与 VPN 连接通信。
在管理员CMD中:
route add <remote network> <VPN IP>