<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • 英創(chuàng)嵌入式Linux主板多網(wǎng)口多路由方案

     2018-6-29     作者:Emtronix         
    文章標(biāo)簽:以太網(wǎng)

      主流的英創(chuàng)嵌入式主板均支持雙網(wǎng)絡(luò)接口,其中支持ISA擴(kuò)展總線的主板型號(hào),如:EM335x、ESM335x、ESM6802、ESM6800V等,還可以通過(guò)ISA總線外接ETA728模塊,再擴(kuò)展兩路獨(dú)立的10M/100M網(wǎng)絡(luò),從而可構(gòu)成4網(wǎng)口系統(tǒng)。多網(wǎng)絡(luò)口的英創(chuàng)主板在工業(yè)應(yīng)用中的典型應(yīng)用是作為通訊管理機(jī),通過(guò)網(wǎng)絡(luò)將應(yīng)用數(shù)據(jù)上傳至數(shù)據(jù)中心。在實(shí)際應(yīng)用中,有些需求是將應(yīng)用數(shù)據(jù)上傳至不同的數(shù)據(jù)中心,這就需要多網(wǎng)口多路由的支持,也就是說(shuō)每個(gè)網(wǎng)口有自己獨(dú)立的路由表,在英創(chuàng)Linux主板上通過(guò)相關(guān)的配置,即可實(shí)現(xiàn)上述功能,本文以ESM335x主板為例重點(diǎn)介紹該配置方案。


    1、Linux內(nèi)核配置


      為了支持多路由表功能,內(nèi)核配置中必須設(shè)置:

      CONFIG_IP_ADVANCED_ROUTER=y

      CONFIG_IP_MULTIPLE_TABLES=y


      具體menuconfig位置如下:

      Networking support  ---> 

           Networking options  

              [*]   IP: advanced router 

              [*]   IP: policy routing   


    2、利用ip route配置生成多路由表


      對(duì)于多個(gè)路由表,是通過(guò)/etc/iproute2/rt_tables進(jìn)行管理的,Linux系統(tǒng)最多可以支持255張路由表,其中3張是內(nèi)置的:

      255  local

      254  main

      253  default


      分別表示了路由表table的序號(hào)和名稱(chēng)。在英創(chuàng)主板上對(duì)于各個(gè)網(wǎng)口的路由表定義序號(hào)從1開(kāi)始,名稱(chēng)就采用網(wǎng)口名稱(chēng)。如:

      1eth0

      2eth1

      3eth2

      4eth3


      生成路由表的步驟如下:

      1、在rt_tables文件中增加一個(gè)路由表的序號(hào)和名稱(chēng):

      #>echo “1 eth0” >> /etc/iproute2/rt_tables

      #>echo “2 eth1” >> /etc/iproute2/rt_tables

      配置好后,可以用cat命令查看rt_tables文件:


    英創(chuàng)嵌入式Linux主板多網(wǎng)口多路由方案.png


      2、定義路由表規(guī)則

      利用2個(gè)Linux工具ip route、ip rule來(lái)定義路由表規(guī)則,可以用來(lái)指定IP地址的數(shù)據(jù)選擇指定的路由表。

      #>ip route add 192.168.202.0/24 dev eth1 src 192.168.202.175 table eth1

      #>ip route add default via 192.168.202.1 dev eth1 table eth1

      #>ip rule add from 192.168.202.175/32 table eth1

      #>ip rule add to 192.168.202.175/32 table eth1

      #>route add default gw 192.168.202.1


      增加后,可以用ip route show table eth1來(lái)查看:


    英創(chuàng)嵌入式Linux主板多網(wǎng)口多路由方案.png


      按照此定義的路由表規(guī)則,即所有來(lái)自“192.168.202.175”的IP數(shù)據(jù)包訪問(wèn)外網(wǎng)時(shí)選擇eth1路由表,并使用該網(wǎng)段的網(wǎng)關(guān)路由。


    3、自動(dòng)生成多網(wǎng)絡(luò)路由表


      在多網(wǎng)絡(luò)的情況下,為了方便客戶使用,我們采用網(wǎng)絡(luò)配置文件(ifcfg-eth*)和加載腳本文件(route-cfg.sh)來(lái)完成多個(gè)路由表的自動(dòng)配置,免除了逐一配置的繁瑣過(guò)程。


      其中 ifcfg-eth*用于配置各個(gè)網(wǎng)絡(luò)的參數(shù),一個(gè)文件對(duì)應(yīng)于一個(gè)網(wǎng)口,例如對(duì)eth0的配置文件名為ifcfg-eth0,其文件內(nèi)容如下:

           DEVICE=eth0                                                // 網(wǎng)絡(luò)名稱(chēng)
                 TABLENUM=1                                              // table 序號(hào)
                 NETWORK=192.168.201.0                            // 網(wǎng)段IP
                 NETMASK=255.255.255.0                                   // 子網(wǎng)掩碼
                 ROUTER=192.168.201.1                                // 本網(wǎng)口的路由網(wǎng)關(guān)IP
                 IPADDR=192.168.201.175                                  
    // 本網(wǎng)口IP地址


    按上述方法生成好需要的若干配置文件ifcfg-eth*后,將ifcfg-eth*和route-cfg.sh均復(fù)制到/mnt/nandflash/目錄下。然后直接執(zhí)行腳本文件route-cfg.sh即可自動(dòng)完成路由表配置,該文件會(huì)根據(jù)ifcfg-eth*文件中的參數(shù),自動(dòng)生成所需的多網(wǎng)口多路由表

    #/mnt/nandflash/>./route-cfg.sh

    route-cfg.sh文件內(nèi)容如下:

    #!/bin/sh


      for interface_file in $(ls /mnt/nandflash/ifcfg-eth*) ;do

        . ${interface_file}

        prefix=$(ipcalc -p ${IPADDR} ${NETMASK} | awk -F= '{print $2}')

        tablenum=${TABLENUM}

        if ! grep "^${tablenum} ${DEVICE}$" /etc/iproute2/rt_tables >/dev/null ;then

          echo "${tablenum} ${DEVICE}" >>/etc/iproute2/rt_tables

        fi

        echo ${DEVICE}: IPADDR=${IPADDR} gw=${ROUTER}

        ifconfig ${DEVICE} ${IPADDR} 

        # flush table

        ip route flush table ${DEVICE}

        # add table

        ip route add ${NETWORK}/${prefix} dev ${DEVICE} src ${IPADDR} table ${DEVICE}

        ip route add default via ${ROUTER} dev ${DEVICE} table ${DEVICE}

        ip rule add from ${IPADDR}/32 table ${DEVICE}

        ip rule add to ${IPADDR}/32 table ${DEVICE}

        # add default gw

        route add default gw ${ROUTER}  

      done


    4、測(cè)試網(wǎng)絡(luò)


      以ESM335x為核心,搭建雙網(wǎng)口雙網(wǎng)關(guān)的多路由系統(tǒng),作為測(cè)試環(huán)境。下圖為雙網(wǎng)口網(wǎng)絡(luò)拓?fù)鋱D:


    335x.png


      最簡(jiǎn)單的方法就是利用ping命令進(jìn)行測(cè)試,ping命令可以指定網(wǎng)口。如:

      #> ping  -I eth0  202.98.96.68          (指定通過(guò)eth0 訪問(wèn)外網(wǎng) -> internet網(wǎng)站)

           #> ping  -I eth1  192.168.203.70        (指定通過(guò)eth1 訪問(wèn)外網(wǎng) -> 企業(yè)數(shù)據(jù)中心)


      如果利用系統(tǒng)的多路由表,也可以不用指定網(wǎng)口進(jìn)行ping測(cè)試,但是系統(tǒng)有個(gè)自動(dòng)選路的處理,會(huì)存在一定的延時(shí)。

      #> ping  202.98.96.68         

           #> ping  192.168.203.70


    英創(chuàng)嵌入式Linux主板多網(wǎng)口多路由方案.png


    英創(chuàng)嵌入式Linux主板多網(wǎng)口多路由方案.png

    文章標(biāo)簽:以太網(wǎng)
    人妻少妇看A偷人无码精品视频| 国产拍揄自揄精品视频| 久久久亚洲精品视频| 青草热在线精品视频99app| 2022久久国产精品免费热麻豆| 亚洲国产精品成人| 亚洲国产精品成人午夜在线观看| 青青草国产精品久久久久| 在线精品自拍亚洲第一区| 亚洲精品福利网站| 国产色婷婷五月精品综合在线| 国产成人一区二区三区精品久久 | 亚洲精品成a人在线观看| 国产成人亚洲合集青青草原精品 | 国产在线精品一区二区中文| 四虎成人精品无码永久在线| 97久久精品人妻人人搡人人玩| 久久99青青精品免费观看| 精品国产亚洲男女在线线电影| 尤物在线观看精品国产福利片 | 国产精品JIZZ在线观看无码| 亚洲国产成人精品青青草原 | 国产精品嫩草影院免费| 久久精品国产四虎| 久久青青草原精品国产| 精品亚洲一区二区| 91老司机深夜福利精品视频在线观看 | 精品国产一区二区三区久久久狼| 久久青草精品38国产免费| 精品日本一区二区三区在线观看 | 国色精品va在线观看免费视频| 成人国内精品久久久久影院| 蜜桃精品免费久久久久影院| 国产精品香蕉一区二区三区| 精品无码一区二区三区电影| 久久99精品波多结衣一区| 久久这里只精品国产99热| 伊人久久精品无码av一区| 91精品国产综合久久婷婷| 中文字幕精品视频在线观看| 精品99又大又爽又硬少妇毛片|