Hello,
I hope someone could help me, I'm pretty sure that my problem is related with OpenWRT and some configuration on the switch.
So, when I'm running a tftp locally on the same machine, it perfectly works (rockpi4-services=192.168.4.146):
root@rockpi4-services:/mnt/nvme/netboot# echo "get netboot.xyz.kpxe" | tftp 192.168.4.146 && rm netboot.xyz.kpxe
tftp> Received 368904 bytes in 0.1 seconds
However, when I'm trying to get it through another machine (connected on switch gs308t with OpenWRT, or any other machine on my network), it goes to timeout:
tftp> root@rock64-home:/tmp# echo "get netboot.xyz.kpxe" | tftp 192.168.4.146
tftp> Transfer timed out.
I've been through tcpdump (on the server that run tftp-hpa) and I don't get it. How I could debug a bad udp cksum ?!
# the distant machine connect on port 69 perfectly
root@rockpi4-services:/mnt/nvme/netboot# tcpdump udp port 69 -vv -X
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:17:10.118701 IP (tos 0x0, ttl 64, id 57601, offset 0, flags [DF], proto UDP (17), length 56)
192.168.4.126.51414 > 192.168.4.146.tftp: [udp sum ok] 28 RRQ "netboot.xyz.kpxe" netascii
0x0000: 4500 0038 e101 4000 4011 cf52 c0a8 047e E..8..@.@..R...~
0x0010: c0a8 0492 c8d6 0045 0024 7b85 0001 6e65 .......E.${...ne
0x0020: 7462 6f6f 742e 7879 7a2e 6b70 7865 006e tboot.xyz.kpxe.n
0x0030: 6574 6173 6369 6900 etascii.
# but when they exchange data (port 51414), I get udp chk sum error at every request
root@rockpi4-services:/mnt/nvme/netboot# tcpdump udp port 51414 -vvv -X
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
19:17:18.126454 IP (tos 0x0, ttl 64, id 62440, offset 0, flags [none], proto UDP (17), length 544)
192.168.4.146.40258 > 192.168.4.126.51414: [bad udp cksum 0x8c7e -> 0xbb47!] UDP, length 516
0x0000: 4500 0220 f3e8 0000 4011 fa83 c0a8 0492 E.......@.......
0x0010: c0a8 047e 9d42 c8d6 020c 8c7e 0003 0001 ...~.B.....~....
I'm completely stuck to debug that. Any one could guide me ?