OpenVpn 桥接问题 - 服务器位于 NAT 后面 - 客户端可以 ping 服务器、默认网关,但无法ping通其他任何服务器

OpenVpn 桥接问题 - 服务器位于 NAT 后面 - 客户端可以 ping 服务器、默认网关,但无法ping通其他任何服务器

我正在尝试在 Ubuntu Server 12.04 上以桥接模式设置 OpenVPN。它通常可以工作;我可以连接,获得 IP 并可以 ping OpenVPN 服务器和默认网关,但我无法 ping 服务器 LAN 中的任何其他内容。

之前我确实成功地使用 TUN 适配器设置了隧道,在添加一些 iptables 条目后,它就正常工作了。我也可以访问其他服务器。但出于各种原因,我需要 TAP。

OpenVPN 服务器是 NAT(路由器)后面的独立机器,因此它同时不是默认网关。它的 IP 为 192.168.1.108。

一旦我连接到客户端,我就会从指定范围内获得一个 IP,例如 192.168.1.50,然后尝试 ping,例如 192.168.1.141,这是该局域网中的另一台服务器,它显示主机无法访问。令人困惑的是,我可以 ping 192.168.1.108 上的 OpenVPN 服务器本身和 192.168.1.1 上的 GW。

跑步时

tcpdump -nnel -i ethX icmp

从客户端对服务器进行 ping 操作时,没有任何活动。

顺便提一下,连接到 VPN 后,我可以浏览互联网。尝试从另一台服务器访问连接的客户端 192.168.1.50 时,他们也看不到它。只有 OpenVPN 服务器可以 ping 客户端。

由于这是桥接设置,我认为它与路由、iptables 或伪装无关。无论如何,我尝试输入常用命令,例如

iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT

或者

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE

将 eth1 改为 br0,并将 tap0 也改为 br0,但没有任何效果。实际上,这个 iptables 和路由部分对我来说很难理解。

在桥接模式下,我是否需要激活任何路由或 iptables 才能访问我的所有服务器?我是否需要手动添加类似 route add default gw 1​​92.168.1.1 dev br0 之类的内容来声明特定路由?

如何告诉我的 LAN 在哪里“查看” VPN 客户端?

我猜问题在于,openvpn 服务器不是网关,但我无法将 openvpn 放到我的 dd-wrt ​​破解路由器上,我的型号不支持它。我该如何设置 openvpn 服务器来解决这个问题?

答案1

好的,我自己发现了。

当我在连接到 VPN 时尝试 ping 通 LAN 中所有可能的 IP 时,我发现无法访问的 IP 仅属于虚拟服务器 (VirtualBox)。

然后我给自己丢了个脸...我忘记将 VirtualBox 中虚拟服务器的桥接网卡调整为 br0,而不是之前的 eth1。

只是为了方便,我还启用了混杂模式,因为我在很多帖子中看到,对于桥接设置来说,混杂是必须的。

现在我可以 ping 一切了。
每天我都会学到新东西 :)

相关内容