ip rule实现源IP路由,实现一个主机多IP(或多网段)同时通(外部看是完全两个独立IP)
利用ip rule实现基于源地址区分路由表,实现一个主机多IP网段同时通。(外部的一个主机无论访问哪个网段都可以访问通)(如果不做配置可能出现所有该网段发出的包都只走其中一个IP出去的情况)
实际应用:
创建路由表table200
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.99 table 200
ip route add default via 192.168.1.1 table 200
创建规则将源地址192.168.1.99的流量引流到路由表table200,也就是确保别人访问的是192.168.1.99,那192.168.1.99的返回流量出去时也从192.168.1.99出去。
ip rule实际就是能够实现基于IP特征来切换路由表的。
ip rule add from 192.168.1.99 table 200
配置完后:
root@ubuntu:~# ip rule list
0: from all lookup local
32763: from 192.168.1.99 lookup 200
32766: from all lookup main
32767: from all lookup default
root@ubuntu:~# ip route list table 200
default via 192.168.1.1 dev eth1
192.168.1.0/24 dev eth1 scope li<x>nk src 192.168.1.99
一组命令(pre-up、up、post-up、pre-down、down、post-down),分别定义在对应的时刻需要执行的命令。
保存到网卡配置文件:
up ip route add 192.168.1.0/24 dev eth1 src 192.168.1.99 table 200
up ip route add default via 192.168.1.1 table 200
up ip rule add from 192.168.1.99 table 200
Ubuntu 18.04+(新版)之后,采用了 优先入站接口IP 的,相当于默认启用了源IP路由,就无需此种配置了。 Ubuntu 18.04+中 如果配置同网段 多个IP,拔掉一个的网线,结果多个ip仍就通。 Ubuntu 18.04+中 IP 地址不再依附于特定网卡,而是成为系统级资源,由内核自动管理其与可用网络接口的映射
Ubuntu 18.04+ 如何实现接口 绑定端口?
1. 配置 ARP 策略 避免两个网卡互相响应对方的 ARP 请求。 对外展现为IP 与 接口绑定。
arp_ignore:定义主机如何响应 ARP 请求(0 = 默认,1 = 仅在请求的 IP 绑定到接收网卡时响应)。
arp_announce:定义主机发送 ARP 公告时的行为(2 = 仅使用目标网卡的 IP 作为源 IP 发送)。
# 全局生效(可选,确保所有网卡默认遵循)
sudo sysctl -w net.ipv4.conf.all.arp_ignore=1
sudo sysctl -w net.ipv4.conf.all.arp_announce=2
2. 通过策略路由(Policy Routing) 实现:为每个源 IP 分配独立路由表,表中指定出口网卡。 对内保证IP与接口
添加两个自定义路由表
sudo tee -a /etc/iproute2/rt_tables << EOF
100 table-eth0 # 对应 IP1 + eth0
200 table-eth1 # 对应 IP2 + eth1
EOF
# 1. 为 table-eth0 添加路由:源 IP1 走 eth0
# 同网段路由(访问本网段时,强制走 eth0) 192.168.1.0/24网段 源ip为192.168.1.10且走 eth0
sudo ip route add 192.168.1.0/24 dev eth0 src 192.168.1.10 table table-eth0
# 默认路由(访问外网时,强制走 eth0,需替换网关为实际网段网关,如 192.168.1.1)
sudo ip route add default via 192.168.1.1 dev eth0 src 192.168.1.10 table table-eth0
# 2. 为 table-eth1 添加路由:192.168.1.0/24网段 源ip为192.168.1.20且走 eth1
sudo ip route add 192.168.1.0/24 dev eth1 src 192.168.1.20 table table-eth1
sudo ip route add default via 192.168.1.1 dev eth1 src 192.168.1.20 table table-eth1
# 3. 添加策略规则:源 IP 匹配对应路由表
sudo ip rule add from 192.168.1.10 lookup table-eth0 priority 100
sudo ip rule add from 192.168.1.20 lookup table-eth1 priority 200

浙公网安备 33010602011771号