如何將網路介面用作唯讀?

如何將網路介面用作唯讀?

我的家庭實驗室中有一台交換機,我想用它進行一些實驗,特別是關於 VLAN 和我想更好地理解的其他一些協議。現在,這個開關(一個TP-Link 5 連接埠託管交換機)允許連接埠鏡像。

我想在我的電腦上分析這種鏡像流量,並儘可能少地從監控電腦引入「新」流量。我怎樣才能做到這一點?

我已經知道,您必須將 NIC 置於混雜模式才能接收原本不是發送到我的 PC 的封包。由於這通常是由 Wireshark 本身完成的,因此我不必擔心。

但是,我想確保在連接埠上引入盡可能少的“噪音”,以便真正查看其他連接埠上產生的流量。我已經找到了這個答案這建議禁用所有正在運行的服務(例如 DHCP 等),這是有道理的。但是,雖然這會大大減少噪音,但它可能無法阻止 ARP 解析或其他基於核心的網路互動。

我還了解到有一些專門用於此目的的協定(例如思科的SPAN),但我的交換器沒有這個能力。

所以我的問題是:如何將網路介面設定為唯讀?

答案1

在 Linux 上將介面變成「唯讀」最簡單的方法是應用出口tc過濾掉滴下的東西 一切

為了應用過濾器,有類別隊列規則必須就位。這普里奧qdisc是最簡單的classful qdisc,只是為了能夠在介面上使用過濾器,而不是為了它自己的功能。

最後設定介面乙太網路1“唯讀”:

tc qdisc add dev eth1 root prio
tc filter add dev eth1 matchall action drop

這會阻止該介面上的傳出流量。它甚至會阻止 RAW 套接字(否則不受防火牆影響),因此會阻止 IPv4 DHCP 用戶端(儘管有防火牆,它仍可以獲得位址)。仍然有辦法繞過它,但這只能是經過深思熟慮的。這是我所知道的兩個:

若要返回原始狀態的介面,只需刪除 qdisc:

tc qdisc del dev eth1 root

筆記:

  1. 我假設連接埠設定為鏡像模式的交換器可能已經將該連接埠設定為唯讀模式。

    這是需要測試的東西。如果為 true,則使用上面的過濾器或下面的項目符號 2. 將變得毫無意義。

  2. 處於 UP 狀態且未套用其他設定的介面仍可交換流量

    如果沒有先前的過濾器,即使具有未配置但處於 UP 狀態的介面也可能會留下流量。至少有以下兩種情況:

    • IPv6自動配置

      使用sysctl -w net.ipv6.conf.eth1.disable_ipv6=1

    • 如果 ARP 未停用(有ip link set eth1 arp off

      這種情況與更一般的資訊洩漏情況相同,其中LAN 中的系統可以探測以檢查某些系統是否也在使用具有已知位址的其他網路(包括虛擬網路):預設情況下,Linux 上的介面將應答ARP 請求為了任何其他地址任何其他接口。那是 部分弱者的主機型號

      例如,如果 OP 的系統使用預設設定來執行 livbirt QEMU/KVM,則 192.168.122.1/24 被指派給病毒0,那麼僅連接到未配置的 UP 介面的其他 Linux 系統在運行時仍然會透過它獲得 ARP 回應:

      arping -I eth0 192.168.122.1
      

      探測系統是否有到 192.168.122.1 的路由並不重要。這是關於 ARP(以及一個不關心路由的命令)的。 LXC 和 10.0.3.1 等也相同。

相關內容