netboot icon indicating copy to clipboard operation
netboot copied to clipboard

TFTP bug: response source IP is not client request

Open qin-nz opened this issue 5 years ago • 1 comments

Hi, My machine has two IPs, one on loopback interface and another on an ethernet interface. I hope client can use loopback address as tftp server address.

My IP is:

lo: 192.0.2.255/32
xgbe0: 192.0.2.1/31

tftpd is listened on 0.0.0.0 using s.ListenAndServe(":69")

If client request 192.0.2.255, server will got following err

"client-ip:port": sending data packet 1: read udp 192.0.2.1:port->client-ip:port: read: connection refused

Please notes source of response packet use xgbe0's IP as source.

If client request 192.0.2.1, it's ok.


If listened on loopback, using s.ListenAndServe("192.0.2.255:69"), and client request 192.0.2.255. It still use xgbe0's ip to response.

qin-nz avatar Oct 10 '20 06:10 qin-nz

This can be fixed by update Linux kernel routing table, using following command

ip route add [client-subnet] via [gateway] dev xgbe0 src 192.0.2.255

But I think this is still a bug, and xinetd tftp can handle it correctly.

qin-nz avatar Oct 10 '20 06:10 qin-nz