完全隔离两个接口-Linux

完全隔离两个接口-Linux

我有点尴尬,但我需要你的帮助。

我在虚拟机上有三个接口。我想完全隔离它们之间的接口。我为每个接口创建了一个路由表:

    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 ...

在不进一步了解问题空间的情况下,这是我能给出的最佳答案。

相关内容