隧道模式下 OpenVPN 子网之间的路由

隧道模式下 OpenVPN 子网之间的路由

希望有人可以帮助我并了解我的设置中出了什么问题。

我在 m TP Link 路由器上安装了 OpenWrt Chaos Calmer 15.05。路由器已连接 WAN,并在 192.168.1.0/24 子网上设有 WiFi 和有线子网。OpenVPN 服务器运行良好,我可以毫无问题地连接 iPhone、Android 等。

我在远程位置使用 Android 作为 WiFi 热点与家人共享互联网。子网 192.168.43.0/24。最近一周,我认为能够通过远程网络从家庭网络访问会很好,因为我有一些想要访问的摄像头。我无法从移动网络供应商处获取公共 IP 地址。我 root 了我的 Android 手机,并在该手机上安装 OpenVPN 客户端应用程序,然后连接到家庭 OpenVPN 服务器。手机能够使用 VPN,能够 ping 家庭网络路由器并通过 VPN 访问互联网,但两个子网中的任何其他设备都无法 ping 或访问彼此。

隧道在网络 10.8.0.0 上设置,远程 Android 获取 IP 地址 10.8.0.10。

我开始在远程子网上尝试通过隧道获取所有设备的访问权限,并能够访问 192.168.1.0/24 网络上的设备。几个小时后,我通过在防火墙和路由器中进行以下更改开始工作。这是在 Android 设备上运行的:

iptables -t filter -F FORWARD
iptables -t nat -F POSTROUTING
iptables -t filter -I FORWARD -j ACCEPT
iptables -t nat -I POSTROUTING -j MASQUERADE
ip rule add from 192.168.43.0/24 lookup 61
ip route add table 61 default dev tun0                    
ip route add table 61 192.168.43.0/24 dev wlan0                    
ip route add table 61 broadcast 255.255.255.255 dev wlan0 

因此现在 192.168.43.0/24 子网上的所有设备都可以 ping 192.168.1.0/24 上的所有设备,当然所有流量都通过隧道路由到互联网。

我尝试在家中设置类似的路由,以便让网络 192.168.1.0/24 上的设备也能访问远程子网,但没有成功。我猜想防火墙正在阻止,或者这不可能,隧道是否无法“看到”远程子网,而只能看到单个主机?

我尝试通过 10.8.0.10 dev tun0 添加到 192.168.43.0/24 的路由,但超时了。

我的路由器上的路由看起来像这样(我已经屏蔽了我的公共 IP 地址)。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ua-8xxxxx       0.0.0.0         UG    0      0        0 eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
10.8.0.2        *               255.255.255.255 UH    0      0        0 tun0
85.x.x.0        *               255.255.240.0   U     0      0        0 eth0
85.x.x.1        *               255.255.255.255 UH    0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 br-lan
192.168.43.0    10.8.0.10       255.255.255.0   U     0      0        0 tun0

请注意,路由器没有 ip 命令,并且我假设只有一个路由表。

我对 iptables 非常不确定,我使用过这些命令:

iptables -I FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -d 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -i tun0 -o eth1 -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -i eth0 -o eth1 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o eth1 -s 10.8.0.0/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE

如果这是一个可行的设置,请帮助我解决这个问题。

相关内容