支持多網(wǎng)絡(luò)是英創(chuàng)工控主板的特色之一,英創(chuàng)公司推出的ESMARC系列核心板,都帶有1路或者2路10M/100M以太網(wǎng)口網(wǎng)口,同時(shí)還可以支持wi-fi以及3G/4G模塊,而且ESM3354和ESM6802這兩款核心板還可以通過ISA總線擴(kuò)展以太網(wǎng)口。在多種網(wǎng)口同時(shí)存在的情況下,如何設(shè)置路由規(guī)則以及網(wǎng)關(guān)也就成為了應(yīng)用方案重要的一部分。
在linux系統(tǒng)中,使用ifconfig命令給網(wǎng)口配置ip,系統(tǒng)會(huì)自動(dòng)生成這個(gè)網(wǎng)卡的相關(guān)路由信息,可以使用命令route –n查看系統(tǒng)所有的路由信息,參數(shù)-n是不進(jìn)行地址解析,如果不添加-n選項(xiàng),route命令會(huì)根據(jù)/etc/resolv文件中配置的DNS服務(wù)器進(jìn)行地址解析,所以返回時(shí)間跟DNS服務(wù)器的響應(yīng)時(shí)間有關(guān)系:
系統(tǒng)自動(dòng)生成eth0的路由信息
可以看到系統(tǒng)自動(dòng)生成了201網(wǎng)段的路由信息,凡是201這個(gè)網(wǎng)段的數(shù)據(jù)包都會(huì)通過eth0這個(gè)網(wǎng)口。但是目前還沒有網(wǎng)關(guān)的信息,如果要通過eth0訪問外網(wǎng),還需要添加默認(rèn)網(wǎng)關(guān),linux系統(tǒng)中可以通過命令ip route命令添加默認(rèn)網(wǎng)關(guān),命令格式為ip route add default via <gateway> dev <interface>:
eth0的路由信息
添加默認(rèn)網(wǎng)關(guān)后的路由信息如上圖,其中Destination和Genmask為0.0.0.0的記錄表明這是系統(tǒng)默認(rèn)網(wǎng)關(guān),默認(rèn)網(wǎng)關(guān)的意思是當(dāng)要發(fā)送數(shù)據(jù)包的目標(biāo)網(wǎng)絡(luò)地址不在系統(tǒng)的路由記錄中時(shí),系統(tǒng)會(huì)將該數(shù)據(jù)包通過默認(rèn)網(wǎng)關(guān)對應(yīng)的接口(網(wǎng)卡)發(fā)送出去,如果允許使用dhcp的話,還可以直接使用udhcpc命令,該命令會(huì)自動(dòng)獲取ip并設(shè)置默認(rèn)網(wǎng)關(guān):
使用udhcpc獲取ip和設(shè)置默認(rèn)網(wǎng)關(guān)
在多網(wǎng)絡(luò)的情況下,比如以太網(wǎng)和wi-fi以及3G網(wǎng)絡(luò)同時(shí)存在的時(shí)候,就會(huì)有多個(gè)路由信息多個(gè)默認(rèn)網(wǎng)關(guān)。下圖是核心板的以太網(wǎng)和wi-fi同時(shí)存在時(shí)的路由信息:
多網(wǎng)絡(luò)路由信息
可以看到以太網(wǎng)eth0和wi-fi網(wǎng)絡(luò)wlan0的路由信息都自動(dòng)生成了,而且存在兩個(gè)默認(rèn)網(wǎng)關(guān)。如果訪問外網(wǎng),系統(tǒng)會(huì)根據(jù)路由緩存信息和速度最優(yōu)的原則,通過速度更快的網(wǎng)關(guān)進(jìn)行訪問。Linux系統(tǒng)支持對默認(rèn)網(wǎng)關(guān)的優(yōu)先級進(jìn)行設(shè)置,這時(shí)需要用到mteric這個(gè)參數(shù),metric為躍點(diǎn)數(shù),當(dāng)系統(tǒng)中有多個(gè)默認(rèn)網(wǎng)關(guān)時(shí),數(shù)據(jù)包會(huì)通過metric更低的接口傳輸,通常情況下,默認(rèn)的metric都為0,所以優(yōu)先級是相同的。還是可以通過linux的命令ip route命令設(shè)置metric,命令格式為ip route add default via <gateway> dev <interface> metric <val>,下面我們就為eth0和wlan0設(shè)置優(yōu)先級:
路由信息的優(yōu)先級
如圖所示我們?yōu)閑th0設(shè)置的metric為100,wlan0的metric為101,這樣以太網(wǎng)eth0的優(yōu)先級就高于wlan0,數(shù)據(jù)包就會(huì)有先通過eth0通訊,如果以太網(wǎng)eth0關(guān)閉,則相關(guān)路由信息也會(huì)被清除掉,這時(shí)metric為101的默認(rèn)網(wǎng)關(guān)優(yōu)先級變?yōu)樽罡撸瑪?shù)據(jù)包會(huì)自動(dòng)改為通過wlan0通訊。通過traceroute命令可以驗(yàn)證這一點(diǎn):
數(shù)據(jù)包通訊信息
可以看到數(shù)據(jù)包默認(rèn)是通過優(yōu)先級更高的網(wǎng)關(guān)通訊,當(dāng)eth0關(guān)閉之后,數(shù)據(jù)就改為通過wi-fi網(wǎng)絡(luò)的網(wǎng)關(guān)了。同時(shí)為了方便客戶使用和參考,我們提供了一個(gè)管理路由信息的例程,讓程序在后臺運(yùn)行,會(huì)檢查有沒有新的默認(rèn)網(wǎng)關(guān),如果有新的默認(rèn)網(wǎng)關(guān),則按照以太網(wǎng)>wi-fi>3G/4G網(wǎng)絡(luò)的優(yōu)先級順序自動(dòng)設(shè)置metic的值,如果需要更改則可以通過參數(shù)來設(shè)置三種網(wǎng)絡(luò)的metric值:route_manager [metric for eth] [metric for wlan] [metric for ppp]
測試效果
路由信息在板卡重啟之后會(huì)消失,板卡上自帶以太網(wǎng)可以通過英創(chuàng)公司提供的userinfo.txt配置文件來設(shè)置以太網(wǎng)的ip和默認(rèn)網(wǎng)關(guān),或者設(shè)置為dhcp的方式。如果有擴(kuò)展的wi-fi模塊則可以通過腳本或自己保存一個(gè)配置文件來實(shí)現(xiàn)加載網(wǎng)口后自動(dòng)進(jìn)行設(shè)置ip和網(wǎng)關(guān)。3G/4G網(wǎng)絡(luò)是使用的ppp撥號,ppp會(huì)自動(dòng)生成默認(rèn)網(wǎng)關(guān)。
感興趣的客戶可以聯(lián)系英創(chuàng)的工程師,我們會(huì)提供相應(yīng)的例程代碼。
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660