Jak sprawdzić poprawność publicznego adresu IP?

39

Rozważ listę adresów IP podaną w nagłówku HTTP X-Forwarded-For :

10.0.0.142, 192.168.0.10, 212.43.234.12, 54.23.66.43

Chciałbym wiedzieć, który jest pierwszym publicznie dostępnym adresem na tej liście. Mogę dość łatwo je przejrzeć, ale jak mogę stwierdzić, które są publicznie dostępne? Wydaje mi się (moje niewprawne oko), że 10.0.0.142jest stacją roboczą, 192.168.0.10jest wewnętrznym serwerem proxy i 212.43.234.12jest publicznie dostępnym adresem przesyłanym przez serwer proxy pod adresem 54.23.66.43. Czy jest jakiś sposób na obliczenie tego w kodzie?

Moją pierwszą intuicją jest to, że adresy zaczynające się od 10.lub 192.nie są publicznie dostępne, ale http://simplesniff.com ujawnia mój domowy adres IP 192.117.111.61. Czy istnieje formuła określająca, które adresy są publiczne, a które prywatne? Zauważ, że nawet próba pingowania danego serwera może nie pomóc, ponieważ niektóre serwery nie odpowiedzą na ping, a także może istnieć adres w mojej sieci lokalnej, który również pasuje do adresu wewnętrznego.

dotancohen
źródło
3
Chciałbym również zauważyć , że nawet jeśli okaże się, że adres jest routowalny, niektóre firmy wewnętrznie nadużywają publicznej przestrzeni adresowej. Mam wiedzę z pierwszej ręki o bardzo dużej i dobrze znanej nazwie korporacyjnej, która w niewytłumaczalny sposób wykorzystuje przestrzeń AFRINIC i AT&T IPv4 w wewnętrznej sieci firmowej zamiast przestrzeni RFC1918 ... zastępuje cały ruch HTTP ... i X-Forwarded -W nagłówku z ich sieci korporacyjnej pokaże przestrzeń publiczną, której tak naprawdę nie posiadają.
Mike Pennington,
@MikePennington również z tego doświadczenia, z wyjątkiem tego, że korzystali z numerów APNIC. Może również powodować problem, gdy maszyna wewnętrzne (zwłaszcza tych, które znaleźć miejsce docelowe, aby być w ich podsieci) próbuje uzyskać dostęp z serwerów publicznych ...
emynd
@MikePennington - w przypadku prywatnej sieci korzystającej ze szczeniaczych adresów IPv4, które faktycznie są używane poza siecią prywatną (tj. Internetem), w jaki sposób ktoś w sieci prywatnej mógłby dotrzeć do strony publicznej o adresie IP z tego samego zakresu? Czy to żądanie nie zostanie skierowane do jakiegoś komputera (a może nawet własnego komputera) w sieci prywatnej?
Kevin Fegan
Ślepe ufanie, że x-forwarded-for jest złym pomysłem. Dla każdego sprawcy nie jest łatwe ustawienie fałszywego nagłówka z przekierowaniem x, który żąda dowolnego adresu.
Peter Green

Odpowiedzi:

24

RFC 1918 definiuje zakresy prywatnych adresów IP. Spójrz tutaj.

Z tego dokumentu:

  1. Prywatna przestrzeń adresowa

    Urząd przydzielania numerów internetowych (IANA) zarezerwował następujące trzy bloki przestrzeni adresowej IP dla prywatnych internetów:

    10.0.0.0 - 10.255.255.255 (prefiks 10/8)

    172.16.0.0 - 172.31.255.255 (prefiks 172.16 / 12)

    192.168.0.0 - 192.168.255.255 (prefiks 192.168 / 16)

GerryEgan
źródło
Dziękuję Ci. Uważam za interesujące, że 127.0.0.0/16(i być może więcej) nie ma na tej liście.
dotancohen,
5
localhost jest zdefiniowany w tools.ietf.org/html/rfc6761
Darryl Braaten
4
@dotancohen: Blok sprzężenia zwrotnego to a / 8, nie a / 16 i nie ma go na tej liście, ponieważ nie jest to prywatna przestrzeń adresowa.
Blrfl,
@Blrfl: Dziękuję, nie byłem pewien, jak szeroki jest blok sprzężenia zwrotnego. Właściwie nie chcę identyfikować adresów prywatnych, ale adresy niepubliczne (których podzbiór jest prywatny). Czy oprócz adresów RFC 1918/6890 i przestrzeni 127.0.0.0/8 istnieją inne oczywiście niepubliczne adresy, na które można się natknąć?
dotancohen,
1
en.wikipedia.org/wiki/... 240.0.0.0 - 254.255.255.254 (240.0.0.0/4 i 255.0.0.0/8)
David Houde,
37

Oprócz oryginalnej przestrzeni RFC 1918 (która jest teraz zaktualizowana do RFC6890 ), istnieje kilka innych bloków, takich jak 192.0.2.0, które nie są ogłaszane publicznie. Ponadto możliwe jest, że ktoś ma prawidłową przestrzeń IPv4, która po prostu nie jest ogłaszana w publicznym Internecie.

Najprostszą rzeczą do zrobienia jest telnet route-views.oregon-ix.netzalogowanie się rviewsi poszukiwanie siebie ... na przykład jest to trochę „192” miejsca ogłoszonego przez 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>

Z drugiej strony zobaczysz, że nigdzie nie można znaleźć 192.0.2.0/24 (ref RFC6890 ) ...

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

Ani 169.254.0.0/16 (lub dłużej) ...

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
źródło
1
RFC 1918 nie został zaktualizowany przez (lub do) RFC 6890. RFC 6890 po prostu „ przypomina przypisanie bloku adresu IPv4 (192.0.0.0/24) do IANA. Instruuje także IANA, aby zrestrukturyzował swój adres specjalny IPv4 i IPv6 Rejestry. ”Nie aktualizuje wpisów rejestru specjalnego adresu IPv4 do użytku prywatnego, a blok adresu IPv4 192.0.0.0/24 jest sklasyfikowany jako„ Przypisania protokołu IETF ”.
one.time 24.09.13
2
@ one.time, RFC 6890 zawiera nadzbiór przestrzeni adresowej zarezerwowanej w RFC 1918. Nie mam pojęcia, dlaczego mówisz o 192.0.0.0/24; być może powinieneś przeczytać uważniej moją odpowiedź :-)
Mike Pennington
blok 192.0.0.0/24 protokołu IPv4 jest głównym tematem RFC 6890, więc odwołałem się do niego w celu dokładnego porównania i porównania do RFC 1918. „Oprócz oryginalnej przestrzeni RFC 1918 (która jest teraz zaktualizowana do RFC6890)” wzbudził moją ciekawość podczas czytania twojego postu. Oprócz aktualizacji wpisów rejestru adresów specjalnych dla IPv4 i IPv6 w celu włączenia 192.0.0.0.24, RFC 6890 nie jest aktualizacją do RFC 1918. Chciałem tylko przedstawić spostrzeżenie dotyczące dokładności tego oświadczenia. HTHS ;-)
one.time
5
@ one.time, pedantycznie RFC 6890 nie jest aktualizacją RFC 1918. funkcjonalnie, należy stosować RFC 6890 RFC 1918 zamiast rozważając przestrzeń IP, który jest ważny w tabeli BGP publiczny ...
Mike Pennington
13

Team Cymru zapewnia bogon odwołanie zarówno do IPv4, jak i IPv6, którego można użyć do odfiltrowania nieprzypisanych / zarezerwowanych / prywatnych adresów IP - jest oferowany zarówno jako prosta lista dobrze znanych prefiksów, jak również na znacznie większej liście, która zawiera przestrzeń, która jest jak dotąd nieprzypisane przez RIR.

Działają również na serwerze Bogon BGP, na który można poprosić o darmową komunikację równorzędną - nieocenione, jeśli nie można uruchomić w Internecie strefy wolnej od domyślnych.

Olipro
źródło
2
Szczerze mówiąc „nieprzypisany” jest czymś, co nie nadaje się do filtrowania, filtrowanie powoduje o wiele więcej problemów niż rozwiązuje. Rzeczywiste wózki są łatwe, ponieważ są bardzo stabilne / statyczne.
ytti
2
OK, więc nie używaj tego, jak powiedziałem, oferują różnorodne smaki.
Olipro,
2

Istnieje wiele zakresów zarezerwowanych dla różnych przypadków użycia. IANA ma autorytatywną i wyczerpującą listę . Obejmuje RFC1918, RFC6761, a także nowsze rezerwacje, takie jak blok CGN 100,64 / 10. Jeśli znajdziesz tam jakieś adresy, prawdopodobnie są one w jakiś sposób wykorzystywane w sieci prywatnej i powinny zostać odrzucone na rzecz innych w poszukiwaniu pierwszego adresu publicznego.

kll
źródło