Чому Linux приймає трафік за неконфігурованими адресами зворотного зв'язку?


3

Щонайменше у двох версіях Linux (Ubuntu 9 та Debian 7) я помітив, що, хоча у мене є лише одна петля, налаштована на lo (стандартна 127.0.0.1 одна), вона із задоволенням приймає пакети ВСЕ 127.xxx адреса. Мені це здалося досить дивним, оскільки інші варіанти Unix скидають пакети для неконфігурованих адрес.

  • Чому / як це робиться? Це не відбувається для будь-якого іншого діапазону адрес, чи не так?
  • Як змусити мене зробити більш розумну (і безпечну!) Річ і насправді звернути увагу на налаштовані адреси?

Редагувати : Я читав RFC 5735, і це досить неохайна інтерпретація того, що переходити з "адрес у всьому блоці 127.0.0.0/8 не легітимно з'являються в мережі ніде" до ", ця машина повинна приймати пакети для всіх ці IP " . Зрештою, ви не бачите хостів, які приймають пакети для всіх 172.16.0.0/12, лише тому, що у них налаштована одна з цих адрес.

Мій намір полягав не в тому, щоб запитати про специфікації для адрес, а про те, щоб Linux реалізував логіку прийому пакетів. "Чому" і "як" тут означає, що у фактичному ядрі Linux викликає нормальне ", чи не обійдений цей пакет для мене" логікою?

Відповіді:


4

Цифрова петля особлива. Це весь простір 127.0.0.0/8, і він ніколи не залишає машини. Це єдиний виняток для прослуховування лише налаштованих адрес, якщо він знаходиться в циклі, це спеціальний.

Я не можу придумати жодних наслідків для цього щодо безпеки, оскільки ці адреси ніколи не можуть бути у фізичній мережі.


1

Звичайна логіка маршруту не обходить, і ця конфігурація є більш безпечною, ніж запропонована вами.

Спочатку давайте подивимось на таблицю маршрутизації, щоб побачити, що відбувається.

# ip address show dev lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
# ip route show table 0
...
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1

Ми можемо бачити, що інтерфейс налаштований з /8префіксом, який змушує Linux автоматично генерувати маршрут, за 127.0.0.0/8яким йде до loінтерфейсу. Це виконує вимогу, щоб усі пакети для цього блоку не з’являлися в мережі ніде і не поверталися всередину хоста.

Без цього маршруту пакети для 127.0.0.0/8мережі не будуть петлюватися назад у хості і потенційно можуть бути направлені на мережевий інтерфейс. Це ввело б незахищеність та невідповідність RFC.

Майте на увазі, що "петля" означає саме це. Під час звичайного інтерфейсу пакет, що надсилається до нього, виходить, на інтерфейсі циклічного зворотного зв'язку пакет, відправлений до нього, виходить і негайно повертається. Це те, що означає зворотний зв'язок і чому ви бачите цей трафік.


0

Це не специфічно для Linux (Win працює точно так само), скоріше слідуючи технічним характеристикам (як зазначив Ерік): від RFC 5735 - Адреса IPv4 для спеціального використання

127.0.0.0/8 - This block is assigned for use as the Internet host
   loopback address.  A datagram sent by a higher-level protocol to an
   address anywhere within this block loops back inside the host.  This
   is ordinarily implemented using only 127.0.0.1/32 for loopback.  As
   described in [RFC1122], Section 3.2.1.3, addresses within the entire
   127.0.0.0/8 block do not legitimately appear on any network anywhere.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.