Linux
如何防止新的隔離虛擬介面監聽 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 容器綁定到最近創建的新介面,在某些埠中公開服務。
要在現有網卡之上模擬具有不同 MAC 的第二個(虛擬)乙太網卡,並且來自不同的命名空間(例如容器),您需要一個macvlan介面。
以下是如何在 Docker 容器中使用它們的說明。
您似乎對您嘗試的一些網路功能背後的原理有些困惑。也許以下有幫助:
eth0:0
只是該ifconfig
工具用於處理某個介面上的第二個 IP 地址的舊方法。如果你使用更新的工具之類的ip addr
,它只會顯示第二個 IP 地址eth0
。這僅適用於 OSI 級別 3,因此沒有不同的 MAC 地址,它不會像 docker 中那樣與網路命名空間互動,而且使用起來通常很痛苦,因為您必須確保每個應用程序都正確綁定到其中一個地址。並且此綁定是防止應用程序監聽 0.0.0.0 所必需的;沒有辦法一般地阻止“eth0:0
監聽來自0.0.0.0
”的流量(忽略那種形式的句子根本沒有意義;介面沒有監聽,iptables
允許您進行數據包過濾、防火牆、NAT 等。它不允許您更改 MAC 地址、控制哪些應用程序偵聽哪個地址等。- “我已經使用過
modprobe
”也沒有意義:modprobe
是一種載入核心模組的方法,如果你不能說你想使用哪個核心模組,用於什麼目的,以及為什麼它沒有首先自動載入,這個句子沒有傳達任何資訊。另外,請閱讀XY 問題:當您想做 X 並認為您可能需要做 Y 才能到達 X 時,請始終詢問有關 X的問題。然後提到你嘗試過 Y。在很多情況下(比如這裡)Y 是完全錯誤的。