TFTP trouble, bad udp cksum

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 ?

Try using mode binary

Doesn't change anything :confused:

Could it be related with the absence of module nf_nat_tftp ? as suggested (https://serverfault.com/questions/943344/unable-to-nat-tftp-traffic-because-iptables-is-not-forwarding-the-return-connect)

root@edgerouterx:~# lsmod | grep tftp

I don't know how to properly install it