Как избавиться от маршрута 169.254.0.0?

Вопрос или проблема

Это из команды route -n.

Таблица маршрутизации ядра IP
Назначение       Шлюз           Маска сети       Флаги Метрика Ссылка Использовать Интерфейс
0.0.0.0         192.168.1.x   0.0.0.0         UG    600    0        0 <wifi>
169.254.0.0     0.0.0.0       255.255.0.0     U     1000   0        0 <wifi>
192.168.1.0     0.0.0.0       255.255.255.0   U     600    0        0 <wifi>

Я попробовал:

1) отключил ufw и запустил из терминала (то же самое с включенным ufw):

sudo route del -net 169.254.0.0 gw 0.0.0.0

получил SIOCDELRT: Неверный аргумент

2) закомментировал строку link-local 169.254.0.0 в файле /etc/networks и перезагрузился.

3) отключил avahi-deamon, так как это, похоже, связано.

Ничего не работает, я использую статический IP, но каждый раз, когда я подключаюсь к своему маршрутизатору и запускаю route -n command, он там появляется. Итак, у вас есть какие-либо другие идеи?

ОБНОВЛЕНИЕ:

Благодаря ответу ниже я посмотрел в man-страницу avahi-autoipd и смог найти решение. Чтобы удалить маршрут:

sudo route del -net 169.254.0.0 netmask 255.255.0.0 dev <interface> metric 1000

где <interface> — это ваш сетевой интерфейс, например wlan0. Однако это удалит его только до следующей сетевой ассоциации, потому что он появится снова. Поэтому, чтобы сделать это постоянным, вам нужно изменить файл /etc/network/if-up.d/avahi-autoipd, источник появления.

Я закомментировал последнюю часть кода:

#if [ -x /bin/ip ]; then
    # маршрут уже присутствует?
    #ip route show | grep -q '^169.254.0.0/16[[:space:]]' && exit 0

    #/bin/ip route add 169.254.0.0/16 dev $IFACE metric 1000 scope link
#elif [ -x /sbin/route ]; then
    # маршрут уже присутствует?
    #/sbin/route -n | egrep -q "^169.254.0.0[[:space:]]" && exit 0

    #/sbin/route add -net 169.254.0.0 netmask 255.255.0.0 dev $IFACE metric 1000
#fi

Вам вообще ничего не нужно делать. Маршрут 169.254.0.0 обычно присутствует у всех с подключением к интернету. Вот информация о маршруте с моего компьютера:

chili@T440p:~$ route -n
Таблица маршрутизации ядра IP
Назначение       Шлюз           Маска сети       Флаги Метрика Ссылка Использовать Интерфейс
0.0.0.0         192.168.0.1   0.0.0.0         UG    600    0        0 wlp3s0
169.254.0.0     0.0.0.0       255.255.0.0     U     1000   0        0 wlp3s0
192.168.0.0     0.0.0.0       255.255.255.0   U     600    0        0 wlp3s0

Пожалуйста, посмотрите: https://serverfault.com/questions/132657/where-route-to-169-254-0-0-comes-from

Особенно обратите внимание на:

Сеть 169.254.0.0/16 используется для автоматического назначения частных IP-адресов, или APIPA. Если DHCP-клиент пытается получить адрес, но не находит сервер DHCP после истечения времени ожидания и периода повторных попыток, он случайно предположит адрес из этой сети. Это позволяет коммуникацию с хостами, которые не смогли получить адрес DHCP.

Короче говоря, этот вход вполне нормален.

Вы правы в своем предположении, что этот маршрут происходит от avahi.

Отключение avahi-deamon может оказаться недостаточным, поскольку ваш DHCP-клиент может быть настроен на использование avahi-autoipd для установки Link-local IP, когда запрос DHCP не удается.

Есть несколько вещей, которые я бы попробовал:

  • добавить строку deny-interfaces=wifi (это имя вашего сетевого интерфейса, верно?) в /etc/avahi/avahi-daemon.conf
  • поскольку вы все равно используете статический IP, отключите своего DHCP-клиента (dhcpcd?)
  • как в этом ответе предложено, вы можете просто удалить avahi-daemon. Конечно, это как убить муху с помощью катка, но это сработает

Я решил это так:

iface eth1 inet static
    адрес 192.168.0.2
    маска сети 255.255.255.0
    шлюз 192.168.0.1
    pre up ip r d 169.254.0.0/16

Просто маршрут удаляется при запуске сети. В дистрибутивах Rhel это легко настроить для Zeroconf, но я не нашел способа в Debian/Ubuntu. Тем не менее, это должно сработать.

Просто избавьтесь от этого полностью, у меня все хорошо работало на Ubuntu 22:

sudo apt-get remove avahi-autoipd avahi-daemon avahi-utils

Мне не нравится ненужный трафик в моей сети, неизвестные маршруты в моих ip таблицах и службы/демоны, тратящие ресурсы на моем компьютере.

Это APIPA, также известная как Zeroconfig и т.д. На мой взгляд, это не должно быть автоматическим.
Для систем на базе Debian конфигурацию avahi-daemon необходимо изменить.

$ sudo nano /etc/default/avahi-daemon

AVAHI_DAEMON_DETECT_LOCAL=0

Ответ или решение

Как избавиться от маршрута 169.254.0.0

Если вас беспокоит наличие маршрута 169.254.0.0 в вашей таблице маршрутизации, возможно, вы являетесь владельцем статического IP-адреса и хотите удалить этот маршрут, так как он может создавать ненужный трафик. Данный маршрут генерируется автоматически в процессе автоматического назначения частного IP-адреса (APIPA), когда клиент DHCP не может получить адрес от DHCP-сервера.

1. Понимание маршрута 169.254.0.0

Сеть 169.254.0.0 — это адреса, назначаемые автоматически устройствам, которые не смогли получить IP-адрес от DHCP-сервера. Это стандартная функция в большинстве операционных систем для обеспечения локальной связи в случае сбоя DHCP. Удалять данный маршрут стоит только в том случае, если вы уверены, что он вызывает проблемы в вашей сети.

2. Удаление временного маршрута

Вы можете удалить этот маршрут временно, выполнив команду:

sudo route del -net 169.254.0.0 netmask 255.255.0.0 dev <interface>

где <interface> — это ваша сетевой интерфейс (например, wlan0 или eth0). Однако данное действие потребуется повторять каждый раз после переподключения сети, так как маршрут будет создан вновь.

3. Устранение автоматического создания маршрута

Чтобы навсегда избавиться от маршрута 169.254.0.0, вам нужно изменять способы конфигурации сетевых интерфейсов. Вот несколько вариантов:

a. Изменение конфигурации avahi-daemon

  1. Откройте файл конфигурации:
    sudo nano /etc/avahi/avahi-daemon.conf
  2. Добавьте или измените строку:
    deny-interfaces=<interface>

    Это позволит вам запретить использование Avahi для указного интерфейса.

b. Отключение DHCP-клиента

Если вы используете статический IP-адрес, убедитесь, что DHCP-клиент (например, dhcpcd) отключен. Это также может предотвратить создание маршрута 169.254.0.0.

c. Удаление avahi-daemon

Если вам не нужен avahi-daemon и его функции, вы можете просто удалить его:

sudo apt-get remove avahi-autoipd avahi-daemon avahi-utils

Это уничтожит все аспекты автоматического назначения IP.

4. Устойчивое решение через конфигурацию интерфейса

Можно также создать правило в конфигурации сетевого интерфейса для удаления маршрута при старте сети. Добавьте строку, заменив <interface> на ваш интерфейс (например, eth0):

iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
    pre-up ip route del 169.254.0.0/16

Заключение

Наличие маршрута 169.254.0.0 в вашей таблице маршрутизации — это нормальное явление при использовании DHCP и APIPA. Однако, если вы используете статический IP-адрес и вам не нужен этот маршрут, приведенные выше методы помогут вам избавиться от него. Важно внимательно рассмотреть каждый предложенный метод в контексте вашей сети и нужд, чтобы выбрать наиболее подходящее решение.

Оцените материал
Добавить комментарий

Капча загружается...