最近遇到一个奇怪的问题,记录一下查问题的过程,问题所在。
描述一下现象:TX2有线网口接路由器,通过路由器接其它网络设备没有问题。网络不会断开。TX2直接接电脑或者其它无dhcp功能的设备就过3分钟网络就断开。
问题分析以及查找过程。首先怀疑自己的静态IP配置是否正确,/etc/network/inference
经和网上对比,确认设置正确。如果不正确,启动之后就不会可以ssh登录。
在不能以静态ip登录之后,以192.168.55.1登录,这是由一个l4tbr0网桥连接的ip。查看eth0的IP没有了。多了一个eth0:avahi 所以确认是其它位置修改了.
一开始以为是网桥导致的,所以我把网桥以及其它的网络设备都关了,还是不行。
也怀疑过network-manager修改了设置,所以service network-manager stop,也关了,同样的现象。
查找avahi,网上说是一个守护进程
ps -aux|grep avahi
有一个avahi-daemon的守护进程,但是上网查了一下这个似乎没什么用,所以就把它直接apt-get remove了。
以为这下子可以了,但是还是不行。
我的设备启用了socketcan所以怀疑是can启动导致的,关了,发现还是一样。
正在走投无路的时候,去查看/etc/rc.local ,里面启动了一个report_ip_to_host.sh的脚本。尝试着注释了。
启动之后没有断网。所以问题就出在这里了。
打开这个脚本看一下
#!/bin/sh
HOST_IP=""
HOST_PORT="33338"
INTERVAL=1
SRC_IP=""
DEV=""
dhclient eth0
sleep 1
dpkg -l | grep rsync || apt-get update
apt-get install -y rsync
apt-get install -y netcat-openbsd
sleep 1
while true; do
ip route get $HOST_IP >/dev/null
if [ $? -eq 0 ]; then
SRC_IP=`ip route get $HOST_IP | grep " dev " | sed 's/.* src //'`
DEV=`ip route get $HOST_IP | grep " dev " | sed 's/.*dev \([^ ][^ ]*\).*/\1/'`
status=`echo "$SRC_IP" | /bin/nc $HOST_IP $HOST_PORT`
fi
sleep $INTERVAL
done
这里有一个dhclient
dhclient是一个DHCP协议客户端,它使用DHCP协议或者BOOTP协议或在这两个协议都不可用时使用静态地址来配置一个或多个网络接口。一般存在一个默认文件 dhclient.conf,但可以针对不同网卡创建对应网卡名称的配置文件,dhclient-eth0.conf,dhclient-eth1.conf
这个脚本是在烧写系统的时候安装用的,但是我在烧写的时候,组件总是失败,所以就通过scp的方式,然后手动安装的。这个脚本没看太明白为什么会导致eth0 ip没有了。有时间再细分析下吧。
遇到问题,分析问题,解决问题,在解决问题过程中应该保持不骄不躁,什么问题都有解决的时候,只要坚持下来。