过完年回来装了个gentoo,在上面配置tftp服务器怎么就是不行,郁闷了一个星期了。网上还找不到!
最后发现两个问题导致的,写出来给大家参考一下。
开始无论如何都不行,wireshark抓出来的包发现PC应答的第一个包板子没收到!开始怀疑另外一个同事也在调(我们的板子mac和ip都是一样的),是不是包给发到他那了。改mac、ip都不行。
然后我自己弄了一个路由器,自己弄了个小网,还是不行。
我的in.tftpd的设置根据网上说的,写的:
INTFTPD_OPTS="-l -c -s ${INTFTPD_PATH}"
结果无论如何也不行,后来看了一下man,里面有一个参数--address的参数,我就死马当活马医的。加上了
INTFTPD_OPTS="-l -c -s ${INTFTPD_PATH} --ipv4 -a 192.168.0.101:69"
结果OK了!
后来想了一下,可能是因为我的机器有两块网卡,以前还单独插过一块PCI的网卡,但没使用了,开机也没启动。网线插在eth1上。
按照man上写的in.tftp加上--listen(也就是-l)参数时
The default is to listen to the tftp port specified in /etc/services on all local addresses.
但tftp是咋知道locale address的,还真就没再继续研究了。反正加上eth1的地址就OK了。
后来换到公司的局域网,因为我的机器还是cvs的服务器。结果又不行了,又郁闷了半天。
又用wireshark抓包,结果发现第一个数据包都正常,但从第二个包开始是数据,PC发出去的包都分片了,板子没有收到!
当时就怀疑到了MTU,用ifconfig查看一下,我的eth1的mtu=576,而wireshark抓到的,tftp分片的大小是1480。
用ifconfig eth1 mtu 1500重新设置MTU就OK了。
就开始查dhcp,结果我的dhcp的设置里面mtu是自动获取的,而我们其他同事的也都是自动获取的,他们的都是1500,就我的是576!
设置路由器,换成dhclient(gentoo的dhcp是他自己写的,好像很慢),改设置。
最后发现dhclient.conf里面有如下设置:
option interface-mtu 1500;
加上以后如下:
lease {
interface "eth1";
option interface-mtu 1500;
}
不知道为啥,加上了也不好使。
最后看了看/sbin/dhclient-script,在获取地址的时候会调用这个脚本。
里面有一个变量mtu_arg,会判断new_interface_mtu的变量是否存在,存在就会设置为new_interface_mtu的值,最后又会通过ifconfig mtu new_interface_mtu命令进行设置。
最后没办法在profile里面加了new_interface_mtu这个的环境变量OK了!
最后也是不知道为啥路由器给我一个这个值,而且dhclient.conf里面的设置还没用!
能用就先用着吧,这个只是工具。
阅读(4144) | 评论(0) | 转发(0) |