考虑由X-Forwarded-For HTTP标头提供的IP地址列表:


10.0.0.142,192.168.0.10,212.43.234.12,54.23.66.43


我想知道哪个是该列表中第一个可供公众访问的地址。我可以很容易地查看它们,但是我怎么知道哪些可以公开访问呢?在我看来(我那未经训练的眼睛)是10.0.0.142是工作站,192.168.0.10是内部代理,而212.43.234.12是可公开访问的地址,通过54.23.66.43的代理转发。有什么方法可以用代码来计算吗?

我的第一个直觉是,不能公开访问以10.192.开头的地址,但是http://simplesniff.com显示我的家庭IP地址是192.117.111.61。是否有公式确定哪些地址是公共地址,哪些保留了私有地址?请注意,即使尝试对有问题的服务器执行ping操作也可能无济于事,因为某些服务器无法响应ping,并且我的本地网络上也可能有一个地址也与内部地址匹配。

评论

我还要指出,即使您发现一个可路由的地址,一些公司也会在内部滥用公共地址空间。我对一个非常大的知名公司名称有第一手了解,在公司内部网络上莫名其妙地使用了AFRINIC和AT&T IPv4空间而不是RFC1918空间...它们代理了所有HTTP通信...以及X-Forwarded -对于来自其公司网络的标头,将显示他们实际上不拥有的公共空间。

@MikePennington对此也有第一手经验,除了他们使用的是APNIC编号。当内部计算机(尤其是那些找到目标位于其子网中的计算机)尝试访问其中一台公共服务器时,也会引起问题。

@MikePennington-对于使用在专用网络(即Internet)之外实际使用的公用IPv4地址的专用网络,专用网络内部的人将如何访问IP地址在相同范围内的公共站点?该请求是否会路由到专用网络中的某些计算机(甚至可能是他们自己的计算机)?

盲目相信x-forward-for是一个坏主意。对于任何滥用者而言,设置一个虚假的x-forward-for标头声明他们想要的任何地址都是很简单的。

#1 楼

RFC 1918定义了专用IP地址范围。在此处查看。

从该文档:




专用地址空间

Internet分配号码授权( IANA)已为私人互联网保留了以下三个IP地址空间块:

10.0.0.0-10.255.255.255(前缀10/8)

172.16.0.0-172.31.255.255(172.16 / 12前缀)

192.168.0.0-192.168.255.255(192.168 / 16前缀)



评论


谢谢。我发现127.0.0.0/16(可能还有更多)不在该列表中很有趣。

– dotancohen
13年7月10日在14:43

本地主机在tools.ietf.org/html/rfc6761中定义

–达里尔·布雷滕(Darryl Braaten)
13年7月10日在15:11

@dotancohen:回送块是/ 8,而不是/ 16,并且不在该列表中,因为它不是私有地址空间。


13年7月10日在19:35

@Blrfl:谢谢,我不确定环回块的宽度。我实际上不是在寻找私有地址,而是非公共地址(其子集是私有的)。除了RFC 1918/6890地址和127.0.0.0/8空间之外,还有其他明显的非公共地址吗?

– dotancohen
13年7月11日在4:59

zh.wikipedia.org/wiki/…240.0.0.0-254.255.255.254(240.0.0.0/4和255.0.0.0/8)

–David Houde
13年7月11日在7:49



#2 楼

除了原始的RFC 1918空间(现在已更新为RFC6890)之外,还有其他一些未公开的块,例如192.0.2.0。此外,某人可能具有有效的IPv4空间,而公共互联网上并未公布该空间。

最简单的方法是telnet route-views.oregon-ix.net,以rviews登录并寻找自己...这是AS7018(AT&T)宣布的一些“ 192”空间。 ref RFC6890)无处可寻...
route-views>sh ip route 192.199.1.0
Routing entry for 192.199.1.0/24
  Known via "bgp 6447", distance 20, metric 0
  Tag 7018, type external
  Last update from 12.0.1.63 3w1d ago
  Routing Descriptor Blocks:
  * 12.0.1.63, from 12.0.1.63, 3w1d ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 7018

route-views>


评论


RFC 1918尚未由RFC 6890更新(或未更新)。RFC 6890只是“重申了将IPv4地址块(192.0.0.0/24)分配给IANA。它还指示IANA重组其IPv4和IPv6专用地址。注册表。”它不会更新专用的IPv4专用地址注册表项,并且IPv4地址块192.0.0.0/24被归类为“ IETF协议分配”。

–一次
2013年9月24日,下午1:21

@ one.time,RFC 6890包含RFC 1918中保留的地址空间的超集。也许您应该更仔细地阅读我的答案:-)

–迈克·彭宁顿
2013年9月24日在1:33



IPv4块192.0.0.0/24是RFC 6890的主要要点,因此我参考它是为了很好地衡量并与RFC 1918进行比较。阅读您的帖子时激发了我的好奇心。除了为包含192.0.0.0.24的IPv4和IPv6的专用地址注册表项进行更新之外,RFC 6890并不是对RFC 1918的更新。 HTH ;-)

–一次
2013年9月24日在1:54

@ one.time,古怪地讲RFC 6890并不是对RFC 1918的更新。从功能上讲,在考虑公共BGP表中有效的IP空间时,应该使用RFC 6890而不是RFC 1918 ...

–迈克·彭宁顿
2013年9月24日,下午1:56

#3 楼

Team Cymru为IPv4和IPv6提供了一个纯文本参考,您可以使用它来过滤出未分配/保留/私有IP地址-它既是众所周知的前缀的简单列表,又以更大的列表提供,其中包括

它们还运行BGP Bogon服务器,您可以请求对等的免费对等连接-如果您无法运行默认的免费区域到Internet,这将非常有用。

评论


坦白说,“未分配”是没有用的过滤功能,过滤会导致更多的问题,无法解决。实际的多边形很容易,因为它们非常稳定/静态。

–ytti
13年7月10日在13:38

好的,那就别用了,就像我说的那样,它们提供了多种口味。

–奥利普
13年7月10日在13:54

#4 楼

有许多范围是为各种用例保留的。 IANA拥有权威且全面的清单。它包括RFC1918,RFC6761以及最近的保留,例如100.64 / 10 CGN块。如果您在此处找到任何地址,则它们可能会以某种方式在专用网络中使用,因此应该丢弃它们,以便其他人优先搜索第一个公共地址。