![OpenVPN - 如果每个客户端上没有反向路由,则无法访问 LAN 设备](https://linux22.com/image/699040/OpenVPN%20-%20%E5%A6%82%E6%9E%9C%E6%AF%8F%E4%B8%AA%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B8%8A%E6%B2%A1%E6%9C%89%E5%8F%8D%E5%90%91%E8%B7%AF%E7%94%B1%EF%BC%8C%E5%88%99%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%20LAN%20%E8%AE%BE%E5%A4%87.png)
我的问题如下:当我通过 OpenVPN 从互联网连接到我的 LAN 时,我所能访问的只有 OpenVPN 服务器(通过它的 LAN IP 和 VPN 内的 IP)。当我在每个 LAN 客户端上添加反向路由时,就可以进行通信。但对 LAN 中的每个客户端都这样做很繁琐,也不太方便。由于我的 VPN 服务器与我的默认网关不在同一台机器上,我已在各种说明中看到,我需要在网关中添加反向路由,这样一切都会正常工作。但是,就我而言,情况并非如此。我非常感谢大家的意见,并建议我如何调试问题。也许我遗漏了什么或配置有误。
我的网络设置:
局域网:10.0.0.0/24
VPN:10.4.0.0/24
- 网关 IP:10.0.0.1(安装了 ipFire 的迷你电脑,通过调制解调器和 PPPoE 上网)
- VPN 服务器 IP:10.0.0.6(运行 raspbian 和 OpenVPN 的 Raspberry Pi 3)
10.0.0.0/24 中的其他几个 LAN 客户端
ipFire 中的静态路由设置:网络 10.4.0.0/24 通过网关 10.0.0.6(如果没有它,网关就无法通过 vpn 访问)
树莓派上的 ip 转发已启用
OpenVPN配置:(删除不相关的部分)
dev tun port 1194 proto udp mode server server 10.4.0.0 255.255.255.0 push "route 10.0.0.0 255.255.255.0" client-to-client comp-lzo yes
raspi(vpn服务器)上的路由表:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default ipfire.home 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 * 255.255.255.0 U 0 0 0 eth0 10.4.0.0 10.4.0.2 255.255.255.0 UG 0 0 0 tun0 10.4.0.2 * 255.255.255.255 UH 0 0 0 tun0
答案1
由于使用当前配置,网关本身可以访问 VPN 客户端,因此您知道其路由表和 VPN 服务器上的所有内容一定是正确的。网关上的防火墙规则可能未设置为允许将来自其他主机的流量转发回 VPN 服务器。
具体来说,我的直觉是防火墙的设置使得转发默认被拒绝,并且只允许从 LAN 到 WAN。如果我的猜测正确,以下规则将使其工作:
iptables -I FORWARD -s 10.0.0.0/24 -d 10.4.0.0/24 -j ACCEPT
或者,您可以通过添加来使其更加具体,用您的 LAN 接口名称替换 eth0。-i eth0 -o eth0