我有以下设置:
--------------------------------------------------------------------------
| Local Area Network 1 (LAN 1) Netmask - 192.168.0.0/24 or 255.255.255.0 |
| --------------- |
| |Default gateway|------------------------------------ |
| |192.168.0.1 | | |
| ---------------- | |
| | | |
| ------------------------------- ------------------------------- |
| |Ubuntu server (PC2) | |Ubuntu server (PC1) | |
| |Running as web server | |Running OpenVPN server | |
| |LAN IP: 192.168.0.5 | |LAN: 192.168.0.133 | |
| ------------------------------- |OpenVPN IP: 10.8.0.1 | |
| ------------------------------- |
| |
--------------------------------------------------------------------------
--------------------------------------------------------------------------
| Local Area Network 2 (LAN 2) Netmask - 192.168.0.0/24 or 255.255.255.0 |
| --------------- |
| |Default gateway|------------------------------------ |
| |192.168.0.1 | | |
| ---------------- | |
| | |
| ------------------------------- |
| |Iphone client | |
| |Connected to openvpn server PC1| |
| |LAN: 192.168.0.5 | |
| |OpenVPN IP: 10.8.0.2 | |
| ------------------------------- |
| |
--------------------------------------------------------------------------
我的 Iphone (LAN 2) 能够连接我家里的 openvpn 服务器 (LAN 1),但我的 Iphone 无法访问 Web 服务器 (PC2)。
但是,当我的 Iphone 客户端使用移动数据并连接到我的 openvpn 服务器时,我能够访问(PC 2)。
我已经启用我net.ipv4.ip_forward=1
的/etc/sysctl.conf
并添加push "route 192.168.0.0 255.255.255.0"
到 server.conf
此屏幕截图标识我的路线-n 路线-n
我最好的猜测是,当使用 2 个相同的 192.168.0.0/24 子网时,我的 iPhone 客户端会感到困惑,因为它在 LAN 2 中发送 IP 地址 192.168.0.5 的流量,但在 LAN 1 中却没有。
如何解决这种情况,或者强制我的 vpn 客户端通过 openvpn 服务器(PC1)路由所有 192.168.0.0/24 网络,而不是通过 LAN 2 默认网关路由?
提前致谢!
答案1
假设问题是由于 LAN2 的子网路由与 LAN1 的 VPN 推送的路由之间的目的地冲突造成的,您可以尝试通过将推送的路由分成两半来解决冲突:
route 192.168.0.0 255.255.255.128
route 192.168.0.128 255.255.255.128
def1
与标志对选项的作用类似redirect-gateway
,这应该可以避免冲突并覆盖现有的192.168.0.0/24
路线。
不幸的是,这仍然不允许您访问 LAN1 上与您的客户端或其网关在 LAN2 上具有相同 IP 的主机。
为了解决这个问题,你可以使用另一个子网(例如10.9.0.0/24
)来“代表” 192.168.0.0/24
LAN2 上的 LAN1,方法是使用NETMAP
VPN 服务器上的 iptables(并为其推送路由):
iptables -t nat -A PREROUTING -d 10.9.0.0/24 -j NETMAP --to 192.168.0.0/24