“RTNETLINK отвечает: Файл существует” /etc/network/interfaces не содержит 2 шлюза, в чем проблема?

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

Это содержимое моего файла /etc/network/interfaces

Единственный способ, при котором это вступает в силу, — это перезагрузка системы.

Я пытаюсь применить это вручную. Мои попытки ниже.

auto eth0
    iface eth0 inet static
           address 192.168.1.57
           netmask 255.255.255.0
           gateway 192.168.1.1
           up ip addr add 192.168.0.57/24 dev eth0 label eth0:1
           down ip addr del 192.168.0.57/24 dev eth0 label eth0:1
           up ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0:1 metric 20
           down ip route del 192.168.0.0/24 via 192.168.0.1 dev eth0:1 metric 20

Сначала я попробовал запустить sudo ifup eth0

и вот что я получил:

RTNETLINK отвечает: Файл существует
Не удалось поднять eth0.

Файл /etc/network/interfaces работает только когда я перезагружаю систему

Кроме этого, я пробовал

sudo /etc/init.d/networking restart

sudo service network-manager restart

sudo service networking restart

Но ни один из них не применяет изменения в файле interfaces

Единственный вариант был sudo ifup eth0, который выдает указанную выше ошибку.

Что не так?

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

auto eth0
iface eth0 inet static
   address 192.168.1.57
   netmask 255.255.255.0
   gateway 192.168.1.1
   up ip addr add 192.168.0.57/24 dev eth0 label eth0:1
   down ip addr del 192.168.0.57/24 dev eth0 label eth0:1
   up ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0:1 metric 20
   down ip route del 192.168.0.0/24 via 192.168.0.1 dev eth0:1 metric 20

Сообщение, которое вы получаете, просто указывает на то, что интерфейс уже активен, так что вам нужно выполнить ifdown перед тем, как выполнять ifup. Однако будьте осторожны, если вы подключены через SSH — вы можете заблокировать себя. Вот как это сделать:

sudo ifdown eth0 && sudo ifup eth0

Обратите внимание, как эти две команды выполняются в одной строке. И просто для предосторожности убедитесь, что вы можете получить доступ к консоли сервера или перезагрузить сервер, если что-то пойдет не так.

Я только что столкнулся с этой проблемой, и ни одно из вышеупомянутых решений не сработало для меня. Я не мог изменить /run/network/ifstate, потому что он немедленно сбрасывался в прежнее состояние. Также команда sudo ifdown eth0 && sudo ifup eth0 не работала.

Затем я нашел следующую команду:

sudo ip addr flush dev eth0

Это решило проблему.

Попробуйте найти /run/network/ifstate и измените его, добавив eth(n)=eth(0), если вы не видите желаемый eth там.

Например:

$ cat /run/network/ifstate 
eth0=eth0
lo=lo
eth3=eth3
eth1=eth1

После этого используйте команду sudo ifdown eth(n), а затем sudo ifup eth(n).

Для всех остальных, кто оказался здесь, мне пришлось остановить все интерфейсы и мосты, а затем выгрузить модули, прежде чем ошибка RTNETLINK исчезла.

ifconfig eth0 down
ifconfig br0 down
rmmod e1000e              # или какой-либо другой модуль, который использует ваш сетевой адаптер
modprobe e1000e
service networking start

или просто перезагрузить.

Я потратил день на решение этой проблемы с моим Pi. Я ничего не менял, только физически переместил устройство. Мой Pi подключен к Wi-Fi через WIFI-переходник Realtek RTL8188CUS. Да, я уже исправил проблемы с отключением с помощью некоторых параметров ядра, в основном “options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1” в файле /etc/modprobe.d/8192cu.conf. Но Pi все равно иногда отключался. Теперь, когда я переместил его, казалось, что он не может подключиться со статическим IP 192.168.1.60. Так в чем была проблема? Для меня “RTNETLINK файл существует” — это ошибка, установленная мной в какой-то момент в моем беспроводном маршрутизаторе. Я ввел запись DNS в маршрутизаторе для 192.168.1.60, но ошибочно с низким значением TTL. Вместо TTL=1200 у меня было TTL=12. Я удалил неправильную запись в маршрутизаторе, и Wi-Fi подключился после перезагрузки. Так что если вы играете со статическими маршрутами с Pi и маршрутизатором одновременно, будьте осторожны, вы можете установить что-то плохое в маршрутизатор. Это не всегда вина сети Pi.

Исправьте меня, если я ошибаюсь…

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

auto eth0

?

auto = автоматически, а не вручную.

Просто уберите строчку auto из вашего файла interfaces и добавьте:

pre-up /sbin/ip link set eth0 up
post-down /sbin/ip link set eth0 down

и замените ваше устройство на eth0, и если у вас больше одного, добавьте 2 строки для каждого устройства.

ТАКЖЕ

Вы не можете дублировать шлюз

так что указывайте шлюз только один раз

ТАКЖЕ

вы не можете смешивать конфигурацию на одном и том же устройстве

поэтому если вы вручную настраиваете ваш ipv4, то ваш ipv6 для того же устройства также должен быть настроен вручную.

Вот мой файл interfaces в качестве примера:

# Этот файл описывает сетевые интерфейсы, доступные на вашей системе
# и как их активировать. Для получения дополнительной информации смотрите interfaces(5).

source /etc/network/interfaces.d/*

# Сетевой интерфейс loopback
auto lo
iface lo inet loopback

# Основной сетевой интерфейс
iface enp3s1f0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        gateway 192.168.0.1
        dns-nameservers 1.1.1.1 1.0.0.1

iface enp3s1f1 inet static
        address 192.168.0.101
        netmask 255.255.255.0
        dns-nameservers 1.1.1.1 1.0.0.1

iface enp3s1f1 inet6 static
        address 2600:6000:7a00:ab:123:1234:1234:abc
        netmask 64
        dns-nameservers 2606:4700:4700::1111 2606:4700:4700::1001

iface enp3s1f0 inet6 static
        address 2600:6000:7a00:ab:123:1234:1234:abd
        netmask 64
        dns-nameservers 2606:4700:4700::1111 2606:4700:4700::1001

pre-up /sbin/ip link set enp3s1f0 up
pre-up /sbin/ip link set enp3s1f1 up
post-down /sbin/ip link set enp3s1f0 down
post-down /sbin/ip link set enp3s1f1 down

fom tooley

Я пробовал AntiX Linux с двумя сетевыми картами. NIC eth0 был подключен к Интернету, а eth1 — к локальной подсети. Если оба NIC были активны, маршрутизация останавливалась через примерно 30 секунд, и я терял соединение с Интернетом.

После многих попыток я выяснил с помощью Wireshark, что какой-то старый адрес для eth1 был застрял в конфигурации, и eth0 начинал отправлять запросы по этому адресу на шлюз по умолчанию. Это по какой-то странной причине останавливало маршрутизацию из и в сеть.

Проблема была решена с помощью этой команды, найденной на этой веб-странице:

sudo ip addr flush dev eth0

Я снова включил сетевые карты после выполнения этой команды, и проблема исчезла.

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

Проблема с сообщением "RTNETLINK answers: File exists" обычно возникает, когда вы пытаетесь настроить сетевой интерфейс, который уже активен или имеет конфликты в маршрутизации. Вот несколько шагов, которые помогут вам решить эту проблему на основе вашего файла конфигурации /etc/network/interfaces.

1. Проверка файла конфигурации

Вы упомянули, что в вашем файле /etc/network/interfaces настроены статические IP-адреса и маршруты. Убедитесь, что отступы и структура файла правильные. Проверьте, чтобы конфигурация выглядела следующим образом:

auto eth0
iface eth0 inet static
    address 192.168.1.57
    netmask 255.255.255.0
    gateway 192.168.1.1
    up ip addr add 192.168.0.57/24 dev eth0 label eth0:1
    down ip addr del 192.168.0.57/24 dev eth0 label eth0:1
    up ip route add 192.168.0.0/24 via 192.168.0.1 dev eth0:1 metric 20
    down ip route del 192.168.0.0/24 via 192.168.0.1 dev eth0:1 metric 20

Обратите внимание, что в первой строке есть auto eth0, который указывает на автоматическую активацию интерфейса при загрузке. Любые интерфейсы, указанные как auto, будут автоматически подняты и могут вызывать конфликт, если вы вручную попытаетесь активировать их с помощью ifup.

2. Очистка состояния интерфейса

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

sudo ip addr flush dev eth0

Эта команда удалит все IP-адреса, назначенные интерфейсу, после чего вы снова сможете его активировать.

3. Отключение и повторное включение интерфейса

Если предыдущая команда не помогла, попробуйте выполнить последовательное отключение и повторное включение интерфейса:

sudo ifdown eth0 && sudo ifup eth0

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

4. Проверка состояния интерфейса

Вы можете проверить текущее состояние интерфейса с помощью команды:

ip addr show eth0

Эта команда покажет вам, какие IP-адреса настроены и активно ли подключение.

5. Взаимодействие с /run/network/ifstate

Если проблема сохраняется, вы можете проверить файл /run/network/ifstate, который используется для отслеживания состояний интерфейсов. Убедитесь, что там правильно прописан ваш интерфейс. Если интерфейс "завис" в состоянии, вы можете вручную редактором удалить соответствующие линии или использовать:

sudo ifdown eth0

6. Обратите внимание на маршрутизацию

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

Заключение

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

Таким образом, следуя этим рекомендациям, вы сможете устранить проблему "RTNETLINK answers: File exists" и правильно настроить сетевой интерфейс на вашем устройстве.

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

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