我的虚拟机上共有 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的流量
IP 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
在这种情况下,有人可以帮助我吗?我不擅长路由。提前致谢
假设
enp0s3
被认为是“默认”接口(即,您要用于目标、LAN 或 WAN 的接口,未专门“分配”给接口),当您在其余接口上添加/配置地址时,您应该使用前缀长度/32
而不是/24
(或者,您可以使用标志noprefixroute
来代替;我不知道这样做的潜在优点是什么):onlink
然后您可以使用以下标志添加所需的间接路由:(显然,当您使用 时
onlink
,该src 100.10.10.x
部分对于流量使用在相应接口上配置的地址作为源地址至关重要,因此请确保不要忽略该部分)或者,您可以改用基于目标的策略路由。
使用将使用额外接口的路由创建额外的路由表:
(上面的间接路由将
dev
根据覆盖其 nexthop 的同一表中的直接路由设置相应的部分100.10.10.1
,这就是您可以省略它的原因,但当然您也可以明确指定它)然后添加 ip 规则,使具有特定目标地址的流量使用这些表: