如何防止新的隔离虚拟接口监听 0.0.0.0:*

如何防止新的隔离虚拟接口监听 0.0.0.0:*

我正在创建一个新的虚拟接口:

ifconfig eth0:0 123.123.22.22

该命令netstat -tlnp返回如下内容:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:50505         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:7337          0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:3790            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:6001            0.0.0.0:*               LISTEN      2450/Xvnc4      
tcp        0      0 0.0.0.0:6002            0.0.0.0:*               LISTEN      2626/Xvnc4      
tcp        0      0 192.168.2.77:22         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:3001          0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:52698         0.0.0.0:*               LISTEN      3488/plugin_host
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -               
tcp6       0      0 ::1:7337                :::*                    LISTEN      -               
tcp6       0      0 :::5901                 :::*                    LISTEN      2450/Xvnc4      
tcp6       0      0 :::5902                 :::*                    LISTEN      2626/Xvnc4      
tcp6       0      0 ::1:631                 :::*                    LISTEN      -               
tcp6       0      0 ::1:5432                :::*                    LISTEN      -               
tcp6       0      0 ::1:6010                :::*                    LISTEN      -  

因此,如果我nmap同时创建虚拟和物理接口,结果将是相同的(这通过中的“本地地址”值进行解释netstat)。我尝试关闭这个新虚拟接口中的端口(5901,5902,6001,6002)。对于nmap两个接口:

PORT     STATE SERVICE
5901/tcp open  vnc-1
5902/tcp open  vnc-2
6001/tcp open  X11:1
6002/tcp open  X11:2

命令:

sudo iptables -A INPUT -i eth0:0 -p tcp --dport 5901 -j DROP

该端口将无法访问,但打开(对于nmap)。有什么办法可以阻止eth0:0监听来自 的流量0.0.0.0吗?

如果主机有两个 IP 地址:192.168.1.1 和 10.1.2.1,并且该主机上运行的服务器侦听 0.0.0.0,则可以通过这两个 IP 地址访问它。 (维基百科)

目标:

  • 在 LAN 中公开新接口,并更改 Mac 地址(看起来像另一台机器)
  • 将 docker 容器绑定到最近创建的新接口,公开某些端口中的服务。

答案1

要在现有网卡之上模拟第二个(虚拟)以太网卡,该网卡具有不同的 MAC,并且来自不同的命名空间(例如容器),您需要麦克夫兰界面。

这里是如何在 Docker 容器中使用它们的说明。

您似乎对您尝试过的一些网络功能背后的原理有点困惑。也许以下内容有帮助:

  • eth0:0ifconfig这只是该工具用来处理某个接口上的第二个 IP 地址的旧方法。如果您使用像这样的较新工具ip addr,它只会在 上显示第二个 IP 地址eth0。这仅适用于 OSI Level 3,因此没有不同的 MAC 地址,它不会像在 docker 中那样与网络命名空间交互,而且使用起来通常很痛苦,因为您必须确保每个应用程序都正确绑定到其中一个地址。并且需要这种绑定来防止应用在 0.0.0.0 上监听;没有办法一般性地阻止“eth0:0监听来自0.0.0.0”的流量(忽略这种形式的句子根本没有意义;接口没有监听,应用程序通过绑定监听某些IP地址和/或某些接口)。

  • iptables允许您进行数据包过滤、防火墙、NAT 等。允许您更改 MAC 地址、控制哪些应用程序侦听哪个地址等。

  • “我已经使用过modprobe”也是没有意义的:modprobe是一种加载内核模块的方式,如果你不能说出你想使用哪个内核模块,用于什么目的,以及为什么它不首先自动加载,这句子没有传达任何信息。

另外,请阅读XY问题:当您想做 X,并且认为您可能需要做 Y 才能实现 X,总是询问有关X的事情然后提到你尝试过 Y。在很多情况下(比如这里)Y 是完全错误的。

相关内容