VPN 网络映射具有相同 LAN 网络地址的多个站点

VPN 网络映射具有相同 LAN 网络地址的多个站点

我在将网络映射应用于一个案例时遇到了一些问题,但在网上找不到太多相关信息。
我正在尝试设置一个 VPN 网络(服务器 IP:10.1.0.1),其中用户(VPN IP:10.1.0.2)可以连接到具有相同 LAN IP 的多个站点(在此示例中只有两个:A 和 B):

  • 站点 A 具有以下网络设置:
    VPN-IP:10.1.1.1
    网络地址:192.168.1.0/28
    网络映射地址:10.2.0.0/28
  • 站点 B 具有以下网络设置:
    VPN-IP:10.1.1.2
    网络地址:192.168.1.0/28
    网络映射地址:10.2.0.16/28

我当前的设置:

  • mangle 中的 iptables 规则根据数据包的网络映射 IP 地址来标记数据包。A 的数据包标记为 0x20000,B 的数据包标记为 0x20010。
iptables -t mangle -A PREROUTING -i tun0 -s 10.1.0.0/24 -d 10.2.0.0/16 -j IPMARK --addr=dst --and-mask=0x7FFFF0
  • nat 预路由中的 iptables 规则进行网络映射。10.2.0.0/28 映射到 192.168.1.0/28,10.2.0.16/28 映射到 192.168.1.16/28。
iptables -t nat -A PREROUTING -i tun0 -s 10.1.0.0/24 -d 10.2.0.0/28 -j NETMAP --to 192.168.1.0/28
iptables -t nat -A PREROUTING -i tun0 -s 10.1.0.0/24 -d 10.2.0.16/28 -j NETMAP --to 192.168.1.0/28
  • iptables 规则在转发中转发 tun0 上的入站数据包和 tun0 上的出站数据包
iptables -A FORWARD -i tun0 -o tun0 -j ACCEPT

我也有针对 RELATED、ESTABLISHED 的前向规则。

  • 路由规则使用标有 0x470000 和 0x470030 的数据包的表:
32762:  from all fwmark 0x20000 lookup table0.out
32765:  from all fwmark 0x20010 lookup table1.out
  • 路由表如下所示:
default via 10.1.1.1 dev tun0 table table0.out 
default via 10.1.1.2 dev tun0 table table1.out
  • 对于所有和 tun0,反向路径过滤均设置为 0:
    • cat /proc/sys/net/ipv4/conf/tun0/rp_filter输出0
    • cat /proc/sys/net/ipv4/conf/all/rp_filter输出0

当用户与 VPN 服务器建立 VPN 连接时,会向用户推送两条附加路由

10.2.0.0/28 via 10.1.0.1 dev tun0 
10.2.0.16/28 via 10.1.0.1 dev tun0

该站点有一个 ccd 文件,其内容如下:

  • 地点“A”:
ifconfig-push 10.1.1.1 255.255.0.0
iroute 192.168.1.0 255.255.255.240
  • 地点“B”:
ifconfig-push 10.1.1.2 255.255.0.0
iroute 192.168.1.0 255.255.255.240

我的问题是,对站点路由器 Web 前端的两个调用都指向同一个站点。我调用:

我猜反向路径需要配置,但我在这里迷路了。当然,出站连接可能已经存在问题。
当站点 LAN 确实具有不同的网络地址时,连接工作正常。
我想我可以在站点的路由器上应用 SNAT 时解决这个问题,但我想保留服务器上的配置。非常感谢任何帮助。
提前致谢!

相关内容