我在将网络映射应用于一个案例时遇到了一些问题,但在网上找不到太多相关信息。
我正在尝试设置一个 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 时解决这个问题,但我想保留服务器上的配置。非常感谢任何帮助。
提前致谢!