Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unanswered ARP Requests on the ZeroTier Virtual Network Device #2269

Open
DarkArc opened this issue Apr 10, 2024 · 21 comments
Open

Unanswered ARP Requests on the ZeroTier Virtual Network Device #2269

DarkArc opened this issue Apr 10, 2024 · 21 comments

Comments

@DarkArc
Copy link

DarkArc commented Apr 10, 2024

Issue Description

Connections (recently) seem to be having intermittent issues. When running a tcpdump on the ZeroTier device ARP requests are the only traffic making it through.

# XXX.YYY.1.2 is running ZeroTier and performs routing to a LAN device
ssh <LAN device reachable via XXX.YYY.1.2>
[repeat]
listening on <zerotier network device>, link-type EN10MB (Ethernet), snapshot length 262144 bytes
[broken]
13:49:59.224896 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:00.236989 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:01.260979 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:04.997117 IP6 devicehostname.48227 > ff12::8384.21027: UDP, length 639
13:50:04.997537 IP devicehostname.44070 > XXX.YYY.255.255.21027: UDP, length 639
13:50:11.335450 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:12.396983 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:13.420982 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:19.920144 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:20.972999 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:21.996979 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:50:34.996735 IP6 devicehostname.48227 > ff12::8384.21027: UDP, length 639
13:50:34.997214 IP devicehostname.44070 > XXX.YYY.255.255.21027: UDP, length 639
13:51:04.997608 IP6 devicehostname.48227 > ff12::8384.21027: UDP, length 639
13:51:04.997747 IP devicehostname.44070 > XXX.YYY.255.255.21027: UDP, length 639
13:51:09.943530 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:51:10.956984 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:51:11.980980 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:51:34.996955 IP6 devicehostname.48227 > ff12::8384.21027: UDP, length 639
13:51:34.997329 IP devicehostname.44070 > XXX.YYY.255.255.21027: UDP, length 639
13:52:04.997903 IP6 devicehostname.48227 > ff12::8384.21027: UDP, length 639
13:52:04.998052 IP devicehostname.44070 > XXX.YYY.255.255.21027: UDP, length 639
13:52:34.997914 IP6 devicehostname.48227 > ff12::8384.21027: UDP, length 639
13:52:34.998342 IP devicehostname.44070 > XXX.YYY.255.255.21027: UDP, length 639
13:52:57.814714 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
13:52:58.014552 ARP, Reply XXX.YYY.1.2 is-at 6e:2f:47:0a:88:51 (oui Unknown), length 28
[now working!]

It seems like perhaps there's something going wrong with ZeroTier's handling of ARP requests on Linux? Perhaps something else is going on here?

System Information

Local ZeroTier version: 1.12.2
Remote ZeroTier version: 1.10.6

System:
  Host: devicehostname Kernel: 6.7.11-200.fc39.x86_64 arch: x86_64 bits: 64
  Desktop: KDE Plasma v: 5.27.11 Distro: Fedora Linux 39 (KDE Plasma)
@DarkArc DarkArc changed the title Unanswered ARP Requests from ZeroTier Unanswered ARP Requests on the ZeroTier Virtual Network Device Apr 10, 2024
@DarkArc
Copy link
Author

DarkArc commented Apr 10, 2024

We've updated the remote to ZeroTier 1.12.2 and rebooted the machine; we'll see if this affects the issue.

@laduke
Copy link
Contributor

laduke commented Apr 11, 2024

How many members on the network?

@DarkArc
Copy link
Author

DarkArc commented Apr 11, 2024

There are 15 nodes on the network.

@laduke
Copy link
Contributor

laduke commented Apr 11, 2024

Should be fine. Did the flow rules for that network get changed recently? Or the firewall rules on that node?

@DarkArc
Copy link
Author

DarkArc commented Apr 12, 2024

No changes to the firewalls or the node (sorry for the delay, I was checking with my colleagues to make sure they hadn't changed anything).

It's interesting that it's been fairly regular (as in every few days someone is seeing from their machine to this machine) but sporadic.

So far I haven't had any reports of issues or had any myself (following the update + reboot). I've got a TODO item to circle back in (at most) 30 days (to make sure I report back if it's cleared up).

I haven't seen anything in the ZeroTier changelogs that would suggest any changes in this area between 1.10.6 and 1.12.2; so it would be kind of strange if the update fixed something here.

@DarkArc
Copy link
Author

DarkArc commented Apr 25, 2024

Just saw this today for the first time since the report/update; so it's not resolved by updating to 1.12.2 or by the reboot. It does seem like it might take a significant amount of uptime before it manifests.

# Uptime for XXX.YYY.1.2
$> uptime
11:48:21 up 14 days, 18:46,  3 users,  load average: 0.04, 0.03, 0.00
# Uptime for my device / devicehostname
$> uptime
11:49:30 up 20:09,  1 user,  load average: 0.84, 0.57, 0.59

@DarkArc
Copy link
Author

DarkArc commented Apr 25, 2024

Huh, this was interesting, it actually happened while I had some SSH sessions open (I went to refill my tea, came back, and the SSH connections weren't responding):

TCP Dump
12:10:29.368851 IP XXX.YYY.1.2.mdns > mdns.mcast.net.mdns: 0 [2q] PTR (QM)? _ipp._tcp.local. PTR (QM)? _ipps._tcp.local. (45)                                                                                                                                                                                 
12:10:29.369729 IP6 fe80::6c2f:47ff:fe0a:8851.mdns > ff02::fb.mdns: 0 [2q] PTR (QM)? _ipps._tcp.local. PTR (QM)? _ipp._tcp.local. (45)                                                                                                                                                                       
12:10:29.885064 IP6 devicehostname > ff02::1:ff0a:8851: ICMP6, neighbor solicitation, who has fe80::6c2f:47ff:fe0a:8851, length 32                                                                                                                                                                                  
12:10:30.032854 IP6 fe80::6c2f:47ff:fe0a:8851 > devicehostname: ICMP6, neighbor advertisement, tgt is fe80::6c2f:47ff:fe0a:8851, length 32                                                                                                                                                                          
12:10:30.032879 IP6 devicehostname.38096 > fe80::6c2f:47ff:fe0a:8851.llmnr: Flags [S], seq 1688512505, win 32880, options [mss 2740,sackOK,TS val 3413864441 ecr 0,nop,wscale 7,tfo  cookiereq,nop,nop], length 0                                                                                                   
12:10:30.061463 IP6 fe80::6c2f:47ff:fe0a:8851 > devicehostname: ICMP6, destination unreachable,  unreachable prohibited fe80::6c2f:47ff:fe0a:8851, length 92                                                                                                                                                        
12:10:35.237322 IP6 fe80::6c2f:47ff:fe0a:8851 > devicehostname: ICMP6, neighbor solicitation, who has devicehostname, length 32                                                                                                                                                                                            
12:10:35.237358 IP6 devicehostname > fe80::6c2f:47ff:fe0a:8851: ICMP6, neighbor advertisement, tgt is devicehostname, length 24                                                                                                                                                                                            
12:10:57.057991 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:10:57.058263 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:11:27.061549 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:11:27.061716 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:11:57.060909 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:11:57.061187 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:12:27.060493 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:12:27.060790 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:12:43.326355 IP6 devicehostname > ff02::2: ICMP6, router solicitation, length 16                                                                                                                                                                                                                                 
12:12:57.060780 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:12:57.060952 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:13:27.060955 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:13:27.061178 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:13:57.060871 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:13:57.061040 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:14:27.059443 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:14:27.059554 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:14:57.059653 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:14:57.059918 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:15:27.059339 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:15:27.059519 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:15:57.059070 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:15:57.059249 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:16:27.058965 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:16:27.059258 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:16:57.059027 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:16:57.059213 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:17:27.059063 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:17:27.059308 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:17:57.058255 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:17:57.058338 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:18:27.058330 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:18:27.058391 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:18:57.058207 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:18:57.058391 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:19:27.057965 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:19:27.058147 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:19:57.057392 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:19:57.057532 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:20:27.058314 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:20:27.058583 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:20:57.057690 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534                                                                                                                                                                                                                                        
12:20:57.057859 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534                                                                                                                                                                                                                                     
12:21:22.644174 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8790, ack 20069, win 239, options [nop,nop,TS val 3366160955 ecr 202190446], length 52                                                                                                                                              
12:21:22.878175 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8790, ack 20069, win 239, options [nop,nop,TS val 3366161189 ecr 202190446], length 52                                                                                                                                              
12:21:22.901425 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8790:8842, ack 20069, win 239, options [nop,nop,TS val 3366161212 ecr 202190446], length 52                                                                                                                                              
12:21:23.118167 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8842, ack 20069, win 239, options [nop,nop,TS val 3366161429 ecr 202190446], length 104                                                                                                                                             
12:21:23.590166 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8842, ack 20069, win 239, options [nop,nop,TS val 3366161901 ecr 202190446], length 104                                                                                                                                             
12:21:24.542330 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8842, ack 20069, win 239, options [nop,nop,TS val 3366162853 ecr 202190446], length 104                                                                                                                                             
12:21:26.463142 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8842, ack 20069, win 239, options [nop,nop,TS val 3366164774 ecr 202190446], length 104                                                                                                                                             
12:21:27.057602 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534
12:21:27.057789 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534
12:21:28.126151 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:29.150146 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:30.174152 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:30.238388 IP devicehostname.58294 > 192.168.1.3.ssh: Flags [P.], seq 8738:8842, ack 20069, win 239, options [nop,nop,TS val 3366168549 ecr 202190446], length 104
12:21:37.854188 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:38.878168 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:39.903134 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:42.315825 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:43.358251 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:44.382151 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:45.406207 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:46.430156 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:47.454413 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:48.478213 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:49.502402 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:50.526150 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28                                                                                                                                                                                                                                      
12:21:51.550217 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28                                                                                                                                                                                                                                      
12:21:52.574423 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28                                                                                                                                                                                                                                      
12:21:53.598141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28                                                                                                                                                                                                                                      
12:21:54.622244 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28                                                                                                                                                                                                                                      
12:21:55.646161 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28                                                                                                                                                                                                                                      
12:21:56.671153 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:57.057529 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534
12:21:57.057815 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534
12:21:57.694219 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:21:58.718138 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
^@n12:21:59.742143 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:00.766561 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:01.790139 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:02.814147 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:03.838456 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:04.862133 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:05.886149 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:06.910202 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:07.934482 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:08.958161 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:09.982216 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:11.006391 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:12.030142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:13.054479 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:14.078142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:15.102133 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:16.126224 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:17.150474 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:18.174138 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:19.198228 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:20.222137 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:21.246155 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:22.270415 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:23.294144 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:24.318144 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:25.342232 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:26.366141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:27.057772 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534
12:22:27.057955 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534
12:22:27.390142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:28.414375 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:29.438208 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:30.462148 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:31.486423 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:32.510140 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:33.534421 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:34.558236 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:35.582431 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:36.606143 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:37.630227 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:38.654131 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:39.678140 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:40.702196 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:41.726141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:42.750164 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:43.774177 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:44.798141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:45.822142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:46.846231 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:47.870157 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:48.894146 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:49.918222 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:50.942142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:51.966140 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:52.990189 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:54.014141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:55.038150 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:56.062199 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:57.057446 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534
12:22:57.057597 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534
12:22:57.086141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:58.111135 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:22:59.134324 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:00.158143 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:01.182132 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:02.206176 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:03.230132 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:04.254141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:05.278452 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:06.302132 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:07.326135 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:08.350218 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:09.374142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:10.398326 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:11.422183 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:12.446148 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:13.470146 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:14.494196 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:15.518142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:16.542423 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:17.566235 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:18.590164 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:19.614399 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:20.638224 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:21.662137 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:22.686169 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:23.710225 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:24.734142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:25.758442 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:26.782516 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:27.057888 IP6 devicehostname.55205 > ff12::8384.21027: UDP, length 534
12:23:27.058167 IP devicehostname.60466 > XXX.YYY.255.255.21027: UDP, length 534
12:23:27.806140 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:28.830165 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:29.854208 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:30.878362 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:31.902145 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:32.926455 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:33.950142 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:34.974133 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:35.998240 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:37.022138 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:38.046141 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:39.070221 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:40.094146 ARP, Request who-has XXX.YYY.1.2 tell devicehostname, length 28
12:23:40.186033 ARP, Reply XXX.YYY.1.2 is-at 6e:2f:47:0a:88:51 (oui Unknown), length 28
12:23:40.186039 IP devicehostname.34786 > XXX.YYY.1.2.ssh: Flags [P.], seq 2954:3026, ack 4373, win 239, options [nop,nop,TS val 1947628668 ecr 3935908240], length 72
12:23:40.220879 IP XXX.YYY.1.2.ssh > devicehostname.34786: Flags [P.], seq 4373:4409, ack 3026, win 491, options [nop,nop,TS val 3937962439 ecr 1947628668], length 36
12:23:40.220904 IP devicehostname.34786 > XXX.YYY.1.2.ssh: Flags [P.], seq 3026:4070, ack 4409, win 239, options [nop,nop,TS val 1947629818 ecr 3937962439], length 1044
12:23:40.262709 IP XXX.YYY.1.2.ssh > devicehostname.34786: Flags [P.], seq 4409:4445, ack 4070, win 491, options [nop,nop,TS val 3937962477 ecr 1947629818], length 36
12:23:40.262735 IP XXX.YYY.1.2.ssh > devicehostname.34786: Flags [P.], seq 4445:4497, ack 4070, win 491, options [nop,nop,TS val 3937962477 ecr 1947629818], length 52
12:23:40.262780 IP devicehostname.34786 > XXX.YYY.1.2.ssh: Flags [.], ack 4497, win 239, options [nop,nop,TS val 1947629860 ecr 3937962477], length 0

@laduke
Copy link
Contributor

laduke commented Apr 25, 2024

sorry to ask, but are the peers directly connected when this happens?

@DarkArc
Copy link
Author

DarkArc commented Apr 25, 2024

I have no complaints with questions :)

It seems they're directly connected, yes.

@DarkArc
Copy link
Author

DarkArc commented Apr 25, 2024

One more possibly relevant detail, the remote system is a Raspberry Pi B+.

Maybe something x86 <-> ARM (or generally ARM) specific could be happening.

@DarkArc
Copy link
Author

DarkArc commented Apr 25, 2024

I have no complaints with questions :)

It seems they're directly connected, yes.

It just happened again; they're definitely directly connected (or at least my machine is reporting a direct connection to the remote) when this occurs.

@DarkArc
Copy link
Author

DarkArc commented May 3, 2024

So, I'm seeing this again today. I updated the local device to ZeroTier 1.14 and I'm unable to reach the remote device.

The local device consistently reports a direct connection. The remote device is going back and forth between RELAY and DIRECT state to the local device.

This is a different "remote" and "local" device entirely I'm working with today (the local device being a Framework laptop and the remote device lives in AWS).

@DarkArc
Copy link
Author

DarkArc commented May 3, 2024

I've poked at this a little more:

Adding Route. target: RRR.QQQ.ZZZ.0/21 via: XXX.YYY.1.1/32 src: XXX.YYY.117.102/32 iface: <ztiface>
rtnetlink error: Network is unreachable
Adding Route. target: LLL.OOO.0.0/23 via: XXX.YYY.1.2/32 src: XXX.YYY.117.102/32 iface: <ztiface>
rtnetlink error: Network is unreachable

These then get periodically retried with simply:

rtnetlink error: File exists

@DarkArc
Copy link
Author

DarkArc commented May 3, 2024

Okay, so I think I finally figured this out!

The rtnetlink errors seem to be a red herrring. They still occur even when everything is working properly.

We have the following rules in the rules engine:

drop
	not ethertype ipv4
	and not ethertype arp
	and not ethertype ipv6
;

tag server
  id 2
  enum 0 No
  enum 1 Yes
  default No;

break not tor server 1;

accept;

This is intended to stop peer <-> peer communication between peers that don't absolutely need to talk. What it seems like is happening is the ARP request are getting caught in this rule.

I've changed that break to the following to explicitly allow ARP requests:

break not tor server 1
     and not ethertype arp
;

I'm not sure if there's been a change in the rules engine or if something has happened in Linux's networking stack that is now making this necessary. However, I suspect this is the root cause.

I'm not sure if ZeroTier would like to change something about how the rules engine works here. It seems like that tag should still work (just not send the broadcast packet to the devices that aren't tagged with server).

@laduke
Copy link
Contributor

laduke commented May 3, 2024

oh good!

That should actually be fixed in 1.14. but both systems need to up on 1.14

Most of the rules examples should have had arp exceptions in them to avoid people hitting this quirk. Sorry for the lost time.
There is an issue in here somewhere that explains it all in way too much detail.
#2200

@DarkArc
Copy link
Author

DarkArc commented May 3, 2024

Thanks for the details; I'm going to go ahead and close this.

I'll reopen if we run into problems again but I suspect this is resolved (by either 1.14 or explicitly by the rule changes).

@DarkArc DarkArc closed this as completed May 3, 2024
@DarkArc
Copy link
Author

DarkArc commented May 6, 2024

Gah, sadly ... this was not the problem. I am again seeing the issue.

Not all systems have been updated to 1.14 however, the rule set now starts with:

accept ethertype arp;

So, I think the 1.14 ARP issue may just have been another similar (but different) problem.

@DarkArc DarkArc reopened this May 6, 2024
@DarkArc
Copy link
Author

DarkArc commented May 7, 2024

We've updated the remote machine to 1.14. I'll continue to keep an eye on this and report back whether that has an effect.

@DarkArc
Copy link
Author

DarkArc commented May 8, 2024

Saw this again today with both machines running 1.14.

I did note an interesting detail this time. The remote device was claiming to be directly connected at <REMOTE_IP>/9993. The problem with that is, there's almost no way it was actually accessible at <REMOTE_IP>/9993 because the device is behind a router performing NAT.

When the ARP requests started getting resolved the device reported it was <REMOTE_IP>/23380 (a randomly assigned port number that actually makes some amount of sense).

Any idea why it would be reporting 9993?

@DarkArc
Copy link
Author

DarkArc commented May 8, 2024

I just noticed consistent NAT was not enabled on the SonicWall. I wonder if this is a case of the ZeroTier port mapping just being unstable and thus the port mapping is regularly expiring when there's a periodic of silence in the traffic.

I've changed that setting ... hopefully that is the real issue. It's very strange that we weren't seeing a RELAY status or something of that ilk.

@DarkArc
Copy link
Author

DarkArc commented May 8, 2024

Aha, I think I found another piece of the puzzle. It seems there was a breakage in miniupnp on FreeBSD 15:

miniupnp/miniupnp#715

This potentially explains why this disruption has been more prominent recently. My NAT presumably was previously much more reliable where as now both NATs are not straight forward.

I hadn't noticed the full extent of this because my home network is IPv6 so only the limited number of devices that I have to connect to via IPv4 peer-to-peer were having issues.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants