Не удается удалить маршрут по умолчанию в Linux.

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

У меня две маршрута по умолчанию, и я хочу удалить один из них, но не могу. Ошибок не выдаёт, а маршрут всё ещё остаётся. Я что-то делаю не так? NetworkManager мешает мне?

[11:09:52]user@host:/etc/sysconfig/network-scripts$ ip route
default via 10.12.32.1 dev em1  proto static  metric 100
default via X.X.X.X dev em2  proto static  metric 101
10.0.0.0/8 via 10.12.32.1 dev em1
10.12.32.0/24 dev em1  proto kernel  scope link  src 10.12.32.4
10.12.32.0/24 dev em1  proto kernel  scope link  src 10.12.32.4  metric 100
X.X.X.X/29 dev em2  proto kernel  scope link  src X.X.X.X  metric 100

[11:15:31]user@host:/etc/sysconfig/network-scripts$ sudo ip route delete default via 10.12.32.1 dev em1  proto static  metric 100

[11:15:41]user@host:/etc/sysconfig/network-scripts$ ip route
default via 10.12.32.1 dev em1  proto static  metric 100
default via X.X.X.X dev em2  proto static  metric 101
10.0.0.0/8 via 10.12.32.1 dev em1
10.12.32.0/24 dev em1  proto kernel  scope link  src 10.12.32.4
10.12.32.0/24 dev em1  proto kernel  scope link  src 10.12.32.4  metric 100
X.X.X.X/29 dev em2  proto kernel  scope link  src X.X.X.X  metric 100

Поскольку я не могу отключить em1 в рабочее время, я попробовал обходной путь:
я изменил метрику на em2 на 99 в /etc/sysconfig/network-scripts/ifcfg-em2. Но после ifdown em2 и ifup em2 она всё равно имеет метрику 101.

РЕДАКТИРОВАТЬ:
Содержимое ifcfg-em1:

# Сгенерировано dracut initrd
NAME="em1"
DEVICE="em1"
ONBOOT=yes
NETBOOT=yes
UUID="8c695eab-d7ff-4b7c-960d-333788fbaf72"
IPV6INIT=yes
BOOTPROTO=dhcp
TYPE=Ethernet
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

Содержимое ifcfg-em2:

TYPE=Ethernet
UUID=1cc7a636-b9b0-4602-806a-81486188efb0
METRIC=99
NAME="em2"
DEVICE="em2"
ONBOOT=yes
NETBOOT=yes
IPV6INIT=yes
BOOTPROTO=static
DEFROUTE=no
IPV4_FAILURE_FATAL=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPADDR=X.X.X.X
PREFIX=29
GATEWAY=X.X.X.X
DNS1=10.12.32.44
HWADDR=00:21:9b:99:2f:44
METRIC=99

Обязательно остановите connman и NetworkManager. Они восстанавливают то, что вы удаляете.

Пожалуйста, попробуйте

grep -r "10.12.32.1" /etc

Чтобы определить, какой файл содержит GATEWAY=10.12.32.1
Затем удалите GATEWAY=10.12.32.1 из этого файла.

Перезапустите сетевой сервис

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

На вопрос о невозможности удаления маршрута по умолчанию в Linux оказывается влияют несколько факторов, которые мы рассмотрим подробно.

Теория

Маршрут по умолчанию ("default route") указывает систему на тот шлюз, который будет использоваться для всех неопределённых маршрутов. В вашем случае присутствуют два маршрута по умолчанию, и вы хотите удалить один из них, но изменения не применяются. Проблема может быть связана с несколькими причинами, такими как вмешательство в работу сетевых сервисов, ошибка в конфигурации сетевых интерфейсов или проблемы с программами, вроде NetworkManager или ConnMan, которые могут восстанавливать маршруты после их удаления.

Пример

В предоставленных вами данных видно, что маршруты по умолчанию настроены через команду ip route, и отсутствует ошибка при попытке выполнить команду sudo ip route delete. Однако маршрут по умолчанию не удаляется и остаётся в таблице маршрутов системы.

ip route delete default via 10.12.32.1 dev em1 proto static metric 100

Также изменения в ifcfg-em2 (например, изменение метрики) не применяются, что может говорить о том, что NetworkManager восстанавливает или игнорирует настройки.

Применение

  1. Остановите или отключите NetworkManager и ConnMan:

    Эти сетевые менеджеры могут перезаписывать или восстанавливать сетевые настройки. Попробуйте временно остановить их:

    sudo systemctl stop NetworkManager
    sudo systemctl stop connman

    После остановки данных сервисов попробуйте снова удалить маршрут.

  2. Поиск и удаление конфигурации шлюза:

    Используйте поиск по конфигурационным файлам, чтобы найти явные настройки шлюза, как предложено:

    grep -r "10.12.32.1" /etc

    Определите файлы, в которых явно указан шлюз GATEWAY=10.12.32.1, и удалите или закомментируйте эти строки. Затем перезапустите сетевой сервис:

    sudo systemctl restart network
  3. Проверьте конфигурацию интерфейсов:

    В файлах конфигурации /etc/sysconfig/network-scripts/ifcfg-em1 и /etc/sysconfig/network-scripts/ifcfg-em2 убедитесь, что опция DEFROUTE установлена в no, если вы не хотите, чтобы данный интерфейс предоставлял маршрут по умолчанию. Обратите внимание, что изменения в этих файлах могут вступать в силу только после перезагрузки или рестарта сетевого сервиса.

  4. Конфигурация сетевых скриптов:

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

    sudo ifdown em1
    sudo ifup em1

    Повторите для em2.

  5. Обратитесь к логам и журналам:

    Проверьте логи системы, такие как journalctl или /var/log/messages, на наличие сообщений о проблемах с сетью, чтобы лучше понять, что может восстанавливать или удерживать конфигурации маршрутов.

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

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

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