韌體動態模擬之網路介面的淺析

anfieldqi 發表於 2020-11-27

網路埠淺析

因為在做韌體模擬的時候,遇到了QEMU模擬時因為模擬執行的韌體內部·埠未開放導致不能訪問管理介面的問題,So簡單學習一下關於網路卡和開放埠的知識,總結如下。

1. 結構圖

OpenWrt的網路配置很豐富,在我看來幾乎可以完成任何網路結構。下圖為一個支援OpenWrt的路由器網路結構:這個路由器內部交換機有6個口,其中1個WAN口、4個LAN口、Port5預設連線內部網路卡eth0,還有連線Wifi的無線網路卡接eth2,eth3保留,其主要通過VLAN和Bridging實現

1.1 VLAN(Virtual Local Area Network)

在這裡插入圖片描述

  1. 主要功能:實現單網路卡路由器接入多個網路

  2. 基本原理:區域網中的同一工作組的主機連在一起,隔絕不同的子網(在一個或多個交換機上),減少了訊息全面廣播所帶來的危險。連線子網時省去額外路由器

  3. 網路劃分:VLAN需要路由器內建的交換機支援,最多可以劃分4096個VLAN。

    一般使用只劃分兩個VLAN:WAN和LAN,分別對應外網和內網。如果是純的VLAN,則WAN和LAN之間是隔離的,互相不能通訊,但在自己的VLAN裡可以自由通訊。

1.2 Trunking

此技術是具體實現一張網路卡連線多個網路的核心技術,如上圖Port 5.

  1. 連線:Port5一邊連線路由器,一邊連線網路卡eth0
  2. 作用:連線vlan0和vlan1。這就是採用VLAN的Trunking技術,在Trunk Port(port5)經過的乙太網幀上打標籤(Tagging)用以區分來自那個VLAN,然後路由器用網路卡eth0接收並處理標籤從而處理(在CPU中處理)

1.3 Bridging

在這裡插入圖片描述

  1. 主要功能:用軟體模擬乙太網交換機,連線多個乙太網網路卡(虛擬的或物理的)分享同一個IP子網
  2. 在openWrt中,主要用來連線無線WIFI網路和LAN,組成一個統一的內部區域網

2.網路配置

2.1 有線網路配置

openwrt的有線網路配置檔案位於**/etc/config/network**,配置如下:

config interface 'loopback'//本地環回
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'
 
config globals 'globals'
    option ula_prefix 'auto'
 
config interface 'lan'//配置LAN口 
    option ifname 'eth0.1'// 代表vlan1,這個很重要,下面配置會用到
    option force_link '1'
    option type 'bridge' //橋接方式 
    option proto 'static'//靜態IP
    option ipaddr '192.168.1.1'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option macaddr '64:09:80:05:e1:bb'//設定MAC地址
 
config interface 'wan' //配置WAN口 
    option ifname 'eth0.2'
    option _orig_ifname 'eth0.2'
    option _orig_bridge 'false'
    option proto 'pppoe'
    option macaddr '64:09:80:05:e1:bc'
    option username '11100026295'
    option password '380926'
 
config interface 'wan6'
    option _orig_ifname '@wan'
    option _orig_bridge 'false'
    option proto '6to4'
 
config switch //switch中文意思就開關,所以下面就是使能vlan口 
    option name 'mt762x'
    option reset '1'
    option enable_vlan '1'
 
config switch_vlan
    option device 'mt762x'
    option vlan '1' //VLAN1, 和上面的option ifname ‘eth0.1’相匹配,所以是配置LAN口 
    option ports '0 1 2 3 5 6t' //0~3都是LAN口,RT5350有5個埠
 
config switch_vlan
    option device 'mt762x'
    option vlan '2' //VLAN2, 和上面的option ifname ‘eth0.2’相匹配,所以是配置WAN口
    option ports '4 6t' //4是WAN口

2.2無線網路配置

openwrt的無線網路配置檔案位於**/etc/config/wireless**,配置如下:

config wifi-device 'rai0'
    option type 'mt7612'
    option mode '14'
    option channel 'auto'
    option txpower '100'
    option ht '20+40+80'
    option country 'US'
    option disabled '0'
 
config wifi-iface
    option device 'rai0'
    option network 'lan'
    option mode 'ap'
    option ssid 'BYBY_WORLD'
    option encryption 'psk2'
    option key 'xxx'
 
config wifi-device 'ra0'
    option type 'rt2860v2'
    option mode '9'
    option channel 'auto'
    option txpower '100'
    option ht '40'
    option country 'US'
    option disabled '0'
 
config wifi-iface
    option device 'ra0'
    option network 'lan'
    option mode 'ap'
    option wps 'pbc'
    option ssid 'HELLO_WORLD'
    option encryption 'psk2'
    option key 'xxx'

這裡可以與韌體中相關目錄下的做一下對比,即可發現埠開放情況。

2.3 配置相關解釋

  1. lo:虛擬裝置,自身的迴環網裝置。

  2. ra0 rai0:這兩個是成對出現,一看就知道是無線裝置,它們各自對應一個SSID,分別是2.4G和5G。

  3. eth0:eth0是一塊物理網路卡。eth0.1 eth0.2都是從此裝置上虛擬出來的/eth0.1 是vlan1分出的lan口/eth0.2 是vlan分出的wan口

  4. br-lan:虛擬裝置,用於LAN口裝置橋接,可以用brctl show檢視使用情況

    ~ brctl show
    bridge name    bridge id        STP enabled    interfaces
    br-lan        7fff.64098005e1bb    no        eth0.1 rai0 ra0
    

    br-lan = eth0.1 + rai0 + ra0,即將有線LAN口和無線網統一劃分為 LAN,便於管理,但是如果只開啟了br-lan,恐怕是不能與外部網路進行溝通的