1

Я пытаюсь подключить мой Raspberry Pi (модель B, версия 2.0) к маршрутизатору с помощью USB-ключа. используя raspi-config, кажется, что он работает на стороне pi, если ifconfig выдает:

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.100.102.188  netmask 255.255.255.0  broadcast 10.100.102.255
            inet6 fe80::c33b:ae6:8b40:dc28  prefixlen 64  scopeid 0x20<link>
            ether b8:27:eb:c2:e8:a4  txqueuelen 1000  (Ethernet)
            RX packets 158  bytes 19362 (18.9 KiB)
            RX errors 0  dropped 1  overruns 0  frame 0
            TX packets 133  bytes 20949 (20.4 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.100.102.221  netmask 255.255.255.0  broadcast 10.100.102.255
            inet6 fe80::a0e7:13f2:ba6e:cf2b  prefixlen 64  scopeid 0x20<link>
            ether 00:36:76:55:54:a2  txqueuelen 1000  (Ethernet)
            RX packets 214  bytes 39050 (38.1 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 45  bytes 5948 (5.8 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

но, глядя на мой маршрутизатор, кажется, что оба IP-адреса связаны с портом Ethernet:

    Hostname IP address                       MAC address        Type             Port
    pi-1     10.100.102.221 10.100.102.188    b8:27:eb:c2:e8:a4  Ethernet         3
    pi-1                                      00:36:76:55:54:a2  Wireless-2.4GHz 

это действительно странно, так как оба интерфейса находятся в "зеленом" состоянии, но IP-адрес Wi-Fi как-то назначен для Ethernet.

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

** Я тестировал USB на другом Pi (Pi 2), и он работает нормально

обновление 1

это расибие

uname -a 
Linux pi-1 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l GNU/Linux

cat /etc /network /interfaces (не изменили это)

    # interfaces(5) file used by ifup(8) and ifdown(8)

    # Please note that this file is written to be used with dhcpcd
    # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

    # Include files from /etc/network/interfaces.d:
    source-directory /etc/network/interfaces.d

lsb_release

    No LSB modules are available.
    Distributor ID: Raspbian
    Description:    Raspbian GNU/Linux 9.4 (stretch)
    Release:        9.4
    Codename:       stretch

обновление 2

это становится еще более странным, более пристальный взгляд на мои устройства, подключенные к маршрутизатору, я вижу, что пи получает IP по Wi-Fi, а затем тот же IP-адрес перемещается в Ethernet - сбивает с толку

1 ответ1

0

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

  1. Когда маршрутизатор или какой-либо другой хост в локальной сети пытается достичь 10.100.102.221 он отправляет запрос ARP для этого адреса, запрашивая перевод на MAC-адрес. (Сам запрос транслируется, поскольку, конечно, MAC-адрес еще не известен .)

  2. Ethernet и Wi-Fi вашего маршрутизатора соединены в одну подсеть и один широковещательный домен. Таким образом, один и тот же широковещательный запрос достигает Raspberry на всех интерфейсах, принадлежащих сети (как eth0, так и wlan0).

  3. В Linux (и во многих других операционных системах) IPv4-адреса, как полагают, принадлежат хосту, а не интерфейсу, поэтому Raspberry отвечает на все полученные запросы - даже если это не интерфейс, который содержит адрес.

  4. Маршрутизатор получает оба ответа ARP: один по Ethernet, утверждая, что 10.100.102.221 is at b8:27:eb:c2:e8:a4 , и один по Wi-Fi, утверждая, что 10.100.102.221 is at 00:36:76:55:54:a2 . Поскольку у Ethernet обычно задержка ниже, чем у Wi-Fi, первый ответ приходит быстрее, и именно это маршрутизатор хранит в своем ARP-кэше.

  5. Таблица маршрутизатора, кажется, построена на основе содержимого его кэша ARP и кэша моста моста, и, поскольку ответы ARP на оба IP-адреса поступают быстрее через Ethernet, они отображаются под портом Ethernet.

В Linux поведение в пункте № 3 можно изменить с помощью sysctl:

sysctl net.ipv4.conf.all.arp_ignore=1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .