如何通过其他接口传递流量

如何通过其他接口传递流量

我的虚拟机上总共有 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应通过enp2s03.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

相关内容