netboot
netboot copied to clipboard
TFTP bug: response source IP is not client request
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.
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.