客户端只能访问托管 OpenVPN 的服务器,而不能访问服务器子网

客户端只能访问托管 OpenVPN 的服务器,而不能访问服务器子网

我的 Linux 服务器 (RoadWarrior 配置) 上的 OpenVPN 隧道出现了一个特殊问题。我可以在 Mac 上使用 Tunnelblick 3.0 完美登录,可以访问托管 OpenVPN 守护程序的服务器上的所有服务,但是,我无法访问服务器子网上的任何其他机器。

我正在向客户端推送路线,网络状态监测表明该路由存在。

我的客户端配置如下

port 500
dev tun
remote {secret} 

tls-client
ca ca.crt
cert client.crt
key client.key

comp-lzo

pull

verb 4

服务器的配置如下

port 500
dev tun

local 10.81.0.2

tls-server 
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem

mode server

ifconfig 10.84.0.1 10.84.0.2
ifconfig-pool 10.84.0.4 10.84.0.255

route 10.84.0.0 255.255.255.0

push "route 10.84.0.1 255.255.255.255"
push "route 10.81.0.0 255.255.255.0"

comp-lzo

keepalive 10 60
inactive 600

user vpndaemon
group vpndaemon

persist-tun
persist-key

verb 4

我没有发现任何明显的错误,并且我也验证了客户端没有IP冲突。

非常感谢任何提示或想法!

答案1

您可能需要设置防火墙来对您的 VPN IP 地址执行 MASQ。

-A POSTROUTING -s 10.84.0.0/255.255.255.0 -o eth0 -j MASQUERADE

在您的 iptables 配置中应该可以解决问题。

答案2

好的,我本来想将其粘贴为评论,但我不能,所以如下:

@GruffTech 给出的命令对我不起作用,但这个命令起作用了

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

答案3

并且您需要启用内核 IP 数据包转发(tun 接口和 eth 之间的路由):

在 /etc/sysctl.conf 中取消注释或插入以下行:

net.ipv4.ip_forward=1

并运行:

sudo sysctl -p

相关内容