![完全隔离两个接口-Linux](https://linux22.com/image/773626/%E5%AE%8C%E5%85%A8%E9%9A%94%E7%A6%BB%E4%B8%A4%E4%B8%AA%E6%8E%A5%E5%8F%A3-Linux.png)
我有点尴尬,但我需要你的帮助。
我在虚拟机上有三个接口。我想完全隔离它们之间的接口。我为每个接口创建了一个路由表:
inet 192.168.1.100/24 brd 192.168.1.255 scope global ens192
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.10.100/24 brd 192.168.10.255 scope global ens224
4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.20.100/24 brd 192.168.20.255 scope global ens256
Network interface exemple:
up /sbin/ip route add default via 192.168.10.1 dev ens224 table in
up /sbin/ip rule add from 192.168.10.100/32 table in
post-down /sbin/ip rule del from 192.168.10.100/32 table in
post-down /sbin/ip route del default via 192.168.10.1 dev ens224 table in
但是当我尝试从一个接口 telnet 或 ping 或执行其他操作时,所有流量都会通过环回。有办法纠正这个问题吗?
答案1
按照这个答案,您可以使用标志来指定要使用的-I
接口。ping
此外,除非您net.ipv4.ip_forward
在 sysctl 中启用,否则接口将无法在它们之间路由。您可以通过使用 丢弃所有 FORWARD 流量来进一步缓解此问题iptables
。
如果您想进一步隔离接口,那么我希望您可以使用 iptables 来删除具有不同入站和出站接口的流量,例如:
iptables -A OUTPUT -i ens192 -o ens224 -j DROP
iptables -A OUTPUT -i ens192 -o ens256 -j DROP
... etc for other permutations of the 3 interfaces ...
在不进一步了解问题空间的情况下,这是我能给出的最佳答案。