題 IP地址,相當於/ dev / null


是否有一個IP地址會導致發送的任何數據包被忽略(黑洞)?

我知道我總是可以設置一個帶有IP地址的路由器,然後讓它忽略發送給它的所有數據包,但是存在這樣的事情以免我省事嗎?


87
2018-01-07 17:45


起源


有一些設備(如San Fran的路由器和交換機)思科 co。)使用Null接口,可以用作惡意流量的黑洞。應該指向一個到Null接口的路由,以便丟棄該路由的所有流量。 - Adriano P
你可能感興趣 devnull-as-a-service.com - wchargin
我很好奇,為什麼這個問題被標記為“垃圾郵件防範”? - Mike Pennington
@WChargin,我希望這是一個笑話 - devnull-as-a-service.com 似乎與網絡甚至沒有任何關係 看起來像廢話。 這是什麼: When we say "government" we mean NSA, CIA, FBI, TSA, Communist Party of China (CPC), Nestle, The Coca-Cola Company, the KGB, some of your coworkers and our friends (especially if there is something funny).? - VL-80
@Nikolay是的,這是一個笑話,網站也是如此。看他們的 Github README:“這主要是關於企業,雲,* - 一個服務 並批評它。“(強調我的) - wchargin


答案:


在IPV6中特別有一個黑洞前綴,如中所述 RFC 6666,它是100 :: / 64。 IP4沒有這樣的明確黑洞,但其中一個保留塊上不存在的主機會產生這種效果。 (例如,240.0.0.0 / 4是“保留供將來使用”,不會被任何內容路由。)


79
2018-01-07 18:04



將數據發送到保留供將來使用的內容只是一個好主意,直​​到實現未來的使用。 - corsiKa
非常好的一點,儘管我非常懷疑IP4會再次擴大。 - Bandrami
但路由器是否保證丟棄數據包?因為如果它返回ICMP“目標無法訪問”,那將不是OP所要求的。 - WGH


有網絡這樣的東西 黑洞

如果網絡中沒有IP地址為192.168.0.10的設備,則該IP地址是一種黑洞,它將“丟棄”所有流量,因為它不存在。

跟踪連接狀態(TCP)的協議可以檢測丟失的目標主機。 UDP不會發生這種情況,數據包只會死,而發送主機不會被告知。

您可以通過將其設置為防火牆來設置黑洞 默默 丟包(不要拒絕來自特定(或許多)地址。

據我所知,在TCP / IP版本4中沒有這樣的網絡標準地址可以為你做黑洞(謝謝 Bandrami)。

所以你有兩個選擇:

  1. 未分配給任何主機的IP地址;
  2. 主機具有防火牆,可以靜默地丟棄數據包或其變體,例如使用 netcat:(如建議的那樣 ultrasawblade)。

nc -vv -l 25 > /dev/null 將偵聽TCP端口25上的入站連接並將結果傳遞給 /dev/null。更多例子 這裡

整個子網也可以是黑洞(空路線)。


41
2018-01-07 17:56



如果你想要接收TCP流量的東西,但什麼也不做,可以快速設置 nc (要么 netcat)。正如@Nikolay所說,沒有一個“黑洞”IP可以自動執行此操作。 - LawrenceC
至少不是IP4 - Bandrami
@Bandrami:那麼IPv6怎麼樣? - user2357112
@ user2357112,只看他的 回答。它就在我的下方。 - VL-80


這樣沒有“標準黑洞地址”,也沒有任何要求。你沒有說你實際想要實現的目標,所以我無法幫助你這樣做,但是這裡有一些錯誤的解決方案可以解答你的問題:

  • 你可以使用 RFC1918地址 在您的網絡上沒有使用它,並依靠您的ISP為您丟棄它。例如,如果您只使用192.168的某些部分,則您的ISP將對10.255.255.1進行空路由(由於您的默認網關,它將獲得它)。
  • 您可以使用保留供將來使用的IP地址(並且可能永遠不會被使用);這是舊的“E級“範圍。它會像上面一樣,但即使你已經使用了所有的私有地址範圍(通過擁有比必要的更廣泛的網絡掩碼,我懷疑你將擁有數百萬個附加設備),它們也能正常工作。例如,254.0.0.1永遠不會(合法地)引用真實設備。
  • 在您需要它的機器上,您可以添加僅限目標;例如,使用上面未使用的地址, iptables -I OUTPUT -d 254.0.0.0/8 -j DROP將確保發送到該“網絡”的任何內容將被靜默刪除,而不是打擾任何網關,甚至導致實際網絡接口上的流量。

再說一遍,你可能實際上並不想要這些,即使你覺得它很方便 - 它不是,它是令人困惑和不明顯的,並不是你問題的真正解決方案。


16
2018-01-07 18:05



254.0.0.1沒有黑洞數據包,我收到“傳輸失敗”錯誤。 - Tyler Durden
為“您可能實際上並不想要任何此類......”+1 - RBerteig


雖然它不是黑洞,但您可能還需要考慮IP 留出用於測試/示例目的,特別是如果您的目標是“安全非工作默認值”。

  • 192.0.2.0/24 (TEST-NET-1),
  • 198.51.100.0/24 (TEST-NET-2)
  • 203.0.113.0/24 (TEST-NET-3)

網絡運營商應該將這些地址塊添加到不可路由的地址空間列表中,如果部署了數據包過濾器,那麼這個地址塊應該被添加到數據包過濾器中。

沒有 保證 到那些地址的數據包將被阻止(這取決於你的ISP等),但肯定沒有人應該已經使用它們。


15
2018-01-07 22:46



它們也可以被REJECTed而不是DROPped,所以...... - mirabilos
192.0.2.0似乎在我第一次嘗試時工作,到目前為止還沒有返回任何數據包。我會做更多的測試。 - Tyler Durden


一邊踩著你的問題,如何使用 “丟棄協議”


3
2018-01-08 09:14





測試範圍

我可能會建議一個“TEST-NET”地址範圍, “用於文檔和示例。不應公開使用”

192.0.2.0/24
198.51.100.0/24
203.0.113.0/24

“Bogon”(Bogus / Fake)山脈

我不知道在這裡說什麼,這似乎更像是一個互聯網網關提供的實踐,而不是一種特定的方式來實現一個路由到某個地方的數據包。


當地的山脈

還有環回地址範圍, 127.0.0.0/8,例如 127.0.0.255。雖然它仍然可以存在於那裡,特別是本地機器上的任何服務,至少你不會干擾網絡上的任何機器(除非你的網絡服務由其他網絡服務支持我猜)。

127.0.0.0/8


非法目的地範圍

也許是非法地址 0.0.0.0 也可以使用0.0.0.0/8保留 “用於廣播消息到當前(”this“)” 因此存在對此進行廣播的風險。

0.0.0.0/8

維基百科頁面 空路線 狀態:

空路由通常配置有特殊路由標誌,但也可以通過將數據包轉發到非法IP地址(如0.0.0.0)或環回地址來實現。


參考文獻: https://en.wikipedia.org/wiki/Reserved_IP_addresses


2
2018-01-08 20:21



我總體上選擇使用 localhost 在最高的港口 65535 但是,因為我想確保沒有流量離開主機。 - ThorSummoner
如果指定端口,則還必須指定每個協議:TCP,UDP等,這樣做,某些流量可能會逃避您的規則(例如ICMP)。 - Drakes


要考慮的一件事(對於您的特定方案可能存在或可能不是問題)是,如果您將流量重定向到不存在的IP地址,則路由器和/或主機 可以 嘗試持續ARP為該地址,這 可以 是一件壞事。

如果為此幻像地址配置靜態ARP < - > IP綁定,那麼系統將始終具有已解析的ARP條目,並且它只會將該數據包放在具有該ARP地址的網絡上(假設這是偽造的)並且交通不會真正降落在任何地方。

同樣,這可能不是你真正想要的,但值得考慮。


1
2018-01-07 21:42





根據您的嘗試,127.0.0.1是黑洞。

http://en.wikipedia.org/wiki/Loopback


-4



對不起,但問題是: Is there an IP address that would result in any packet sent to be ignored。 127.0.0.1 將不會 忽略數據包。 - VL-80