У меня есть Nvidia Jetson TX2 SoC на несущей плате Connecttech Astro под управлением Ubuntu 16.04. У оператора есть два порта Gigabit Ethernet, которые я хотел бы настроить со статическими IP-адресами. В системных настройках -> сеть:
Проводное соединение 1 -> Настройки IPv4: вручную IP: 192.168.22.148 Маска: 24 Шлюз по умолчанию: 192.168.22.1
Проводное соединение 2 -> Настройки IPv4: вручную IP: 192.168.1.148 Маска: 24
При нормальной работе этот TX2 подключается к другому TX2 и некоторым другим компонентам через простой неуправляемый коммутатор. Все компоненты имеют статические IP-адреса, поэтому они могут работать без DHCP-сервера. Когда TX2 включен, все работает как надо, но через 5 минут eth0 (проводное соединение 1) исчезает. Глядя на системный журнал, кажется, что это связано с тем, что dhclient не получает ответа от DHCP-сервера (потому что он не подключен), что вызывает отключение интерфейса. Avahi-daemon берет на себя управление eth0 и пытается его настроить, но безуспешно. Я вижу, что тайм-аут в /etc/dhcp/dhclient.conf установлен на 300 секунд.
Я пытаюсь понять, почему dhclient что-то делает, поскольку для интерфейса установлен ручной режим со статическим IP-адресом.
Я также настроил статический IP через / etc / network / interfaces:
auto eth0
iface eth0 inet static
address 192.168.22.148
netmask 255.255.255.0
gateway 192.168.22.1
auto eth1
iface eth1 inet static
address 192.168.1.148
netmask 255.255.255.0
/etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq
[ifupdown]
managed=false
но это не имело значения. Итак, мой вопрос: почему dhclient выполняет DHCP-запросы для eth0, когда он настроен как статический? Что выключает eth0 в случае сбоя? Как правильно это исправить?
Пара других лакомых кусочков информации: 1) если подключен маршрутизатор или другой DHCP-сервер, все работает отлично. 2) У меня была аналогичная конфигурация оборудования с Jetson TX1 под управлением Ubuntu 14.04, которая работала нормально.
Этот пост бесполезен: https://askubuntu.com/questions/459140/why-dhclient-is-still-running-when-i-choose-static-ip
Убедитесь, что dhclient не вызывается из каких-либо сценариев запуска или работает в фоновом режиме. (ps auxw | grep dhclient
). Вы можете убить его: pkill -f dhclient
.
В Ubuntu есть несколько сетевых служб и оболочек, поэтому их можно вызывать из приложения, такого как network-manager. Если вы запускаете безголовый сервер, я бы рекомендовал вам отключить сетевой менеджер и полагаться на собственную сеть.
sudo systemctl disable NetworkManager.service
После применения этих изменений я бы перезапустил компьютер для хорошей меры, чтобы убедиться, что не осталось никаких служб, вызывающих dhclient.
Надеюсь это поможет!