SOLUTION: There's a typo in the IP address on my laptop Ethernet interface (see the accepted answer). The following writeup is most probably proper setup.
I'd like to communicate with Raspberry Pi (rpi) via point-to-point Ethernet between my laptop and the rpi.
My laptop is connected to the Internet via wireless
wlan0 interface managed by NetworkManager (DHCP). My Ethernet interface is
eth0 and I've explicitly told NetworkManager to ignore it (
nmcli dev set eth0 managed no).
rpi apparently assigns address in the range
126.96.36.199/16 to its Ethernet interface. When I run tcpdump on my laptop Ethernet interface (
tcpdump -i eth0 -e) I can see the rpi talking from
169.254.85.159. I'd like to at least ping it from my laptop.
First I assign IP address
188.8.131.52/16 to the Ethernet interface on my laptop:
root@localhost ~ # ip addr add 184.108.40.206/16 dev eth0
Then I check that it has the correct address:
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 220.127.116.11/16 scope global eth0 valid_lft forever preferred_lft forever
Then I check the route table:
root@localhost ~ # ip r default via 192.168.0.1 dev wlan0 proto dhcp metric 600 18.104.22.168/16 dev eth0 proto kernel scope link src 22.214.171.124 192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.157 metric 600
I assume that anything to
126.96.36.199/16 will be picked up by second route entry.
But apparently it's picked up by default route entry:
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
Could you please explain why is the packet routed through the default route and what's the most proper way to set up such point to point network?
I've also tried to use the
-B switch of ping to force the interface:
root@localhost ~ # ping -B eth0 169.254.85.159
Now in the
tcpdump output I can see echo requests and replies from rpi but apparently it's not delivered to the
ping because it's silent. Why?