Як перевірити дійсну публічну IP-адресу?


39

Розглянемо список IP-адрес, передбачених заголовком HT-X-Forwarded-For :

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, а також у моїй локальній мережі може бути адреса, яка також відповідає внутрішній адресі.


3
Я також хотів би зазначити, що навіть якщо ви знайдете адресу, яка є маршрутизованою, деякі компанії зловживають простором публічної адреси всередині країни. Я знаю з перших рук про дуже велике і відоме корпоративне ім'я, яке незрозуміло використовує простір AFRINIC і AT&T IPv4 у їх внутрішній корпоративній мережі замість простору RFC1918 ... вони проксі весь трафік HTTP ... і X-Forwarded -Заголовок їхньої корпоративної мережі покаже публічний простір, яким вони фактично не володіють.
Майк Пеннінгтон

@MikePennington також з цього досвіду, за винятком випадків, коли вони використовували номери APNIC. Може також викликати проблему, коли внутрішня машина (особливо ті, які знаходять призначення у своїй підмережі) намагається отримати доступ до одного із загальнодоступних серверів ...
emynd

@MikePennington - для приватної мережі з використанням учнівських IPv4-адрес, які фактично використовуються поза приватною мережею (тобто Інтернетом), як би хтось із приватної мережі дійшов до загальнодоступного сайту з IP-адресою в тому ж діапазоні? Чи не буде цей запит переадресовано на якийсь комп’ютер (навіть, можливо, власний комп'ютер) у приватній мережі?
Кевін Феган

Сліпо довіряти x-forwarded-for - це погана ідея. Для будь-якого кривдника неправдиво встановити підроблений заголовок x-forwarded-for із зазначенням будь-якої потрібної адреси.
Пітер Грін,

Відповіді:


24

RFC 1918 визначає приватні діапазони IP-адрес. Погляньте тут.

З цього документа:

  1. Приватний адресний простір

    Інтернет-адміністрація номерів (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

5
localhost визначений у tools.ietf.org/html/rfc6761
Darryl

4
@dotancohen: Блок зворотного зв'язку - це / / 8, а не / 16, і його немає в цьому списку, оскільки це не приватний адресний простір.
Blrfl

@Blrfl: Дякую, я не знав, наскільки широкий блок петлі. Я насправді не хочу визначати приватні адреси, а скоріше непублічні адреси (підмножина яких є приватними). Крім адрес RFC 1918/6890 та простору 127.0.0.0/8, чи є інші, очевидно, непублічні адреси, на які можна натрапити?
dotancohen

1
en.wikipedia.org/wiki/… 240.0.0.0 - 254.255.255.254 (240.0.0.0/4 та 255.0.0.0/8)
Девід Хоуд,

37

Крім оригінального простору RFC 1918 (який зараз оновлюється до RFC6890 ), є ще кілька блоків, таких як 192.0.2.0, які не оголошуються публічно. Крім того, можливо, у когось є дійсний IPv4 простір, який просто не оголошується в загальнодоступному Інтернеті.

Найпростіше зробити це telnet route-views.oregon-ix.net- увійти в систему rviewsі шукати себе ... наприклад, це простір "192", оголошений 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>

З іншого боку, ви побачите, що 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>

Не становить 169.254.0.0/16 (або довше) ...

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>

1
RFC 1918 не було оновлено (або) RFC 6890. RFC 6890 просто " повторює присвоєння адресному блоку IPv4 (192.0.0.0/24) IANA. Він також доручає IANA реструктурувати свої IPv4 та IPv6 спеціальні адреси Регістри ". Він не оновлює записи реєстру адрес IPV4 спеціального призначення для приватного використання, а блок адрес 192v.0.0/24 IPv4 класифікується як" Призначення протоколу IETF ".
one.time

2
@ one.time, RFC 6890 містить надмножину адресного простору, зарезервованого в RFC 1918. Я поняття не маю, чому ви говорите про 192.0.0.0/24; можливо, вам варто перечитати мою відповідь уважніше :-)
Майк Пеннінгтон,

Блок 192.0.0.0/24 IPv4 є однією з основних точок розмови RFC 6890, тому я посилався на нього для гарного виміру та порівняння з RFC 1918. "Крім оригінального простору RFC 1918 (який зараз оновлений до RFC6890)", це те викликав мою цікавість під час читання вашої публікації. Окрім оновлення записів реєстру спеціальних цілей для IPv4 та IPv6 для включення 192.0.0.0.24, RFC 6890 не є оновленням до RFC 1918. Я просто хотів надати спостереження щодо точності висловлювання. HTHs ;-)
one.time

5
@ one.time, педантично RFC 6890 не є оновленням до RFC 1918. Функціонально слід використовувати RFC 6890 замість RFC 1918, коли розглядається ІР-простір, який дійсний у загальнодоступній таблиці BGP ...
Майк Пеннінгтон,

13

Команда Cymru надає посилання на bogon як для IPv4, так і для IPv6, які можна використовувати для фільтрації непризначених / зарезервованих / приватних IP-адрес - він пропонується як простим списком відомих префіксів, так і набагато більшим списком, що включає простір, який досі не підписані RIR.

Вони також запускають сервер завантаження BGP, на який ви можете подати запит на безкоштовний загляд - неоціненний, якщо ви не можете запустити зону, яка не використовується за замовчуванням, до Інтернету.


2
Відверто кажучи, "непризначений" - це те, що марно фільтрувати, фільтруючи це, викликає набагато більше проблем, ніж вирішує. А фактичні богони прості, оскільки вони дуже стійкі / статичні.
ytti

2
Гаразд, тоді не використовуйте цього, як я вже сказав, вони пропонують різноманітні смаки.
Оліпро

2

Існує ряд діапазонів, які зарезервовані для різних випадків використання. IANA має авторитетний та вичерпний перелік . Він включає RFC1918, RFC6761, а також новіші застереження, такі як блок 100,64 / 10 CGN. Якщо ви знайдете там будь-які адреси, вони, ймовірно, якимось чином використовуються в приватній мережі, і їх слід відкинути на користь інших у пошуку першої публічної адреси.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.