0
$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  8.8.8.8  3.158 ms  4.246 ms  5.054 ms
 2  * * *
 3  8.8.8.8  9.121 ms  10.245 ms  9.327 ms
 4  8.8.8.8  12.134 ms  13.160 ms  13.144 ms
 5  8.8.8.8  9.727 ms  10.938 ms  9.899 ms
 6  * * *
 7  8.8.8.8  8.138 ms  12.061 ms  11.841 ms

$ traceroute -n --icmp 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  8.8.8.8  2.046 ms  1.976 ms  1.962 ms
 2  8.8.8.8  9.557 ms  9.547 ms  9.536 ms

$ traceroute -n --udp 8.8.8.8
<similar output to default mode but keeps going with * * * after last hop>

That's the correct number of hops for the default mode (first invocation above), with correct timings, but where are the IPs of the router at each hop?

traceroute 2.1.0

iptables was cleared: iptables -F && iptables -F -t nat Nothing special in routing table:

$ ip route
default via 192.168.0.1 dev eth0 proto static 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9

The strangest thing is this problem happens on 3 different Linux hosts on the same LAN (Arch Linux on x86_64 and on aarch64 and on armv7h), but does NOT happen on a third host (Arch Linux on WSL subsystem on Windows).

UPDATE: the difference between the hosts is whether the host's IP assignment is via DHCP from the router (traceroute works) or statically assigned in client config (traceroute breaks).

alexei
  • 103
  • 3

1 Answers1

0

A workaround that eliminated the problem for me was to let the NATing router assign IP to the client via DHCP, instead of setting a static IP configuration in the client.

Presumably, the NAT configuration in the router differs in some subtle way between clients that registered with the router's DHCP server vs. clients that just show up on the switch subnet. I tried hard but failed to find out what exactly is the router configuring that's not happening unless the client is using DHCP. I tried registering the static clients in the router's database via web interface, but it made no difference. Also looked through the telnet interface, but there's no iptables in the shell and could find anything relevant among commands and dumps. Router has proprietary firmware.

alexei
  • 103
  • 3