我的虚拟机上总共有 4 个接口,其中 enp0s3 是主接口,其他是辅助接口
ip 输出
[root@vm]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 xdp/id:1 qdisc sfq state UP group default qlen 1000
link/ether 02:00:17:01:c1:5d brd ff:ff:ff:ff:ff:ff
inet 100.10.10.100/24 brd 100.10.10.255 scope global dynamic enp0s3
valid_lft 81440sec preferred_lft 81440sec
inet6 fe80::17ff:fe01:c15d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 02:00:17:01:6c:5d brd ff:ff:ff:ff:ff:ff
inet 100.10.10.101/24 scope global enp1s0
valid_lft forever preferred_lft forever
4: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 02:00:17:00:a2:f3 brd ff:ff:ff:ff:ff:ff
inet 100.10.10.102/24 scope global enp2s0
valid_lft forever preferred_lft forever
5: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether 02:00:17:01:a7:4e brd ff:ff:ff:ff:ff:ff
inet 100.10.10.103/24 scope global enp3s0
valid_lft forever preferred_lft forever
我正在使用规则将来自端口 9100、9101、9102、9103 的传入流量重定向到某些特定 IP
iptables -t nat -A PREROUTING -p udp --dport 9100 -j DNAT --to 1.1.1.1:9100
iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 9100 -j MASQUERADE
iptables -t nat -A PREROUTING -p udp --dport 9101 -j DNAT --to 2.2.2.2:9101
iptables -t nat -A POSTROUTING -p udp -d 2.2.2.2 --dport 9101 -j MASQUERADE
iptables -t nat -A PREROUTING -p udp --dport 9102 -j DNAT --to 3.3.3.3:9102
iptables -t nat -A POSTROUTING -p udp -d 3.3.3.3 --dport 9102 -j MASQUERADE
iptables -t nat -A PREROUTING -p udp --dport 9103 -j DNAT --to 4.4.4.4:9103
iptables -t nat -A POSTROUTING -p udp -d 4.4.4.4 --dport 9103 -j MASQUERADE
iptables -t nat -A PREROUTING -p udp --dport 1245 -j DNAT --to 5.5.5.5:1245
iptables -t nat -A POSTROUTING -p udp -d 5.5.5.5 --dport 1245 -j MASQUERADE
我想了1.1.1.1 和 2.2.2.2应通过enp2s0和3.3.3.3 和 4.4.4.4应通过enp3s0
知识产权5.5.5.5它希望流量从enp1s0所以我用了一个命令
ip route add 100.10.10.0/24 dev enp1s0 scope link metric 1000 table main
ip route add 5.5.5.5/32 via 100.10.10.1 dev enp1s0 table main
有效
但是当我对其他接口使用相同的规则时它不起作用我使用了下面的这些规则
ip route add 100.10.10.0/24 dev enp2s0 scope link metric 1000 table main
ip route add 1.1.1.1/32 via 100.10.10.1 dev enp2s0 table main
ip route add 100.10.10.0/24 dev enp2s0 scope link metric 1000 table main
ip route add 2.2.2.2/32 via 100.10.10.1 dev enp2s0 table main
ip route add 100.10.10.0/24 dev enp3s0 scope link metric 1000 table main
ip route add 3.3.3.3/32 via 100.10.10.1 dev enp3s0 table main
ip route add 100.10.10.0/24 dev enp3s0 scope link metric 1000 table main
ip route add 4.4.4.4/32 via 100.10.10.1 dev enp3s0 table main
有人能帮我解决这种情况吗?我不擅长路由。提前致谢
答案1
假设enp0s3
被视为“默认”接口(即,您想要用于未专门“分配”到接口的目标 LAN 或 WAN 的接口),当您在剩余接口上添加/配置地址时,您应该使用前缀长度/32
而不是/24
(或者,您可能可以使用标志noprefixroute
;但我不知道这样做的潜在优点是什么):
ip a add 100.10.10.101/32 dev enp1s0
ip a add 100.10.10.102/32 dev enp2s0
ip a add 100.10.10.103/32 dev enp3s0
然后您可以使用标志添加所需的间接路由onlink
:
ip r add 1.1.1.1 via 100.10.10.1 dev enp2s0 src 100.10.10.102 onlink
ip r add 2.2.2.2 via 100.10.10.1 dev enp2s0 src 100.10.10.102 onlink
ip r add 3.3.3.3 via 100.10.10.1 dev enp3s0 src 100.10.10.103 onlink
ip r add 4.4.4.4 via 100.10.10.1 dev enp3s0 src 100.10.10.103 onlink
ip r add 5.5.5.5 via 100.10.10.1 dev enp1s0 src 100.10.10.101 onlink
(显然,当您使用时onlink
,该src 100.10.10.x
部分对于流量使用相应接口上配置的地址作为源地址至关重要,因此请确保不要省略它)
或者,您也可以使用基于目的地的策略路由。
创建利用额外接口的路由的额外路由表:
ip r add 100.10.10.0/24 dev enp1s0 table 101
ip r add default via 100.10.10.1 table 101
ip r add 100.10.10.0/24 dev enp2s0 table 102
ip r add default via 100.10.10.1 table 102
ip r add 100.10.10.0/24 dev enp3s0 table 103
ip r add default via 100.10.10.1 table 103
(上述间接路由将dev
根据涵盖其下一跳的同一张表中的直接路由设置相应的部分100.10.10.1
,这就是为什么您可以省略它,但当然您也可以明确指定它)
然后添加 IP 规则,使具有特定目标地址的流量使用这些表:
ip ru add to 1.1.1.1 lookup 102
ip ru add to 2.2.2.2 lookup 102
ip ru add to 3.3.3.3 lookup 103
ip ru add to 4.4.4.4 lookup 103
ip ru add to 5.5.5.5 lookup 101