最简单的基于目的地址的IP分流
--发布于 2022-05-12 20:33:13
现在家里的VMware虚拟机,装了个CentOS7,共有两个网络出口。第1个是家里的移动宽带,第2个是CentOS7上的Wi-Fi连手机共享出来的无线热点来上网。
相关信息如下:
# 移动宽带
网卡名称:ens33
网卡IP:192.168.3.33
网关:192.168.3.1
公网IP: 120.239.197.251
# 无线网卡
网卡名称:wls35u1
网卡IP:192.168.43.208
网关:192.168.43.1
公网IP: 120.197.198.163
首先,添加表route1和route2到rt_tables中
vim /etc/iproute2/rt_tables
# 添加下面这两行
11 route1
12 route2
然后,添加路由策略
# 目的地址为108.61.246.21的数据包使用路由表route1
ip rule add to 108.61.246.21 table route1
# 目的地址为8.210.252.214的数据包使用路由表route2
ip rule add to 8.210.252.214 table route2
为这两个路由表添加路由项目
# 发往108.61.246.21的数据包使用【移动宽带】网关
ip route add 108.61.246.21 via 192.168.3.1 table route1
# 发往8.210.252.214的数据包使用【无线网卡】网关
ip route add 8.210.252.214 via 192.168.43.1 table route2
相关输出信息如下
[root@localhost ~]# ip rule list
0: from all lookup local
32764: from all to 8.210.252.214 lookup route2
32765: from all to 108.61.246.21 lookup route1
32766: from all lookup main
32767: from all lookup default
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.3.1 0.0.0.0 UG 100 0 0 ens33
0.0.0.0 192.168.43.1 0.0.0.0 UG 800 0 0 wls35u1
192.168.3.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.43.0 0.0.0.0 255.255.255.0 U 600 0 0 wls35u1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]# ip route show table main
default via 192.168.3.1 dev ens33 proto dhcp metric 100
default via 192.168.43.1 dev wls35u1 metric 800
192.168.3.0/24 dev ens33 proto kernel scope link src 192.168.3.33 metric 100
192.168.43.0/24 dev wls35u1 proto kernel scope link src 192.168.43.208 metric 600
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
[root@localhost ~]# ip route show table route1
108.61.246.21 via 192.168.3.1 dev ens33
[root@localhost ~]# ip route show table route2
8.210.252.214 via 192.168.43.1 dev wls35u1
ping 108.61.246.21,可以看到出口IP是120.239.197.251,也就是使用【移动宽带】出口,网卡为ens33
# 在108.61.246.21机器上运行tcpdump -nn -i eth0 icmp命令抓取ping包
21:20:00.987601 IP 120.239.197.251 > 108.61.246.21: ICMP echo request, id 42719, seq 3760, length 64
21:20:00.987652 IP 108.61.246.21 > 120.239.197.251: ICMP echo reply, id 42719, seq 3760, length 64
ping 8.210.252.214,可以看到出口IP是120.197.198.163,也就是使用【无线网卡】出口,网卡为wls35u1
# 在8.210.252.214机器上运行tcpdump -nn -i eth0 icmp命令抓取ping包
21:23:20.147107 IP 120.197.198.163 > 172.17.56.20: ICMP echo request, id 45250, seq 11207, length 64
21:23:20.147135 IP 172.17.56.20 > 120.197.198.163: ICMP echo reply, id 45250, seq 11207, length 64
从上面可以看到,同一台主机,根据目的IP的不同,使用不同的出口,从而实现了IP数据分流的效果。
--更新于 2023-03-09 10:51:41