Маршруты Linux для двухточечной сети Ethernet при наличии маршрута по умолчанию

РЕШЕНИЕ : Опечатка в IP-адресе интерфейса Ethernet моего ноутбука (см. Принятый ответ). Следующая запись, скорее всего, является правильной настройкой.


Я хотел бы обмениваться данными с Raspberry Pi (rpi) через двухточечный Ethernet между моим ноутбуком и rpi.

Мой ноутбук подключен к Интернету через беспроводной интерфейс wlan0 , управляемый NetworkManager (DHCP). Мой интерфейс Ethernet - eth0 , и я явно сказал NetworkManager игнорировать его ( nmcli dev set eth0 managed no ).

rpi явно назначает адрес в диапазон 169.245.0.0/16 к его интерфейсу Ethernet. Когда я запускаю tcpdump на интерфейсе Ethernet моего ноутбука ( tcpdump -i eth0 -e ), я вижу, как rpi говорит с 169.254.85.159 . Я бы хотел хотя бы пинговать его со своего ноутбука.


Сначала я назначаю IP-адрес 169.245.0.1/16 Ethernet i Интерфейс на моем ноутбуке:

root@localhost ~ # ip addr add 169.245.0.1/16 dev eth0

Затем я проверяю, что у него правильный адрес:

root@localhost ~ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f5:fc:60:62:92:f1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.157/24 brd 192.168.0.255 scope global dynamic noprefixroute wlan0
       valid_lft 1893sec preferred_lft 1893sec
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:e5:3c:f4:34:11 brd ff:ff:ff:ff:ff:ff
    inet 169.245.0.1/16 scope global eth0
       valid_lft forever preferred_lft forever

Затем я проверяю таблицу маршрутов:

root@localhost ~ # ip r
default via 192.168.0.1 dev wlan0 proto dhcp metric 600
169.245.0.0/16 dev eth0 proto kernel scope link src 169.245.0.1
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.157 metric 600

Я предполагаю, что будет выбрано что-нибудь до 169.245.0.0/16 вверх по второму маршруту.


Но, очевидно, он выбирается по умолчанию при записи маршрута:

root@localhost ~ # traceroute 169.254.85.159
traceroute to 169.254.85.159 (169.254.85.159), 30 hops max, 60 byte packets
 1  _gateway (192.168.0.1)  4.961 ms  10.669 ms  10.681 ms^C

Не могли бы вы объяснить, почему пакет маршрутизируется по маршруту по умолчанию и как лучше всего настроить такую ​​сеть точка-точка?


Я также пытался использовать переключатель ping -B для принудительного использования интерфейса:

root@localhost ~ # ping -B eth0 169.254.85.159

Теперь в выводе tcpdump я вижу эхо-запросы и ответы от rpi, но, по-видимому, он не доставляется на пинг , потому что он молчит. Почему?

0
задан 19 January 2018 в 23:07
1 ответ

169.245.0.0/16 к интерфейсу Ethernet. Когда я запускаю tcpdump на Ethernet-интерфейсе моего ноутбука (tcpdump -i eth0 -e), я вижу, что rpi говорит с 169.254.85.159

У вас, кажется, опечатка. Ваш RPI 169.254.85.159. И вы назначили 169.245.0.0/16 на другой компьютер. 254!=245.

Хотя если ваш RPi действительно получает адрес APIPA в диапазоне 169.254/16, это заставляет меня задуматься, есть ли у вас хорошие возможности подключения.

0
ответ дан 5 December 2019 в 06:47

Теги

Похожие вопросы