等效于/ dev / null的IP地址


92

是否有一个IP地址会导致任何发送的数据包被忽略(黑洞)?

我知道我总是可以用IP地址设置路由器,然后让它忽略发送给它的所有数据包,但是是否存在这样的事情来为我省去麻烦呢?


2
有些设备(例如San旧金山思科公司的路由器和交换机)使用Null接口,该接口可能被用作恶意流量的黑洞。应该将一条路由指向该Null接口,以便丢弃该路由的所有流量。
Adriano P


2
我很好奇,为什么将这个问题标记为“防止垃圾邮件”?
Mike Pennington 2014年

@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

5
@Nikolay是的,这和网站一样是个玩笑。请参阅他们的Github自述文件:“主要是有关企业,云,*即服务和对其的批评。 ”(重点是我的)
wchargin 2014年

Answers:


84

RFC 6666中所述,IPV6中特别有一个黑洞前缀,它是100 :: / 64。IP4没有那样的明显黑洞,但是保留块之一上不存在的主机将具有这种效果。(例如240.0.0.0/4被“保留以供将来使用”,并且不会被任何路由。)


32
在实现将来使用之前,将数据发送到保留给将来使用的东西只是一个好主意。
corsiKa 2014年

5
很好,尽管我非常怀疑IP4是否会再次扩展。
班德拉米

8
但是路由器是否可以保证丢弃数据包?因为如果它返回ICMP“目的地不可达”,那么它将不是OP所要求的。
WGH 2014年

41

网络黑洞有这样的东西。

如果网络中没有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这里有更多示例。

整个子网也可以是一个黑洞(空路由)。


4
如果您希望某些将接收TCP流量但不执行任何操作,则可以使用nc(或netcat)快速设置。正如@Nikolay所说,没有自动执行此操作的“黑洞” IP。
LawrenceC 2014年

2
至少不在IP4中
Bandrami 2014年

@Bandrami:那IPv6呢?
user2357112 2014年

2
@ user2357112,看看他的答案。它在我的下面。
VL-80

19

尽管这不是一个黑洞,但您可能还想考虑出于测试/示例目的而预留的IP (根据RFC 5737),特别是如果您的目标是“安全地不工作的默认值”时。

  • 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等),但是肯定没有人应该已经在使用它们。


1
他们也可以拒绝而不是丢弃,所以……
mirabilos

1
192.0.2.0似乎可以在我的第一次尝试上工作,到目前为止尚未返回任何数据包。我将做更多测试。
泰勒·德顿

16

这样就没有“标准黑洞地址”,也没有任何要求。您没有说您实际要实现的目标,所以我不能为您提供帮助,但是这里有一些错误的解决方案,可以按您的要求回答:

  • 您可以使用网络上未使用的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将确保发送到该“网络”的所有内容都将被静默删除,而不会打扰任何网关,甚至不会在实际的网络接口上引起流量。

同样,即使您认为这很方便,您实际上也可能根本不需要这些,这不是,它令人困惑且不明显,也不是解决您实际问题的好方法。


254.0.0.1没有黑洞数据包,我收到“传输失败”错误。
泰勒·德登

7
+1表示“您实际上可能根本不需要任何...”
RBerteig 2014年


2

测试范围

我可能会建议使用“ TEST-NET”地址范围之一,“用于文档和示例。不应公开使用”

192.0.2.0/24
198.51.100.0/24
203.0.113.0/24

“ Bogon”(伪造/伪造)范围

我不确定在这里要说的是什么,这似乎更像是Internet网关将提供的一种做法,而不是一种具体的方式来实现路由到不应出现的地方的数据包


当地范围

也有回送地址范围127.0.0.0/8,例如127.0.0.255。尽管那里仍然有可能存在事物,特别是本地计算机上的任何服务,但至少您不会干扰网络上的任何计算机(除非您认为网络服务由其他网络服务支持)。

127.0.0.0/8


非法目的地范围

也许0.0.0.0也可以使用非法地址,尽管0.0.0.0/8保留用于“用于向当前(“此”)广播消息”,因此存在广播的风险。

0.0.0.0/8

无效路线的维基百科页面指出:

空路由通常配置有特殊的路由标志,但是也可以通过将数据包转发到非法IP地址(例如0.0.0.0)或环回地址来实现。


参考:https : //en.wikipedia.org/wiki/Reserved_IP_addresses


我总体上还是选择localhost在最高端口上使用65535,因为我想确保没有流量离开主机。
ThorSummoner

如果指定端口,则还必须指定每个协议:TCP,UDP等,这样做时,某些流量可能会逃避您的规则(例如ICMP)。
德雷克斯

1

要考虑的一件事(在您的特定情况下可能会或可能不会出现问题)是,如果将流量重定向到不存在的IP地址,则路由器和/或主机可能会尝试对该地址连续进行ARP,这可能是一件坏事。

如果为该幻像地址配置静态ARP <-> IP绑定,则系统将始终具有解析的ARP条目,它将仅将带有该ARP地址(假定是伪造的)的数据包放在网上。交通实际上不会降落在任何地方。

同样,这可能不是您真正想要的,但这是值得考虑的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.