支持多网络是电鱼嵌入式板卡的特色之一,电鱼电子推出的SAIL-IMX6系列核心板,都带有以太网口,同时还可以支持wi-fi以及3G/4G模块。本文是实现对于Linux系统在电鱼SAIL-IMX6Q开发板中的多网络的优先级的设置。
软件:板上linux系统和PC上的超级终端
硬件:电鱼SAIL-IMX6Q开发板、PC和WiFi模块(连接到红框处)
SAIL-IMX6Q开发板利用232串口连接电脑,并连接上电源。
网线连接PC和开发板的网口
~# ifconfig
直接使用udhcpc命令,该命令会自动获取ip并设置默认网关:
~# udhcpc -i eth0 -q //通过DHCP自动获取IP地址
可以使用命令~# route –n查看系统所有的路由信息,参数-n是不进行地址解析,如果不添加-n选项,route命令会根据/etc/resolv文件中配置的DNS服务器进行地址解析,所以返回时间跟DNS服务器的响应时间有关系:
上边的方法网关和ip都是自动设置的也可以自己设置IP
~# ifconfig eth0 192.168.137.0
如果要通过eth0访问外网,还可以通过如下方法添加默认网关,linux系统中可以通过命令ip route命令添加默认网关,
命令格式为ip route add default via
~# ip route add default via 192.168.137.1 dev eth0
出现图示错误则输入 ~# ip addr flush dev eth0
再次输入 ~# ifconfig eth0 192.168.137.0
~# route -n
~# ip route add default via 192.168.137.1 dev eth0
~# ping 192.168.137.93 //DPCH里边发送的地址
将WiFi模块插入开发板的P7插针处(三角形对着三角形)。
在多网络的情况下,比如以太网和wi-fi以及3G网络同时存在的时候,就会有多个路由信息多个默认网关。
在底板P7插针处中正确插入wifi模块,如果一开始未曾插入模块,则插入后需要重启,再进行一次上边的设置。开启开发板
~# ifconfig -a //显示wlan信息
打开wlan
~# ifconfig wlan0 up
~# ifconfig
设置wifi模块的ip地址
#ifconfig wlan0 192.168.137.21
设置WiFi模块网关
~# ip route add default via 192.168.137.22 dev wlan0
查看系统所有的路由信息
~# route –n
下图是核心板的以太网和wi-fi同时存在时的路由信息:
可以看到以太网eth0和wi-fi网络wlan0的路由信息都自动生成了,而且存在两个默认网关。如果访问外网,系统会根据路由缓存信息和速度最优的原则,通过速度更快的网关进行访问。Linux系统支持对默认网关的优先级进行设置,这时需要用到mteric这个参数,metric为跃点数,当系统中有多个默认网关时,数据包会通过metric更低的接口传输,通常情况下,默认的metric都为0,所以优先级是相同的。还是可以通过linux的命令ip route命令设置metric,命令格式为ip route add default via
~# ip route del via 192.168.137.1 dev eth0
~# ip route del via 192.168.137.3 dev wlan0
~# ip route add default via 192.168.137.3 dev wlan0 metric 11
~# route -n
如图所示我们为eth0设置的metric为0/10,wlan0的metric为11,这样以太网eth0的优先级就高于wlan0,数据包就会有先通过eth0通讯,如果以太网eth0关闭,则相关路由信息也会被清除掉,这时metric为11的默认网关优先级变为最高,数据包会自动改为通过wlan0通讯。通过traceroute命令可以验证这一点:
所以现在网络的优先级设置完成了。
如上述示例,通过Linux主板多网络的优先级的各种设置命令即可实现对于开发板的网络方面的多个网络进行优先级的设置,能够通过优先级的设置对开发板的网络进行想要的选择
在Linux中,我们经常会涉及到修改主机的路由列表,以前都是使用route这个命令,但是在CentOS7中默认已经不安装net-tools这个包,所以默认是没有route这个命令的,可以使用ip route 代替。
ip route
ip这个命令是在iproute2包里面,在CentOS7中默认就安装了。
列出路由
ip route list
ip route show
ip route
查看指定网段的路由
ip route list 192.168.2.0/24
添加路由
ip route add 192.168.2.0/24 via 192.168.1.1
追加路由
ip route append 192.168.2.0/24 via 192.168.1.12 #追加一个指定网络的路由,为了平滑切换网关使用
修改路由
ip route change 192.168.2.0/24 via 192.168.1.11
ip route replace 192.168.2.0/24 via 192.168.1.111
删除路由
ip route del 192.168.2.0/24 via 192.168.1.1
清空指定网络的路由
ip route flush 192.168.2.0/24 #这个是清理所有192.168.2.0/24相关的所有路由,有时候设置错网关存在多条记录,就需要一次性清空相关路由再进行添加
添加默认路由
ip route add default via 192.168.1.1
指定路由metirc
ip route add 192.168.2.0/24 via 192.168.1.15 metric 10
route命令
为了兼容CentOS7也提供了net-tools包,只是没有默认安装而已。可以直接使用yum进行安装。
yum -y install net-tools
查看路由
route -n
添加路由
route add -net 192.168.2.0/24 gw 192.168.1.1
route add -host 192.168.2.100/32 gw 192.168.1.1
删除路由
route del -net 192.168.2.0/24 gw 192.168.1.1
route del -host 192.168.2.100/32 gw 192.168.1.1
添加默认路由
route add default gw 192.168.1.1