Comment vérifier une adresse IP publique valide?

39

Considérez une liste d'adresses IP telle que fournie par l'en-tête HTTP X-Forwarded-For :

10.0.0.142, 192.168.0.10, 212.43.234.12, 54.23.66.43

J'aimerais savoir quelle est la première adresse accessible au public de cette liste. Je peux les regarder assez facilement, mais comment puis-je savoir lesquels sont accessibles au public? Il me semble (mon œil non averti) qu’il 10.0.0.142s’agit d’un poste de travail, d’ 192.168.0.10un proxy interne et d’ 212.43.234.12une adresse accessible au public qui est transmise via le proxy à 54.23.66.43. Est-il possible de calculer cela dans le code?

Ma première intuition est que les adresses qui commencent par 10.ou 192.ne sont pas accessibles publiquement, mais http://simplesniff.com révèle que mon adresse IP personnelle est 192.117.111.61. Existe-t-il une formule permettant de déterminer quelles adresses sont publiques et quelles adresses sont réservées privées? Notez que même essayer d’envoyer une requête ping au serveur en question risque de ne pas aider car certains serveurs ne répondent pas à la requête ping et qu’il peut également y avoir une adresse sur mon réseau local qui correspond également à l’adresse interne.

dotancohen
la source
3
Je tiens également à souligner que même si vous trouvez qu'une adresse est routable, certaines entreprises abusent de leur espace d'adresses en interne. J'ai une connaissance directe d'un nom d'entreprise très grand et bien connu qui utilise inexplicablement les espaces IPv4 d' AFRINIC et d'AT & T sur son réseau d'entreprise interne au lieu de l'espace RFC1918 ... ils proxy tout le trafic HTTP ... et le X-Forwarded -En effet, l'en-tête de leur réseau d'entreprise affiche l'espace public dont ils ne sont pas propriétaires.
Mike Pennington
L'expérience de première main de MikePennington est la même, sauf qu'ils utilisaient des numéros APNIC. Peut également poser problème lorsqu'un
ordinateur
@ MikePennington - pour un réseau privé utilisant des adresses IPv4 pupliques qui sont réellement utilisées en dehors du réseau privé (par exemple: Internet), comment une personne du réseau privé peut-elle accéder à un site public avec une adresse IP de la même plage? Cette demande ne serait-elle pas acheminée vers un ordinateur (même peut-être même le leur) au sein du réseau privé?
Kevin Fegan
Avoir une confiance aveugle dans x-forwarded-for est une mauvaise idée. Il est trivial pour tout abuseur de définir un faux en-tête x-forwarded-for réclamant l'adresse souhaitée.
Peter Green

Réponses:

24

La RFC 1918 définit les plages d'adresses IP privées. Regardez ici.

A partir de ce document:

  1. Espace d'adressage privé

    L’autorité IANA (Internet Assigned Numbers Authority) a réservé les trois blocs suivants de l’espace adresse IP pour les internets privés:

    10.0.0.0 - 10.255.255.255 (préfixe 10/8)

    172.16.0.0 - 172.31.255.255 (préfixe 172.16 / 12)

    192.168.0.0 - 192.168.255.255 (préfixe 192.168 / 16)

GerryEgan
la source
Merci. Je trouve intéressant que 127.0.0.0/16(et peut-être plus) ne figurent pas sur cette liste.
dotancohen
5
localhost est défini dans tools.ietf.org/html/rfc6761
Darryl Braaten
4
@dotancohen: le bloc de bouclage est un / 8, pas un / 16 et ne figure pas dans cette liste car il ne s'agit pas d'un espace d'adressage privé.
Blrfl
@Blrfl: Merci, je n'étais pas sûr de la largeur du bloc de bouclage. En fait, je ne cherche pas à identifier les adresses privées, mais plutôt les adresses non publiques (un sous-ensemble de celles-ci étant privées). Outre les adresses RFC 1918/6890 et l'espace 127.0.0.0/8, existe-t-il d'autres adresses manifestement non publiques que l'on pourrait rencontrer?
dotancohen
1
en.wikipedia.org/wiki/… 240.0.0.0 - 254.255.255.254 (240.0.0.0/4 et 255.0.0.0/8)
David Houde
37

Outre l'espace RFC 1918 d'origine (qui est maintenant mis à jour vers la RFC6890 ), plusieurs autres blocs, tels que 192.0.2.0, ne sont pas annoncés publiquement. En outre, il est possible que quelqu'un dispose d'un espace IPv4 valide qui n'est tout simplement pas annoncé sur Internet.

La chose la plus simple à faire est de vous telnet route-views.oregon-ix.netconnecter rviewset de chercher par vous-même ... par exemple, il s'agit d'un espace "192" annoncé par AS7018 (AT & T) ...

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>

D'autre part, vous verrez que 192.0.2.0/24 (réf. RFC6890 ) est introuvable.

route-views>sh ip route 192.0.2.0 255.255.255.0
% Subnet not in table
route-views>

169.254.0.0/16 (ou plus) n'est pas non plus ...

route-views>sh ip route 169.254.0.0 255.255.0.0 longer
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 128.223.51.1 to network 0.0.0.0

route-views>
Mike Pennington
la source
1
La RFC 1918 n’a pas été mise à jour dans la RFC 1918. La RFC 6890 réitère simplement l’attribution du bloc d’adresses IPv4 (192.0.0.0/24) à l’IANA. Elle ordonne également à l’IANA de restructurer ses adresses IPv4 et spéciales IPv6. Registries. "Il ne met pas à jour les entrées de registre d'adresses IPv4 à usage spécial pour une utilisation privée et le bloc d'adresses IPv4 192.0.0.0/24 est classé dans la catégorie" Affectations de protocole IETF ".
one.time
2
@ one.time, la RFC 6890 contient un sur-ensemble de l'espace d'adressage réservé dans la RFC 1918. Je ne vois pas pourquoi vous parlez de 192.0.0.0/24; Peut-être devriez-vous relire plus attentivement ma réponse :-)
Mike Pennington le
le bloc IPv4 192.0.0.0/24 est l’un des principaux points de discussion du RFC 6890; j’y ai donc fait référence pour une bonne mesure et une comparaison avec le RFC 1918. "En plus de l’espace original RFC 1918 (qui est maintenant mis à jour en RFC6890)" a suscité ma curiosité en lisant votre post. Outre une mise à jour des entrées de registre d'adresses spécifiques pour IPv4 et IPv6 pour l'inclusion de 192.0.0.0.24, la RFC 6890 n'est pas une mise à jour de la RFC 1918. Je souhaitais simplement faire une observation concernant l'exactitude de la déclaration. HTHs ;-)
one.time
5
@ one.time, pédante RFC 6890 n'est pas une mise à jour RFC 1918. Fonctionnellement, on doit utiliser la RFC 6890 au lieu de la RFC 1918 lorsque l'on considère l' espace IP qui est valable dans une table publique ... BGE
Mike Pennington
13

Team Cymru fournit une référence bogon pour IPv4 et IPv6 que vous pouvez utiliser pour filtrer les adresses IP non attribuées / réservées / privées - elle est proposée à la fois comme une simple liste de préfixes bien connus et également dans une liste beaucoup plus grande comprenant un espace non encore attribué par les RIR.

Ils exécutent également un serveur BGP bogon auquel vous pouvez demander un peering gratuit - une valeur inestimable si vous ne pouvez pas exécuter une zone sans défaut sur Internet.

Olipro
la source
2
Franchement 'non assigné' est quelque chose qu'il est inutile de filtrer, ce qui cause beaucoup plus de problèmes qu'il n'en résout. Et les bogons actuels sont faciles, car ils sont très stables / statiques.
Ytti
2
D'accord, alors n'utilisez pas celui-là, comme je l'ai dit, ils offrent une variété de saveurs.
Olipro
2

Un certain nombre de plages sont réservées à différents cas d'utilisation. IANA a la liste complète et faisant autorité . Il inclut les RFC1918, RFC6761 ainsi que des réservations plus récentes comme le bloc 100.64 / 10 CGN. Si vous trouvez des adresses qui s'y trouvent, elles sont probablement utilisées d'une manière ou d'une autre dans un réseau privé et doivent être supprimées au profit des autres à la recherche de la première adresse publique.

kll
la source