"Ответы 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 answers: File exists
Failed to bring up eth0.

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

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

sudo /etc/init.d/networking restart

sudo service network-manager restart

sudo service networking restart

Но никто из них не внесет изменений в interfaces файл

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

что случилось?

6 ответов

Решение

Отредактируйте файл конфигурации, чтобы удалить пробелы перед 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              # or whatever module your nic uses
modprobe e1000e
service networking start

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

Я только что потратил день на эту проблему с моим пи. Я ничего не менял, только физически передвинул коробку. У моего пи есть подключение к Wi-Fi через ключ Wi-Fi 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. Я удалил плохую запись в маршрутизаторе и WIFI, затем подключился после перезагрузки.Поэтому, если вы играете со статическими маршрутами с Pi и маршрутизатором, будьте осторожны, возможно, вы установили что-то плохое в маршрутизаторе. Это не всегда ошибка сети PI.

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

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

      auto eth0

?

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

просто удалите строку auto в файле интерфейсов, а затем добавьте:

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

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

ТАКЖЕ

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

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

ТАКЖЕ

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

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

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

      # This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
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

Фом Тули

Другие вопросы по тегам