问题现象:
医大一院项目发现,前置机,无法用网口1,设置成192.168.2.X的IP上跟服务器建立连接,网口2则可以。
问题分析
通讯管理机有两个网口,网口1(对应eth0)跟网口2(对应eth1)。管理机的网线连在网口1。
初始IP设置如下:(配置文件 /etc/init.d/S40network)
管理机配置软件再出厂配置时下载setnet.sh 进行IP跟端口的重新设置如下图:
设置完成后,网口1跟网口2的IP变为:
现场操作步骤如下:工程现场通过管理机配置软件的IP设置功能进行现场设置,如下图:
将网口1的IP,网关设为2网段,网口2的IP,网关设为其他网段,比如3网段。如下图:
设置完成后,网口1无法通过路由器跟9000服务器通讯。
为方便分析, 经沟通后,初步确定现场环境:
165E管理机放在2网段
9000服务器不再2网段,两者之间通过1个路由器连接。
问题复现:
按上述步骤设置后,检查管理机的IP跟网关如下:
检查设置文件:setnet.sh
修改setnet.Sh文件,指定网口如下:
[root@M28x ~]# cat /opt/nts/setnet.sh
#! /bin/sh
ifconfig eth0 192.168.2.120 netmask 255.255.255.0
route add default gw 192.168.2.1 eth0
ifconfig eth0 up
ifconfig eth1 192.168.3.120 netmask 255.255.255.0
route add default gw 192.168.3.1 eth1
ifconfig eth1 up
后重启管理机,检查ip跟gw设置如下:
进一步测试管理机经路由器访问跨网段的工作情况:工作正常。
释疑:
为什么网口1只有在设置2网段的时候gw失效,而其他网段都正常:
1、管理机上电先运行操作系统,这时候2个网口通过S40设置了默认IP
2、操作系统加载完成后, 运行start.sh脚本文件,通过setnet.sh进行网口参数重新设置。代码顺序执行如下:
ifconfig eth0 192.168.2.120 netmask 255.255.255.0 //先设网口0的IP
route add default gw 192.168.2.1 //再设2网段的网关,未指定网口,因1有一个默认2网段,此命令执行完毕后,eth1的gw变成192.168.2.1。
ifconfig eth0 up //eth0 设置生效。
ifconfig eth1 192.168.3.120 netmask 255.255.255.0 //再设置网口1的IP,3网段。
route add default gw 192.168.3.1 //系统又将eth1的 gw变位192.168.3.1
ifconfig eth1 up //eth1 设置生效。
所以我们查到的route信息丢失了2网段的gw,也即根本没有设成功过。
解决方法
1、修改配置管理工具IP配置功能,setnet.sh 脚本文件再配置网关时增加网口信息,升级版本。如下:
#! /bin/sh
ifconfig eth0 192.168.2.120 netmask 255.255.255.0
route add default gw 192.168.2.1 eth0
ifconfig eth0 up
ifconfig eth1 192.168.3.120 netmask 255.255.255.0
route add default gw 192.168.3.1 eth1
总结建议
修改网口的参数信息时,需附带网口参数,否则可能达不到预期效果