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