cnlamo 2012-10-19
ARM linux开发中,我们经常将主机Ubuntu设置成静态IP。这有一些好处,譬如你的uboot的环境变量中serverip就不用每次改来改去的了。
我一直也是这么做的,但是今天突然发现这样会带来很多问题。先说我碰到的情况:
做好的ubuntu和开发板,一切都ok。今天打开时突然发现以下症状:
1、SecureCRT突然提示远程主机拒绝连接。baidu一搜这种问题都是因为主机的ssh服务没开启,但是我明明开启了啊,也用netstat验证过了。
2、uboot中tftp来download文件总是不成功,反复重试好多次都不行。之前也有碰到过类似的情况,重新烧录了uboot就好了。这次重新烧录uboot还是不行。
3、不死心,再进之前烧好的linux中,使用tftp下载文件。还是提示time out而失败。·····
打开另一个之前的虚拟机,尝试开发板linux中tftp下载,竟然成功了。于是怀疑是虚拟机ubuntu被我搞坏了,幸好这个ubuntu之前有保存过一次,恢复到那个版本再试,还是不成功····抓狂·····
突然想到,这两个ubuntu有个差异就是ip不同。成功的那个ubuntu是dhcp自动分配的IP,而失败的这个则是静态指定的IP。于是乎先记录下来dhcp分配的这个IP,然后关掉该Ubuntu,把失败的这个ubuntu的IP改成这个IP。再试,成功了。SecureCRT和tftp都恢复正常了。
至此,事情已经非常明晰了。自动分配的IP肯定不会IP冲突,而静态IP呢如果因为局域网内别人比你先开机,从而在DHCP自动分配IP时使用了你这个IP,那你就悲剧了。