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

Не удается обнаружить локальный адрес IPv4-канала при настроенном статическом IP-адресе

У меня есть локальные адреса ссылки, работающие из коробки в сочетании с DHCP, поскольку, когда DHCP нет, устройство не получает IP, а только локальный для ссылки. Тем не менее, мне нужно, чтобы локальные адреса ссылок работали, даже если я настраиваю интерфейсы статически. Я не знаю, как мне поступить. Вот что я сделал:

auto eth0
allow-hotplug eth0
        iface eth0 inet static
        gateway 192.168.0.1
        address 192.168.0.25
        netmask 255.255.255.0
        post-up /usr/sbin/avahi-autoipd --force-bind --daemonize --wait $IFACE 2> /dev/null
        pre-down /usr/sbin/avahi-autoipd --kill $IFACE 2> /dev/null

И вот результат:

$ ifconfig
eth0      Link encap:Ethernet  HWaddr d0:63:b4:00:88:1f
          inet addr:192.168.0.25  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::d263:b4ff:fe00:881f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:554 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:33114 (33.1 KB)  TX bytes:56243 (56.2 KB)

eth0:avahi Link encap:Ethernet  HWaddr d0:63:b4:00:88:1f
          inet addr:169.254.5.135  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Все хорошо, у моей цели 2 локальных IP. Теперь я хочу получить к нему доступ, подключив сетевой кабель напрямую. Я не могу просматривать его с помощью avahi-browse, «avahi-browse -alr» возвращает только статический адрес 192.168.0.25 или локальную ссылку IPv6, но никогда - локальную ссылку IPv4. Я могу использовать ssh для цели, используя локальный адрес ссылки 169.254.5.135! и я не могу этого сделать с отчетами avahi-browse статического адреса, потому что для этого нет маршрута, это просто кабельное соединение. Я просто не знаю, как я могу обнаружить этот локальный IP-адрес ... Это последний кусок в этой головоломке, так как локальный IP-адрес работает. Это похоже на то, что статическая конфигурация имеет приоритет над обнаружением.

Обратите внимание, что все машины сообщают о службе рабочих станций avahi.

РЕДАКТИРОВАТЬ

Ах, я забыл установить службу рабочей станции публикации в целевом файле avahi-daemon.conf. Итак, после настройки поведение изменилось. avahi-browse -ar, даже когда выполняется изнутри цели, перечисляет не свой собственный локальный адрес ссылки, а только его IPv6 и статический IPv4. Итак, если цель сама по себе больше не может просматривать этот локальный адрес ссылки, как вообще подключенная машина могла это сделать? Я не знаю, как сделать список действительных адресов в avahi-browse.

~ ❯❯❯ ssh francisco@169.254.5.135                                                                                                                  archlinux ✱
francisco@169.254.5.135's password:
  ____      _                 _ ____     __  __
 / ___|   _| |__   _____  __ (_)___ \ ___\ \/ /
| |  | | | | '_ \ / _ \ \/ / | | __) / _ \\  /
| |__| |_| | |_) | (_) >  <  | |/ __/  __//  \
 \____\__,_|_.__/ \___/_/\_\ |_|_____\___/_/\_\


Welcome to ARMBIAN Ubuntu 14.04.4 LTS 3.14.60-cubox

System load:   0.00             Up time:       35 min
Memory usage:  5 % of 3788Mb    IP:            192.168.0.25
CPU temp:      47°C
Usage of /:    4% of 29G

Last login: Wed Feb 24 04:19:27 2016 from 169.254.4.29
francisco@cubox-i:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether d0:63:b4:00:88:1f brd ff:ff:ff:ff:ff:ff
    inet 169.254.5.135/16 brd 169.254.255.255 scope link eth0:avahi
       valid_lft forever preferred_lft forever
    inet 192.168.0.25/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d263:b4ff:fe00:881f/64 scope link
       valid_lft forever preferred_lft forever
3: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default
    link/ether f6:4b:80:39:3e:0b brd ff:ff:ff:ff:ff:ff
4: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 6c:ad:f8:1d:4b:87 brd ff:ff:ff:ff:ff:ff
francisco@cubox-i:~$ avahi-browse -ar
+   eth0 IPv6 cubox-i [d0:63:b4:00:88:1f]                   Workstation          local
+   eth0 IPv4 cubox-i [d0:63:b4:00:88:1f]                   Workstation          local
=   eth0 IPv6 cubox-i [d0:63:b4:00:88:1f]                   Workstation          local
   hostname = [cubox-i.local]
   address = [fe80::d263:b4ff:fe00:881f]
   port = [9]
   txt = []
=   eth0 IPv4 cubox-i [d0:63:b4:00:88:1f]                   Workstation          local
   hostname = [cubox-i.local]
   address = [192.168.0.25]
   port = [9]
   txt = []

У меня была такая же проблема, и я понимаю, почему ваше утверждение

Это похоже на то, что статическая конфигурация имеет приоритет над обнаружением.

отчасти правильно. По крайней мере, поведение объяснимо.

Avahi публикует только локальные адреса ссылки, если они единственные в ссылке, см. [https://github.com/lathiat/avahi/blob/1cc2b8e8d62e939b8bd683f795794878863931af/avahi-core/iface.c#L707 provided[1]. Вы также можете наблюдать это поведение при запуске avahi-daemon в конфигурации вашего интерфейса, в выходных данных указывается, какие адреса публикуются. Поскольку существует два IPv4-адреса (статический и локальный для ссылки), локальный не публикуется. Для IPv6 у вас есть только локальная ссылка, которую вы, соответственно, видите в своем avahi-браузере.

Как говорится в Википедии

RFC 3927 предостерегает от одновременного использования адресов IPv4 разной области [6], таких как настройка локальных адресов канала, а также глобально маршрутизируемых адресов на одном интерфейсе. Таким образом, хосты ищут DHCP-сервер в сети перед назначением локальных адресов.

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

Правда в том, что я могу получить доступ к статическому IP 192.168.0.25! Проблема заключалась в том, что я пытался установить связь с помощью прямого кабеля, когда мой ноутбук был подключен к Wi-Fi в сети 192.168.0.0/24. При отключении Wi-Fi я получаю доступ к 192.168.0.25.