为什么OpenVPN可以连接,但是却不起作用?

为什么OpenVPN可以连接,但是却不起作用?

我有一台 Ubuntu 机器在另一个城市作为 OpenVPN 服务器运行。我可以通过 ssh 访问它。我正在尝试使用 Tunnelblick 从 Mac 使用 VPN。

服务器的本地子网为 192.168.80.x。客户端的本地子网为 192.168.0.x。客户端连接时,其 IP 地址为 10.8.0.5。

Tunnelblick 已连接,但我无法ping 8.8.8.8加载网页,也无法访问任何远程 LAN 的设备,除了使用地址 10.8.0.1 的 VPN 服务器。

客户端的配置文件:

client
dev tun
proto udp
remote [my server's external IP address] 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3
redirect-gateway local def1

服务器的:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.80.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

我需要改变什么?

编辑:在服务器上:

$ cat /proc/sys/net/ipv4/ip_forward
1

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

$ ip route
default via 192.168.80.1 dev enp2s0  proto static  metric 100
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1
169.254.0.0/16 dev tun0  scope link  metric 1000
192.168.80.0/24 dev enp2s0  proto kernel  scope link  src 192.168.80.5  metric 100

编辑2:

$ sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  10.0.0.0/8           anywhere

/etc/default/ufw 包括DEFAULT_FORWARD_POLICY="ACCEPT"

/etc/ufw/before.rules 包括:

*nat
:POSTROUTING ACCEPT [0:0] 
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT

答案1

我的问题是,我在 中指定了错误的接口/etc/ufw/before.rules。我应该使用-A POSTROUTING -s 10.8.0.0/8 -o enp2s0 -j MASQUERADE而不是-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE。我没有仔细辨别就从指南中复制粘贴了。

相关内容