Rtnetlink answers file exists что делать
Rtnetlink answers file exists что делать
Бывает так, что при настройке сети в Linux, например при добавлении дополнительного IP-адреса для сетевого интерфейса, может появиться следующая ошибка:
# ip addr add 192.168.1.95/24 dev enp5s0
RTNETLINK answers: File exists
Традиционно, текст ошибки указывает совершенно не на ту проблему, которая возникла на самом деле. При возникновении данной ошибки обычно рекомендуют перезагрузить компьютер или полностью сбросить конфигурацию сетевого интерфейса через команды:
# ip addr flush dev enp5s0
# ip route flush dev enp5s0
Предполагается, что некий загадочный конфигурирующий файл или файл устройства освободится и можно будет произвести настройку.
Так вот, этого делать не нужно. Лучше посмотреть на исходную команду, и понять, что в ней может быть не так. Вроде бы все в порядке? Да! Но что если посмотреть на выхлоп:
inet 192.168.1.95/24 brd 192.168.1.255 scope global enp5s0
valid_lft forever preferred_lft forever
Оказывается, такой IP с такой маской уже существует. По запарке можно было этого и не заметить. То есть, проблема оказалась в неправильном применении команды.
По непроверенной информации, RTNETLINK расшифровывается как ROUTE NETWORK LINK (иногда используется наименование NETLINK_ROUTE ), и под этим «объектом» подразумевается сокет маршрутизации IPv4. Соответственно, если сокет уже существует, а пользователь пытается своей командой косвенно создать такой же сокет, то будет появляеться вышеуказанная ошибка. Так же, подобная ошибка будет появляться, если есть какие-то неполадки в настройках маршрутизации.
Ждем, когда команда ip станет более интеллектуальной, и будет точно говорить в чем проблема, чтобы можно было ее быстро решить.
После перезагрузки серва с Debian через раз поднимаются сетевые интерфейсы..
Доброго времени суток!
Инфа по системе: мать Asrock H61Del с последним биосом 2.0 сетевые платы: 2 дешёвые TP-LINK TG-3468, проц у них Realtek RTL8168B, думаю для домашнего сервера норм вариант, в 10 раз дороже intel без особой необходимости желания покупать нет.
Настройки interfaces, iptables..
iptables (скрипт выполняется при загрузке системы, нашёл в инете, настроил под себя):
Тут вроде всё хорошо, да и с несколько другими настройками на прошлой системе то же самое было.
/etc/init.d/networking restart приводит к падению доступа в инет и ругани:
Когда, после ребута, один из интерфейсов не работает, при попытке поднятия его на сервере командой ifup eth0/eth3 выдаёт снова это «RTNETLINK answers: File exists».
Почему так? Что это за хрень, извините))? Ведь настроек не меняю, выкл,вкл и уже работает (или не работает)..надоело. В чём может быть дело? Что за «RTNETLINK answers: File exists»?
Как временно приемлемый вариант, я бы сделал скрипт, проверяющий состояние обоих интерфейсов, и в случае неполадок, отправляющий серв в ребут (потому что бывает не из дома подключаюсь, напр. из другого города). Только как его написать, кто бы помог))
RTNETLINK answers: File exists мне обычно вылетало когда маршрут/ip-адрес из конфликтующих подсетей уже был прописан.
Проверьте чтоб у вас интерфейсы не конфликтовали.
с настройками интерфейсов и состоянием сейчас вроде всё ок, работает.. непонятно то, почему с перезагрузкой через раз нормально восстанавливается работа интерфейсов.. подскажите, куда обратить внимание, что может вызывать конфликт.. так вроде основные настройки выложил.
У меня встроенная: 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 01)
Иногда после перезагрузки/включения не включается, в ip li пишет флаг NO-CARRIER.
Я подозреваю скрипты инициализации, которые иногда не в том порядке или не так выполняются, в результате чего поднятие интерфейса не срабатывает.
Устройства при запуске не переименовываются? Ничего в сислоге нет?
завтра уже попробую ip li, сегодня не буду возиться. Я тоже подозреваю, что где-то какие-то скрипты по разному отрабатывают.. но почему так, и если бы кто знал где и какие же конкретно могут к такому приводить.
вот что выдаёт (всё верно, в системе побывало 4 сетевые карты), совпадает.. в сислоге завтра поковыряюсь.
НЕ ВСЕГДА нормально поднимаются интерфейсы
очень похоже на гонки (aka race), ядро определяет карточки одновременно, потому какая из них станет eth0 предсказать невозможно.
Take a look at /etc/udev/rules.d/70-persistent-net.rules and verify that the rule for your card (check its MAC) is consistent with the naming scheme you want.
You can easily edit that file or even remove it if you want to regenerate it from scratch.
от себя добавлю, что посмотреть на это можно в dmesg
в сислоге нашёл момент определения карточек,
почистил файл /etc/udev/rules.d/70-persistent-net.rules, сгенерировался по новой, посмотрю что будет, но по-моему проблема не решена, т.к. только что, сразу после регенерации, изменения настройек и ребута, инета снова не было, пришлось второй раз ребутить.
dmesq по идее с момента первого появления интерфейсов, в этом случае инет не поднялся: http://www.ex.ua/289682750771
Поменяй allow-hotplug на auto :
А мне кажется, проблема в драйвере r8169 (не всегда корректно работает с некоторыми карточками)
Есть ещё r8168-dkms, пробовали его?
А где auto в настройках интерфейсов?
Правила iptables подгружают в /etc/network/interfaces командой pre-up
echo «1» > /proc/sys/net/ipv4/ip_forward
echo «1» > /proc/sys/net/ipv4/ip_dynaddr
устанавливают тут /etc/sysctl.conf
Зачем шлюзу указывать шлюз. Эта строка лишняя:
dmesq по идее с момента первого появления интерфейсов, в этом случае инет не поднялся: http://www.ex.ua/289682750771
там глянь какие-же получаются в итоге MAC в рабочем и в не рабочем случае. Сами интерфейсы вроде не переименовывает как я думал.
Проблемы с /etc/udev/rules.d/70-persistent-net.rules возникают только при замене или добавлении карточек
Зачем ты указываешь 2 гейтвея? Видимо, через раз то один раньше устанавливается, то другой. Когда правильный — работает, когда неправильный — не работает.
при попытке поднятия его на сервере командой ifup eth0/eth3 выдаёт снова это «RTNETLINK answers: File exists»
Это ерунда, это означает, что такой адрес или маршрут уже назначен на интерфейс. Это сообщение не должно вести к проблемам.
Сравините вывод команд: ip link; ip addr; ip route для случая работающией и не работающей сетёвки. Если они одинаковые, то значит проблема не в ifup.
Посмотрите, в случае не работающей сетёвки, работает ли arping и tcpdump на этом интерфейсе. Если tcpdump на локальном интерфейсе, то с другого компьютера запустите пинг сервера, если на интерфейсе провайдера, то там обычно в сети достаточно много пакетов летает.
Ну ещё можно сравнить вывод ″ethtool eth0″ для работающего и не работающего случаев, попробовать в неработающем случае переключить сетёвку в 10 Мбит Half-duplex.
убери gateway 192.168.0.1
Есть ещё r8168-dkms, пробовали его
спасибо за подсказку, нет, не пробовал.. на счёт драйвера конечно мысль пробегала, но как его переустановить, не знаю..поможете? Думаю там пара команд..
Правила iptables подгружают в /etc/network/interfaces командой pre-up
echo «1» > /proc/sys/net/ipv4/ip_forward echo «1» > /proc/sys/net/ipv4/ip_dynaddr устанавливают тут /etc/sysctl.conf
это знаю, в прошлой системе не помню, как именно правила подгружались, а ip_forward было указано в /etc/sysctl.conf, и тот же результат, ip_dynaddr мне по идее вообще не нужен, просто ещё не убрал. Выход в инет же с сервера пропадает, а не только с локалки, так что не от сюда проблема, думаю. По поводу правил iptables, просто в таком скрипте мне их проще редактировать, а разве принципиально, откуда они будут грузиться?
убрал и вот уже пятый раз успешный ребут. Это конечно не 100% показатель, вчера подряд раз 10 так и потом снова. Проверяю дальше.. Если проблема в этом, то это я здорово тупанул..
следующий вариант, если последний не сработал)
— правила iptables должны загружаться до поднятия интерфейсов и в приведенных правилах есть некоторые косяки, загружают их из файла, путем команды pre-up /etc/skript/iptables, указанной в /etc/network/interfaces
— запись в кроне */5 * * * * root ifup eth1 > /dev/null 2>&1 аналогична команде allow-hotplug
Проблемы скорее всего были из-за двух гейтвеев по умолчанию
Сравините вывод команд: ip link; ip addr; ip route для случая работающией и не работающей сетёвки. Если они одинаковые, то значит проблема не в ifup
Вижу NO-CARRIER у неработающего интерфейса; так же в этом случае ему не назначается ipv6 адрес (мне в принципе не нужен, но..). Что это может быть.
нет, не в гейтвеях была.. на седьмой раз снова интерфейс не поднялся.
Можно попробовать перенести настройки c eth3 на eth1, и c eth1 на eth3. Чтоб инетовски интерфейс запускался первым.
Вот такая же проблема, решена сменой сетевухи как настроить PPPoE в Debian?
запись в кроне */5 * * * * root ifup eth1 > /dev/null 2>&1 аналогична команде allow-hotplug
этого я не понимаю..))
/etc/network/interfaces привёл в вид:
убрал скрипт с настройками iptables firewall.sh из автозапуска, в /etc/sysctl.conf раскомментировал net.ipv4.ip_forward=1.
Можно попробовать перенести настройки c eth3 на eth1, и c eth1 на eth3. Чтоб инетовски интерфейс запускался первым.
уже менял, дело в том, что раньше было наоборот, сначала инет, потом сеть, а это изменённый вариант, как видно из настроек, которые выкладываю.
Ubuntu не может назначить статический IP-интерфейс (RTNETLINK ответы: файл существует)
Я установил серверную версию Ubuntu 16.04 на свою машину. У меня есть 4 интерфейса ethernet, и я хочу назначить статический IP всем этим.
Я прочитал несколько вопросов и ответил и применил их, например, удаление шлюза из eno2-3-4, поскольку он доступен на eno1, но не удачи
Моя конфигурация выглядит следующим образом:
# The primary network interface auto eno1 iface eno1 inet static address 10.***.***.174 netmask 255.255.255.0 gateway 10.***.***.1 dns-nameservers 208.67.220.220 208.67.222.222 # The secondary network interface auto eno2 iface eno2 inet static address 10.***.***.175 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222 # The tertiary network interface auto eno3 iface eno3 inet static address 10.***.***.176 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222 # The quaternary network interface auto eno4 iface eno4 inet static address 10.***.***.177 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222
Моя конфигурация выглядит следующим образом:
RTNETLINK answers: File exists Failed to bring up eno1. RTNETLINK answers: File exists Failed to bring up eno2. RTNETLINK answers: File exists Failed to bring up eno3.
У меня есть попытался очистить ip-адреса и устройства, попытался перезагрузить компьютер, но все равно не повезло. Когда я пытаюсь systemctl restart (or start) networking.service, я получаю эти ошибки выше.
Есть ли другой файл, который мне нужно обновить?
2 ответа
Я нашел решение случайно. Интересно, что я изменил отступ ниже, служба немедленно началась без каких-либо ошибок.
# The primary network interface auto eno1 iface eno1 inet static address 10.***.***.174 netmask 255.255.255.0 gateway 10.***.***.1 dns-nameservers 208.67.220.220 208.67.222.222 # The secondary network interface auto eno2 iface eno2 inet static address 10.***.***.175 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222 # The tertiary network interface auto eno3 iface eno3 inet static address 10.***.***.176 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222 # The quaternary network interface auto eno4 iface eno4 inet static address 10.***.***.177 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222
Я нашел решение случайно. Интересно, что я изменил отступ ниже, служба немедленно началась без каких-либо ошибок.
# The primary network interface auto eno1 iface eno1 inet static address 10.***.***.174 netmask 255.255.255.0 gateway 10.***.***.1 dns-nameservers 208.67.220.220 208.67.222.222 # The secondary network interface auto eno2 iface eno2 inet static address 10.***.***.175 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222 # The tertiary network interface auto eno3 iface eno3 inet static address 10.***.***.176 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222 # The quaternary network interface auto eno4 iface eno4 inet static address 10.***.***.177 netmask 255.255.255.0 dns-nameservers 208.67.220.220 208.67.222.222
Настройка сети в CentOS
Введение
Чтобы лучше ориентироваться в сетевом администрировании, а именно в таких понятиях как типы IP адресов, маски, подсети и т.д. советую изучить статью
Настройка сети
Чтобы изучить подключения выполните одну из команд:
NAME UUID TYPE DEVICE enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3 enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Обычно неактивный интерфейс выделен серым цветом а активный зелёным.
Включить интерфейс можно командой
nmcli conn up enp0s3
Включать интерфейс при загрузке
Чтобы не включать сетевой интерфейс каждый раз вручную можно в настройках прописать ONBOOT=yes
Как вариант можно перейти в
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
Либо под root использовать sed
Проверить получилось ли изменить ONBOOT на yes можно командой
Подробную информацию о каждом сетевом интерфейсе можно получить выполнив nmcli connection show имя_интерфейса
nmcli connection show ens192
Установка статического IP
NAME UUID TYPE DEVICE enp0s3 64486a76-a4b0-4693-9110-205da942c9c5 ethernet enp0s3 enp0s8 fc26857f-4cb0-3756-a7fa-95ec246b3981 ethernet enp0s8
Настроим статический IP адрес для enp0s8
Настройки сети хранятся в директории
Отредактировать нужно файл ifcfg-enp0s8
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s8 UUID=939a0551-f5b5-46d8-87fe-24e5e7b1a0c1 DEVICE=enp0s8 ONBOOT=yes
Изменить IP
Быстро изменить IP можно с помощью ifconfig
Менять IP нужно командой
sudo ifconfig enp0s8 192.168.56.111
Вместо enp0s8 введите нужный интерфейс
Вместо 192.168.56.111 введите IP, который хотите установить
sudo ifconfig enp0s8 192.168.56.111 netmask 255.255.255.0
Изменить маску
sudo ifconfig enp0s8 netmask 255.255.255.0
Добавить IP
Добавить IP на интерфейс можно командой
ip addr add 172.17.67.3/16 dev enp0s8
Удалить этот IP адрес можно командой
ip addr del 172.17.67.3/16 dev enp0s8
Сбросить IP
Если IP получен по DHCP можно освободиться от него выполнив
Вместо enp0s8 введите имя нужного адаптера
Узнать Gateway
Чтобы узнать текущий IP адрес шлюза (gateway) выполните
default via 10.0.2.1 dev enp0s3 proto dhcp metric 100
IP адрес шлюза 10.0.2.1
Установка ifconfig
yum provides ifconfig
yum whatprovides ifconfig
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.funet.fi * epel: www.nic.funet.fi * extras: ftp.funet.fi * updates: ftp.funet.fi base/7/x86_64/filelists_db | 7.2 MB 00:00:01 epel/x86_64/filelists_db | 12 MB 00:00:03 extras/7/x86_64/filelists_db | 224 kB 00:00:00 ssh-products/x86_64/filelists_db | 89 kB 00:00:00 updates/7/x86_64/filelists_db | 3.4 MB 00:00:01 net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools Repo : base Matched from: Filename : /sbin/ifconfig
ifconfig входит, например, в состав net-tools
sudo yum install net-tools
Открытые порты
Список открытых портов
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
Выдаст все порты, поэтому если нужно проверить какой-то определённый удобно применить grep
tcp LISTEN 0 128 [::]:1234 [::]:* users:((«andrei»,pid=5226,fd=14))
Открыть порт
Чтобы открыть порт XXXX в firewall выполните
Подробности в статье Centos firewall
hostname
Шаг 1. Проверка текущего hostname
Чтобы получить информацию о хосте выполните
Static hostname: localhost.localdomain Icon name: computer-vm Chassis: vm Machine ID: a714bee8007d114a84177dbb15072f2e Boot ID: b02d9498c1764a338c781672aac1be29 Virtualization: kvm Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64
Нужная информация находится в первой строке
Static hostname: localhost.localdomain
Шаг 2. Смена hostname
Так как CentOS 7 поддреживает только Fully Qualified Domain Names (FQDNs), советую тщательно проверить hostname, который вы планируете использовать.
hostnamectl set-hostname my.new-hostname.server
Подробности в статье hostname
NetworkManager
Проверить статус можно командой
systemctl status NetworkManager
network
Проверить статус можно командой
systemctl status network
Виртуальный интерфейс
cp /etc/sysconfig/network-scripts/ens192 /etc/sysconfig/network-scripts/ens192:0
vi /etc/sysconfig/network-scripts/ens192:0
Поменяйте там что-то, например поставьте другой IP из той же подсети
systemctl restart network
Так как виртальный интерфейс может быть только внутри той же подсети, он не даст вам возможности слушать другую сейть.
Создать новый сетевой адаптер
Подробный разбор этого действия вы можете изучить в статье «Создать новый интерфейс»
Список адаптеров
Получить список адаптеров, в том числе отключенных.
«RTNETLINK answers: File exists» /etc/network/interfaces Does’nt contain 2 gateways, so what’s wrong?
This is my /etc/network/interfaces file contents
The only way this is taking effect is when the system reboots.
I’m trying to get it effected manually. My attempts below.
First tried to run sudo ifup eth0
The /etc/network/interfaces only work when i reboot the system
Other than that i’ve tried
sudo /etc/init.d/networking restart
sudo service network-manager restart
sudo service networking restart
But none of them will bring up the changes in the interfaces file
My only option was sudo ifup eth0 and that gives the above error.
5 Answers 5
Edit your configuration file to remove the spaces before the iface stanza so that it looks like this,
Note, how these two commands are executed on the same line. And just a precaution, make sure you can get access to the server console or reboot the server if something goes wrong.
I just ran into this problem and none of the solutions above worked for me. I couldn’t change /run/network/ifstate because it was reset immediately to the former state. Also sudo ifdown eth0 && sudo ifup eth0 didn’t work.
I then found out the following command:
which solved the problem.
Try to look for /run/network/ifstate, and modify it by adding eth(n)=eth(0) if you don’t see the desired eth there.
After that use the command sudo ifdown eth(n) and then sudo ifup eth(n).
To anybody else that ended up here, I had to stop all interfaces and bridges and then unload the modules before the RTNETLINK error would go away.