Назад | Перейти на главную страницу

Запретить dhclient сбросить eth0 при привязке к локальному адресу ссылки через avahi-autoipd?

У меня есть ПК с Windows, напрямую подключенный к встроенному устройству Linux через Ethernet.

На устройстве Linux я установил avahi-autoipd, так что я могу установить соединение с ПК с Windows и устройством Linux через локальный адрес ссылки (169.254.x.x).

Поначалу это соединение работает нормально. Я могу передавать данные с устройства Linux на ПК с Windows, как и ожидалось.

Однако это соединение периодически сбрасывается, что приводит к зависанию моего потока данных.

Из мониторинга /var/log/syslog на устройстве Linux кажется, что dhclient периодически вызывает eth0 чтобы сбросить, разорвав соединение.

В /var/log/syslog, сначала все хорошо, но потом время от времени пишет:

Jan  1 00:26:01 localhost dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
Jan  1 00:26:04 localhost dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
Jan  1 00:26:08 localhost dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6
Jan  1 00:26:14 localhost dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
Jan  1 00:26:17 localhost dhclient: No DHCPOFFERS received.
Jan  1 00:26:17 localhost dhclient: Trying recorded lease 192.168.10.39

Обратите внимание, что в то время как выше DHCPDISCOVER запросы отправлены, У меня все еще есть соединение, так как мой поток данных с устройства Linux на ПК с Windows все еще жив. Но как только я вижу Trying recorded lease 192.168.10.39 сообщение, соединение разорвано и мой поток данных зависает.

Чтобы попытаться отладить это, на устройстве Linux я убиваю avahi-autoipd и перезапускаю его вручную в режиме отладки:

avahi-autoipd --debug eth0

И результат, который я вижу от avahi-autoipd, выглядит следующим образом:

  Successfully claimed IP address 169.254.190.129

На данный момент все хорошо. Но через некоторое время, как только Trying recorded lease ... вывод происходит в /var/log/syslog (см. выше) соединение разорвано, и я вижу следующую последовательность выходных сообщений от avahi-autoipd:

  A routable address has been configured.
  Callout UNBIND, address 169.254.190.129 on interface eth0
  No longer a routable address configured, restarting probe process.
  A routable address has been configured.
  No longer a routable address configured, restarting probe process.
  Received conflicting probe ARP packet.
  Trying address 169.254.27.206
  Callout BIND, address 169.254.27.206 on interface eth0
  Successfully claimed IP address 169.254.27.206

Периодически (каждые несколько минут, но это кажется довольно случайным) это происходит снова, каждый раз разрывая соединение. avahi-autpiod выводит:

  A routable address has been configured.
  Callout UNBIND, address 169.254.27.206 on interface eth0
  No longer a routable address configured, restarting probe process.
  A routable address has been configured.
  No longer a routable address configured, restarting probe process.
  Callout BIND, address 169.254.27.206 on interface eth0
  Successfully claimed IP address 169.254.27.206

Когда это происходит, обычно локальный адрес ссылки остается прежним, но иногда он меняется. Но даже когда локальный адрес ссылки остается прежним, мой поток данных все равно умирает.

Если ПК с Windows подключен к устройству Linux через сеть с DHCP-маршрутизатором, я не вижу проблемы. Это происходит только в том случае, если они подключены напрямую через локальный адрес канала (169.254.x.x).

Итак, похоже, что dhclient не соблюдает тот факт, что я установил соединение на eth0 через локальный адрес ссылки (используя avahi-autoipd) ...?

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

Есть ли способ настроить dhclient на не сбросить eth0 при подключении через локальный адрес ссылки / avahi-autoipd?

Вот версии dhclient и avahi-autoipd, которые я использую:

$ dhclient --version
isc-dhclient-4.2.2

$ sudo avahi-autoipd --version
avahi-autoipd 0.6.31

Мой /etc/network/interfaces файл следующий:

$ cat /etc/network/interfaces

# Wired adapter #1
auto eth0
#allow-hotplug eth0
   iface eth0 inet dhcp

iface wlan0 inet dhcp
       wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

# Local loopback
auto lo
    iface lo inet loopback

Информация об устройстве Linux:

$ uname -srvmo
Linux 3.14.14-cubox-i #14 SMP Tue Jul 28 10:46:10 CDT 2015 armv7l GNU/Linux

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="http://bugs.debian.org/"


$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.8 (wheezy)
Release:        7.8
Codename:       wheezy

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