OpenWrt簡明實用手冊

OpenWrt是三大主流路由器固件之一爬舰,應用非常廣泛低矮。本文對OpenWrt的使用方法進行簡明總結(jié)酬核,方便初學者入門鲸郊。



0. 參考

1. 概述

OpenWrt是三大主流路由器固件之一,本質(zhì)上是是一個高度模塊化溅蛉、高度自動化的嵌入式Linux系統(tǒng)公浪,擁有強大的網(wǎng)絡組件和擴展性他宛,常常被用于工控設(shè)備、電話欠气、小型機器人厅各、智能家居、路由器以及VOIP設(shè)備中预柒。同時队塘,OpenWrt還提供了100多個已編譯好的軟件,而且數(shù)量還在不斷增加宜鸯,而 OpenWrt SDK更進一步簡化了開發(fā)軟件的工序憔古。

OpenWrt不同于其他許多用于路由器的發(fā)行版,它是一個從零開始編寫的淋袖、功能齊全的鸿市、容易修改的路由器操作系統(tǒng),從而可以添加需要的功能而不引入無用模塊即碗,同時支持這些功能工作的Linux內(nèi)核又遠比絕大多數(shù)發(fā)行版更新灸芳。其架構(gòu)如下所示:

OpenWrt支持各種處理器架構(gòu),無論是對ARM拜姿,X86,PowerPC或者MIPS都有很好的支持冯遂。OpenWrt支持多達3000多種軟件包蕊肥,囊括從工具鏈,到內(nèi)核蛤肌,到軟件包壁却,再到根文件系統(tǒng)等整個體系。用戶只需簡單的一個make命令即可方便快速地定制一個具有特定功能的嵌入式系統(tǒng)來作為路由器固件裸准。

OpenWrt支持常見路由協(xié)議展东,包括RIPOSPF炒俱、OLSR盐肃、BATMAN等,適用于從小型網(wǎng)絡权悟、大型密集網(wǎng)絡到無線Ad-hoc網(wǎng)絡等各種場景砸王。

OpenWrt支持DMZ(隔離區(qū))、VLAN(虛擬局域網(wǎng))峦阁、虛擬服務器(端口映射)谦铃、訪問控制列表(ACL)、NAT(網(wǎng)絡地址轉(zhuǎn)換)等常用功能模塊以及支持如下功能的防火墻:

  • 全狀態(tài)包檢測(SPI)榔昔;
  • 防范常見拒絕服務(DoS)攻擊驹闰;
  • 過濾多播/Ping 探測包瘪菌;
  • 日志記錄和報表統(tǒng)計;
  • 網(wǎng)絡攻擊檢測嘹朗。

2. 固件編譯和更新

2.1 固件編譯

OpenWrt最新源碼可以通過git工具從OpenWrt GitHub倉庫下載:

```bash
$ git clone https://github.com/openwrt/openwrt.git
```

OpenWrt編譯建議使用最新的穩(wěn)定版本(不帶rcX字樣的tag):

```bash
openwrt$ git tag -l
reboot
v17.01.0
v17.01.0-rc1
v17.01.0-rc2
v17.01.1
...
openwrt$ git checkout vX.X.X -b dev
```

OpenWrt源碼中包含基于BuildRoot的構(gòu)建系統(tǒng)师妙,具體用法可以參考Documentation/Developer guide/Toolchain/Build system usage

OpenWrt可以通過make menuconfig進行配置骡显,核心選項包括:

  • Target System (Atheros AR7xxx/AR9xxx):處理器平臺選擇
  • Target Profile (Qualcomm Atheros AP147-010 reference board):參考板選擇
  • LuCI -> 1. Collections -> luci:使能LuCI Web配置界面疆栏;
  • LuCI -> 2. Modules > Translations -> Chinese (zh-cn):使能中文配置界面
  • LuCI > 4. Themes:選擇LuCI Web配置界面主題
  • Network -> Routing and Redirection -> igmpproxy:IGMP代理支持
  • Network -> Routing and Redirection -> quagga:RIP和OSPF支持,需要使能ripd和ospfd惫谤;vtysh用于在串口shell中統(tǒng)一配置RIP和OSPF壁顶,屬于可選項,未選中時可以使用telnet分別連接2602和2604端口配置RIP和OSPF溜歪;
  • Network -> wpa-supplicant:編譯wpa-supplicant包若专,用以支持無線密碼,需要在LuCI配置界面->系統(tǒng)->軟件包界面手動安裝蝴猪。

2.2 固件更新

固件更新方式可以使用串口終端和網(wǎng)頁配置界面2種方式:

  1. 串口終端方式
    路由器串口一般為標準TTL接口调衰,可以通過USB轉(zhuǎn)TTL模塊連接到電腦上,默認波特率一般為115200

    • 連接串口并在U-Boot啟動時按任意鍵中斷固件加載自阱;

    • 連接任一路由器網(wǎng)口到PC網(wǎng)口嚎莉;

    • shell中輸入httpd以啟動http服務器,并顯示路由器IP:

      u-boot> httpd
      enet0 port4 up
      HTTP server is starting at IP: 10.10.18.1
      HTTP server is ready!
      
    • 手工配置PC的IP地址為路由器IP的同一網(wǎng)段沛豌;

    • 使用PC瀏覽器訪問路由器IP以下載固件趋箩。

    注意

    • 映像下載完成后用戶密碼為空,需要重新設(shè)置加派;
    • 如果瀏覽器自動跳轉(zhuǎn)到LuCI叫确,則需要更換瀏覽器或者清除瀏覽器cache(緩存);
    • U-Boot復位命令為reset芍锦。
  2. 網(wǎng)頁配置界面方式
    路由器默認IP為192.168.1.1竹勉,網(wǎng)頁配置界面->系統(tǒng)->備份/升級界面中包含固件刷新,可以用于下載固件娄琉;注意:

    • 電腦IP地址采用自動配置方式次乓;
    • 連接路由器IP即網(wǎng)關(guān)地址,默認密碼為空孽水;
    • 依次進入LuCI配置界面->系統(tǒng)->備份/升級界面檬输;
    • 使用固件刷新方式更新固件。

    注意:固件更新完成后用戶配置仍然保留匈棘。

3. 路由器配置

路由器可以通用過如下兩種方式進行配置:

  1. 終端命令行配置方式:
    • 可以使用串口或者telnet連接到路由器終端;
    • 命令行配置時可以采用UCI命令或者vi <配置文件>方式丧慈;
  2. Web界面配置方式:使用PC瀏覽器連接路由器IP即網(wǎng)關(guān)地址即可。

注意:默認密碼為空,可以在終端中使用passwd命令修改或者在網(wǎng)頁配置界面->系統(tǒng)->備份/升級界面中設(shè)置逃默。

3.1 VLAN配置

VLAN協(xié)議即虛擬局域網(wǎng)鹃愤, 通過在報文頭增加VLAN標簽,將網(wǎng)絡設(shè)備被化分為若干個虛擬的局域網(wǎng)組完域。OpenWrt支持IEEE 802.1QIEEE 802.1ad VLAN標準软吐,通過UCI配置接口(/etc/config/network)和LuCILuci配置界面的交換機頁面將路由器中的嵌入式交換機劃分為多個VLAN,并在系統(tǒng)中顯示為獨立的接口吟税。

假定路由器有1個wan口(編號0)和4個LAN口(編號1凹耙,2,3肠仪,4)肖抱,使用如下方法將4個LAN口劃分為2個VLAN(1和2)。

3.1.1 UCI命令行配置

  1. 連接路由器終端异旧;

  2. 劃分VLAN:

    OpenWrt# uci set network.@switch_vlan[0].ports='0t 1 2'
    OpenWrt# uci add network switch_vlan
    OpenWrt# uci set network.@switch_vlan[1].device='eth1'
    OpenWrt# uci set network.@switch_vlan[1].vlan='2'
    OpenWrt# uci set network.@switch_vlan[1].vid='2'
    OpenWrt# uci set network.@switch_vlan[1].ports='0t 3 4'
    
  3. 創(chuàng)建新的LAN接口lan2

    OpenWrt# uci set network.lan2=interface
    OpenWrt# uci set network.lan2.ifname='eth1.2'
    OpenWrt# uci set network.lan2.proto='static'
    OpenWrt# uci set network.lan2.ipaddr='192.168.3.1'
    OpenWrt# uci set network.lan2.netmask='255.255.255.0'
    
  4. 將默認LAN接口lan切換到VLAN1上:

    OpenWrt# uci set network.lan.ifname='eth1.1'
    
  5. lan2上使能DHCP服務:

    OpenWrt# uci set dhcp.lan2=dhcp
    OpenWrt# uci set dhcp.lan2.interface='lan2'
    OpenWrt# uci set dhcp.lan2.start='100'
    OpenWrt# uci set dhcp.lan2.limit='150'
    OpenWrt# uci set dhcp.lan2.leasetime='12h'
    
  6. lan2加入防火墻的lan區(qū)域:

    OpenWrt# uci set firewall.@zone[0].network='lan lan2'
    
  7. 提交修改并復位路由器:

    OpenWrt# uci commit
    OpenWrt# reboot
    

3.1.2 配置文件配置

  1. 連接路由器終端意述;

  2. 使用vi etc/config/network命令修改etc/config/network,劃分VLAN吮蛹,切換lan接口到VLAN1上荤崇,并創(chuàng)建新的LAN接口lan2

    ...
    config interface 'lan'
            ...
            option ifname 'eth1.1' # 'eth1'
            ...
    ...
    config switch_vlan
            ...
            option vid '1'
            option ports '0t 1 2'
    
    config switch_vlan
            option device 'eth1'
            option vlan '2'
            option vid '2'
            option ports '0t 3 4'
    
    config interface 'lan2'
            option ifname 'eth1.2'
            option proto 'static'
            option ipaddr '192.168.3.1'
            option netmask '255.255.255.0'
    
  3. 使用vi etc/config/dhcp命令在etc/config/dhcp末尾增加LAN2的DHCP配置:

    config dhcp 'lan2'
         option start '100'
         option limit '150'
         option interface 'lan2'
         option leasetime '12h'
    
  4. 使用vi etc/config/firewall修改etc/config/firewall,將lan2加入防火墻的lan區(qū)域:

    config zone
         option name 'lan'
         option network 'lan lan2'
         ...
    
  5. 復位路由器:

    OpenWrt# reboot
    

3.1.3 網(wǎng)頁界面配置

  1. 使用PC瀏覽器連接路由器地址即網(wǎng)關(guān)地址潮针;
  2. 進入網(wǎng)絡->交換機頁面术荤,點擊添加按鈕添加VLAN2,修改VLAN1配置每篷,并點擊保存并應用按鈕:
  3. 進入網(wǎng)絡->接口頁面瓣戚,點擊添加新接口按鈕添加lan2,對應于VLAN2接口eth1.2雳攘,并點擊提交按鈕:
  4. 在刷新出來的新頁面中點擊DHCP設(shè)置按鈕,設(shè)置lan2的IPv4地址和網(wǎng)關(guān)枫笛;
  5. 在刷新出來的新頁面中點擊防火墻設(shè)置標簽吨灭,將lan2加入防火墻的lan區(qū)域,并點擊保存并應用按鈕:
  6. 點擊LAN標簽設(shè)置lan接口刑巧,點擊物理設(shè)置按鈕喧兄,切換lan接口到VLAN1接口eth1.1,并點擊保存并應用按鈕:

注意:點擊保存并應用按鈕時若界面卡住不再刷新啊楚,則將PC網(wǎng)口更換到路由器另外一組VLAN對應的LAN口吠冤。

3.2 路由配置

IP路由是路由器最重要的功能。路由是在網(wǎng)絡中選擇要發(fā)送網(wǎng)絡流量的路徑的過程恭理。報文根據(jù)路由表來進行路由拯辙。路由可以靜態(tài)配置,也可以使用路由協(xié)議進行自動化的動態(tài)配置以減少靜態(tài)配置工作。

路由表中的路由項涯保,根據(jù)目的地址不同可以劃分為單播路由多播路由诉濒;根據(jù)來源不同可以劃分為設(shè)置接口IP地址和掩碼時自動增加的直連路由、網(wǎng)絡管理員手工配置的靜態(tài)路由和路由協(xié)議動態(tài)生成的動態(tài)路由夕春。

路由狀態(tài)可以通過LuCI配置界面路由表狀態(tài)頁面查看未荒。

為了方便說明,之后的配置以如下場景為例:

其中:

  • 被測路由器WAN口IP地址為192.168.0.100及志,對應網(wǎng)口設(shè)備為eth1片排,LAN口IP地址為192.168.1.X
  • 鄰居路由器WAN口IP地址為192.168.0.200速侈,對應網(wǎng)口設(shè)備為eth1率寡,LAN口IP地址為192.168.2.X

3.2.1 靜態(tài)路由

靜態(tài)路由锌畸,是網(wǎng)絡管理員通過route勇劣、ip routeLinux路由配置命令手工配置的路由,適用于拓撲簡單并且穩(wěn)定的小型網(wǎng)絡潭枣。

靜態(tài)路由不能自動適應網(wǎng)絡拓撲結(jié)構(gòu)的變化比默,因此當網(wǎng)絡發(fā)生故障或網(wǎng)絡拓撲發(fā)生變化時,必須再次由網(wǎng)絡管理員手工修改配置盆犁。

除了route命咐、ip routeLinux路由配置命令,OpenWrt同時通過LuCI配置界面提供web方式的靜態(tài)路由查看和配置命令谐岁,即狀態(tài)界面的路由表頁面和網(wǎng)絡界面的靜態(tài)路由頁面醋奠。

配置方法如下所示:

  1. 被測路由器:連接終端或者進入LuCI配置界面的靜態(tài)路由頁面,增加WAN口路由規(guī)則伊佃,將鄰居路由器LAN側(cè)IP地址路由到鄰居路由器的WAN口IP地址窜司,并關(guān)閉防火墻:

    OpenWrt# route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.200 dev eth1
    OpenWrt# /etc/init.d/firewall stop
    

2.鄰居路由器:連接終端或者進入LuCI配置界面的靜態(tài)路由頁面,增加WAN口路由規(guī)則航揉,將被測路由器LAN側(cè)IP地址路由到被測路由器的WAN口IP地址塞祈,并關(guān)閉防火墻:

  OpenWrt# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.100 dev eth1
  OpenWrt# /etc/init.d/firewall stop

注意

  • 可以參考靜態(tài)路由設(shè)置實例解析(圖文)route add命令詳解

  • 可以通過LuCI配置界面的靜態(tài)路由器頁面增加靜態(tài)路由配置帅涂,但是無效的路由表項即使保存成功也不會生效议薪,無法在路由表狀態(tài)頁面看到;在終端中使用route命令添加無效路由時會提示錯誤信息媳友;

  • 需要關(guān)閉防火墻或者修改etc/config/firewall接受轉(zhuǎn)發(fā)包和ping包:

    config defaults
            ...
            option forward          ACCEPT # REJECT
    ...
    config zone
            ...
            option forward          ACCEPT # REJECT
    #       option masq             1
            option mtu_fix          1
    
    ...
    # Allow IPv4 ping
    config rule
            ...
    #       option icmp_type        echo-request
            ...
    

3.2.2 動態(tài)路由

OpenWrt通過Routing套件中的Quagga軟路由提供RIP斯议、OSPF等動態(tài)協(xié)議路由協(xié)議。
Quagga是一個路由軟件包醇锚,用于為基于TCP / IP的路由服務提供路由協(xié)議支持哼御,包括RIPv1,RIPv2,RIPng艇搀,OSPFv2尿扯,OSPFv3,IS-IS焰雕,BGP-4和BGP-4 +等衷笋。Quagga還支持特殊的BGP路由反射器和路由服務器行為。除了傳統(tǒng)的IPv4路由協(xié)議矩屁,Quagga還支持IPv6路由協(xié)議辟宗。通過支持SMUX和AgentX協(xié)議的SNMP守護程序,Quagga提供了路由協(xié)議MIB吝秕。
Quagga體系結(jié)構(gòu)由核心守護程序zebra和一系列協(xié)議守護程序組成泊脐,用以共同構(gòu)建路由表。每個主要協(xié)議都在其自己的守護程序中實現(xiàn)烁峭,并與核心守護程序(zebra)通信以將路由更新傳遞給zebra容客;zebra守護程序充當基礎(chǔ)Unix內(nèi)核的抽象層,并通過Unix或TCP流向Quagga客戶端提供Zserv API约郁。



Quagga在網(wǎng)絡協(xié)議棧中的作用是與其他路由器交換路由信息缩挑,制定路由和策略決策,并將路由決策安裝到Linux內(nèi)核中鬓梅,從而允許Linux協(xié)議棧做出相應的轉(zhuǎn)發(fā)決策供置。
Quagga通過集成用戶界面外殼程序 vtysh來管理所有守護程序。vtysh通過UNIX域套接字連接到每個守護程序绽快,然后充當用戶輸入的代理芥丧。除了統(tǒng)一的前端,vtysh還提供了通過集成配置模式使用單個配置文件來配置所有守護程序的功能坊罢,從而避免了為每個守護程序維護單獨的配置文件的開銷续担。

3.2.2.1 RIP

Quagga路由套件的ripd支持RFC2453中描述的RIPv2RFC1058中描述的RIPv1

RIP(Routing Information Protocol活孩,路由信息協(xié)議)定義了路由器在互連的一組局域網(wǎng)(LAN)之間移動流量時應如何共享信息物遇,應用較早(最早出現(xiàn)于1981年的Xerox網(wǎng)絡系統(tǒng)(XNS)協(xié)議套件中)帘不、使用較普遍的內(nèi)部網(wǎng)關(guān)協(xié)議(Interior Gateway Protocol亭珍,IGP),適用于小型同類網(wǎng)絡的一個自治系統(tǒng)(AS)內(nèi)的路由信息的傳遞

RIP是一個用于路由器和主機間交換路由信息的距離向量協(xié)議航夺,使用跳數(shù),即metric來衡量到達目標地址的路由距離崔涂。

RIP使用距離矢量算法(Bellman-Ford算法)來決定將數(shù)據(jù)包放在哪個路徑上以到達其目的地阳掐。每個RIP路由器維護一個路由表,每30秒向其最近的鄰居廣播其整個路由表。如果路由器在路由上收到更新缭保,并且新路徑更短汛闸,它將使用較短路徑的長度和下一跳地址更新其表條目。如果新路徑較長艺骂,它將等待一個抑制時間诸老,以查看以后的更新是否也反映了較高的值。僅當確定新的較長路徑穩(wěn)定時钳恕,才會更新表條目别伏。如果路由器崩潰或網(wǎng)絡連接斷開,則網(wǎng)絡會發(fā)現(xiàn)這一點忧额,因為該路由器停止向其鄰居發(fā)送更新厘肮,或者停止沿斷開的連接發(fā)送和接收更新。如果路由表中的給定路由沒有在6個連續(xù)的更新周期(即180秒)內(nèi)更新睦番,則RIP路由器將丟棄該路由类茂,并通過其自身的定期更新讓網(wǎng)絡的其余部分了解問題。

目前托嚣,OSPF已在很大程度上取代了RIP巩检,成為最廣泛使用的內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)。RIP已被取代主要是因為它的簡單性以及無法擴展到非常大和復雜的網(wǎng)絡注益。

配置方法如下所示:

  1. 被測路由器終端中執(zhí)行如下命令:

    OpenWrt# vi /etc/quagga/ripd.conf
    
  2. 將如下內(nèi)容粘貼到ripd.conf中保存退出:

    # password for telnet connection
    password zebra
    # enable RIP
    router rip
    # set RIP enable interface by network
    network 192.168.0.0/24
    network 192.168.1.0/24
    # enable log and debug
    log file /etc/quagga/ripd.log
    debug rip events
    debug rip packet
    
  3. 鄰居路由器*終端中執(zhí)行同樣步驟碴巾,注意將network 192.168.1.0/24改為network 192.168.2.0/24

  4. 重啟路由器或執(zhí)行/etc/init.d/quagga restart重啟quagga服務丑搔;

  5. 在路由器終端中首先使用/etc/init.d/firewall stop關(guān)閉防火墻厦瓢,然后使用route命令查詢動態(tài)路由是否已經(jīng)出現(xiàn);

  6. 在路由器終端中使用vtysh進入配置終端后輸入然后使用show ip rip status查看RIP信息啤月。

注意

  1. 參考Quagga 配置筆記煮仇;

  2. 通過vtysh配置時需要先使用configure terminal進入配置終端后再輸入配置文本中的命令,具體步驟參考Quagga簡介谎仲、安裝浙垫、配置說明

  3. 測試時也可以通過/etc/quagga/ripd.log/etc/quagga/ospfd.log查看日志和調(diào)試信息郑诺;

  4. 日志和調(diào)試信息在正式版本中可以關(guān)掉夹姥,節(jié)省空間;

  5. 測試時需要關(guān)閉防火墻辙诞,或者修改etc/config/firewall添加如下防火墻規(guī)則辙售,否則無法收到RIP/OSPF報文:

    config rule
            option name     'Allow-RIP'
            option src      'wan'
            option src_ip   '192.168.0.0/24'
            option src_port 520
            option proto    'udp'
            option target   'ACCEPT'
    
    config rule
            option name     'Allow-OSPF'
            option src      'wan'
            option src_ip   '192.168.0.0/24'
            option proto    'ospf'
            option target   'ACCEPT'
    

3.2.2.2 OSPF

Quagga路由套件的ospfd支持RFC 2328定義的適用于IPv4網(wǎng)絡的OSPFv2

OSPF(Open Shortest Path First飞涂,開放式最短路徑優(yōu)先)是內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)系列中最著名的協(xié)議旦部,由IETF的OSPF工作組在19世紀80年代中期開發(fā)祈搜。OSPF具有路由變化收斂速度快、路由更新效率高士八、無路由環(huán)路容燕、支持變長子網(wǎng)掩碼(VLSM)和匯總、層次區(qū)域劃分等優(yōu)點婚度。OSPF通過鄰居關(guān)系維護路由蘸秘,避免定期更新對帶寬進行的消耗,適用于大中型網(wǎng)絡蝗茁。在網(wǎng)絡中使用OSPF協(xié)議后秘血,大部分路由將由OSPF協(xié)議自行計算和生成,無須網(wǎng)絡管理員人工配置评甜,當網(wǎng)絡拓撲發(fā)生變化時灰粮,協(xié)議可以自動計算、更正路由忍坷,極大地方便了網(wǎng)絡管理粘舟。

在網(wǎng)絡中配置后,OSPF將偵聽鄰居并收集所有可用的鏈路狀態(tài)數(shù)據(jù)佩研,以構(gòu)建其網(wǎng)絡中所有可用路徑的拓撲圖柑肴,然后將信息保存在其拓撲數(shù)據(jù)庫(也稱為鏈路狀態(tài)數(shù)據(jù)庫(LSDB))中。根據(jù)收集到的信息旬薯,它將使用計算機科學家Edsger W. Dijkstra在1956年開發(fā)的稱為最短路徑優(yōu)先(SFP)的算法晰骑,計算到達每個可訪問子網(wǎng)/網(wǎng)絡的最佳最短路徑。大部分路由將由OSPF協(xié)議自行計算和生成绊序,無須網(wǎng)絡管理員人工配置硕舆,當網(wǎng)絡拓撲發(fā)生變化時,協(xié)議可以自動計算骤公、更正路由抚官,極大地方便了網(wǎng)絡管理。

OSPF將自治系統(tǒng)內(nèi)的路由器劃分為路由區(qū)域阶捆,每個區(qū)域都由一組連接的路由器組成凌节,從而簡化管理并優(yōu)化可用資源,并在此基礎(chǔ)上進行路由計算洒试。

與RIP協(xié)議相比倍奢,OSPF使用基于帶寬的度量值,選路更加科學垒棋。當路由條目更新時卒煞,僅發(fā)送更新路由(RIP發(fā)送整個路由表),減小了線路帶寬的消耗捕犬,收斂速度快跷坝。

配置方法如下所示:

  1. 在被測路由器串口shell中執(zhí)行如下命令:

    OpenWrt# vi /etc/quagga/ospfd.conf
    
  2. 將如下內(nèi)容粘貼到ospfd.conf中保存退出:

    # password for telnet connection
    password zebra
    # enable OSPF
    router ospf
    # set OSPF enable interface by network
    ospf router-id 192.168.1.0
    network 192.168.0.0/24 area 0.0.0.0
    network 192.168.1.0/24 area 0.0.0.1
    # enable log and debug
    log file /etc/quagga/ospfd.log
    debug ospf event
    debug ospf packet all
    
  3. 在鄰居路由器終端中執(zhí)行同樣步驟,注意將network 192.168.1.0/24 area 0.0.0.1改為network 192.168.2.0/24 area 0.0.0.1并將router-id更改為192.168.2.0碉碉;

  4. 重啟路由器或執(zhí)行/etc/init.d/quagga restart重啟quagga服務柴钻;

  5. 在路由器終端中使用/etc/init.d/firewall stop關(guān)閉防火墻,然后使用route命令查詢動態(tài)路由是否已經(jīng)出現(xiàn);

  6. 在路由器終端中使用vtysh進入配置終端后輸入然后使用show ip ospf database查看路由數(shù)據(jù)庫垢粮。

注意事項參見3.2.2 RIP贴届。

3.2.3 多播路由

多播方式使得服務器可以將一個報文發(fā)送到多播地址,然后通過路由器的多播路由支持蜡吧,使得多播組內(nèi)的每個報文都可以接收到服務器發(fā)送的報文毫蚓。多播數(shù)據(jù)在傳輸層封裝為UDP報文,發(fā)送到224.0.0.0 ~ 239.255.255.255范圍內(nèi)的D類IP地址和對應的以01-00-5E開頭的MAC地址昔善。

實現(xiàn)多播路由的關(guān)鍵在于建立多播路由表元潘。多播路由表的創(chuàng)建包括3種方式,即靜態(tài)路由君仆、PIMIGMP代理翩概。其中,IGMP(互聯(lián)網(wǎng)組管理協(xié)議)是一個由主機和路由器之間使用的IPv4相鄰網(wǎng)絡建立多播返咱,并維護多播組成員關(guān)系的通信協(xié)議钥庇。IGMP代理通過攔截路由器LAN側(cè)主機發(fā)送的IGMP報文,代理LAN側(cè)主機來發(fā)送IGMP報文和維護多播組成員關(guān)系咖摹,并加入上游多播組评姨,即在WAN端口執(zhí)行主機的角色,LAN端口執(zhí)行路由器的角色萤晴。

OpenWrt通過自帶的網(wǎng)絡服務包igmpproxy支持IGMP代理吐句,并IGMP使用UCI配置接口(etc/config/igmpproxy)作為管理接口,可以通過Linux命令ip mroute查看多播路由店读。

配置方法如下所示:
1.在被測路由器終端上修改/etc/config/igmpproxy中的upstream端口監(jiān)聽地址范圍(外網(wǎng)PC地址范圍)并關(guān)閉loopback端口監(jiān)聽:

```
config phyint
        ...
        option direction upstream
        list altnet 192.168.0.0/24
```

2.重啟被測路由器蕴侧,并在被測路由器終端上使用ps | grep igmp確認存在igmpproxy進程,如果沒有則需要確認igmpproxy文件配置是否正確两入;
3.在模擬內(nèi)網(wǎng)PC上啟動VLC?media?player净宵,輸入地址udp://@239.1.1.1:8028,點擊播放裹纳;
4.在模擬外網(wǎng)PC上啟動PixStream?WinSend择葡,點擊open選擇需要發(fā)送的的*.ts格式的流媒體文件,剃氧,其他參數(shù)均為默認敏储,點擊發(fā)送。

注意

  1. 配置流程參見docHOWTOIPTV/UDP multicast/ IPTV / UDP multicast朋鞍;

  2. /var/etc/igmpproxy.configmpproxy根據(jù)/etc/config/igmpproxy自動生成已添;如果igmpproxy代理進程沒有起來妥箕,需要確認內(nèi)容是否如下所示,否則需要重啟路由器:

    quickleave
    
    phyint eth1 upstream ratelimit 0 threshold 1
            altnet 192.168.0.0/16
    
    phyint br-lan downstream ratelimit 0 threshold 1
    
  3. IGMP代理測試詳細步驟參見IGMP Proxy測試更舞。

3.3 防火墻

防火墻是指一種將內(nèi)部網(wǎng)和公眾訪問網(wǎng)(如Internet)分開的方法畦幢,實際上是一種建立在現(xiàn)代通信網(wǎng)絡技術(shù)和信息安全技術(shù)基礎(chǔ)上的應用性安全技術(shù)和隔離技術(shù)

OpenWrt基于Linux內(nèi)核netfilter/iptable框架封裝了網(wǎng)絡防火墻組件firewall3缆蝉,并進而通過LuCI配置界面提供web配置功能宇葱。

firewall3在用戶空間中運行,用以將配置文件解析為一組iptables規(guī)則刊头,并將每個規(guī)則發(fā)送到內(nèi)核netfilter模塊黍瞧。OpenWRT使用firewall3應用程序安全構(gòu)建規(guī)則集,同時隱藏許多細節(jié)原杂。

iptables是內(nèi)核netfilter模塊的用戶空間代理印颤,通過將報文過濾規(guī)則劃分為負責過濾和防火墻功能的filter表、負責NAT(網(wǎng)絡地址轉(zhuǎn)化)功能的nat表穿肄、負責拆解/封裝/重封裝報文的mangel表以及關(guān)閉nat表上其中的連接追蹤機制的raw表膀哲。

內(nèi)核netfilter模塊在preroutinginput被碗、forward某宪、outputpostrouting等報文經(jīng)過的5個階段使用firewall3創(chuàng)建的iptables規(guī)則提供各種防火墻功能。

OpenWrt防火墻提供iptables命令锐朴、UCI配置接口etc/config/firewall)和Luci配置界面的防火墻頁面等三種配置方式兴喂。

3.3.1 全狀態(tài)包檢測(SPI)

全狀態(tài)包檢測(SPI),是指通過對每個連接信息焚志,包括源地址衣迷、目的地址、源端口酱酬、目的端口壶谒、協(xié)議類型、TCP協(xié)議連接狀態(tài)和超時時間等進行檢測從而判斷是否丟棄數(shù)據(jù)包膳沽,并在默認情況下拒絕所有來自外網(wǎng)的請求汗菜,對通過防火墻的發(fā)自內(nèi)網(wǎng)請求的連接動態(tài)地維護所有通信的狀態(tài)(連接),只有對內(nèi)網(wǎng)請求回復的連接并符合已建立的狀態(tài)數(shù)據(jù)庫的包才能通過防火墻進入內(nèi)網(wǎng)挑社;該功能由Linux網(wǎng)絡協(xié)議棧默認提供陨界。

3.3.2 防范常見拒絕服務(DoS)攻擊

防范常見拒絕服務(DoS)攻擊,包括PingofDeath痛阻、TearDrop菌瘪、UDPfloodSYNflood阱当、LandAttack俏扩、IPSpoofingDoS等糜工;其中SYNflood可以通過使能全局配置項synflood_protect來進行防范,其余攻擊形式由Linux網(wǎng)絡協(xié)議棧默認提供保護录淡,無需配置捌木。

OpenWrt全局防火墻配置通過etc/config/firewall來配置:

config defaults
    ...
    option synflood_protect '1'
    ...

其中,可用配置項可以參考Documentation/User guide/Firewall documentation/Firewall configuration etc/config/firewall赁咙。

3.3.3 NAT(網(wǎng)絡地址轉(zhuǎn)換)

NAT是指將內(nèi)部網(wǎng)絡的私有IP地址轉(zhuǎn)換為公有IP地址,包括SNAT(源地址轉(zhuǎn)換)和DNAT(目的地址轉(zhuǎn)換)免钻;該功能可以通過創(chuàng)建SNAT和DNAT端口轉(zhuǎn)發(fā)規(guī)則來實現(xiàn)彼水,參考Documentation/User guide/Firewall documentation/Firewall configuration etc/config/firewall

config redirect
 option name  'SNAT 192.168.1.100 to WAN 192.168.0.100 for tftp'
 option src      'lan'
 option src_ip  '192.168.1.100'
 option src_dip  '192.168.0.100'
 option dest  'wan'
 option proto  'udp'
 option target  'SNAT'

config redirect
 option name  'DNAT WAN 69 port to LAN 192.168.1.100:69 for tftp'
 option src      'wan'
 option src_dport '69'
 option dest  'lan'
 option dest_ip  '192.168.1.100'
 option dest_port '69'
 option proto  'udp'
 option target  'DNAT'

DMZ(隔離區(qū))虛擬服務器(端口映射)极舔,是指將來自外網(wǎng)的所有請求或指向某個端口/協(xié)議的請求轉(zhuǎn)發(fā)到指定的內(nèi)網(wǎng)主機凤覆,從而實現(xiàn)對外服務器和虛擬服務器的功能;該功能可以通過創(chuàng)建DNAT端口轉(zhuǎn)發(fā)規(guī)則拆魏,實現(xiàn)指定協(xié)議從指定源地址/源端口到目的地址/目的端口之間的轉(zhuǎn)換盯桦,從而將指定內(nèi)網(wǎng)主機的所有或部分端口/協(xié)議開放給外網(wǎng)用戶訪問。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渤刃,一起剝皮案震驚了整個濱河市拥峦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卖子,老刑警劉巖略号,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洋闽,居然都是意外死亡玄柠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門诫舅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來羽利,“玉大人,你說我怎么就攤上這事刊懈≌饣。” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵虚汛,是天一觀的道長当宴。 經(jīng)常有香客問我,道長泽疆,這世上最難降的妖魔是什么户矢? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮殉疼,結(jié)果婚禮上梯浪,老公的妹妹穿的比我還像新娘捌年。我一直安慰自己,他們只是感情好挂洛,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布礼预。 她就那樣靜靜地躺著,像睡著了一般虏劲。 火紅的嫁衣襯著肌膚如雪托酸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天柒巫,我揣著相機與錄音励堡,去河邊找鬼。 笑死堡掏,一個胖子當著我的面吹牛应结,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泉唁,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼鹅龄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亭畜?” 一聲冷哼從身側(cè)響起扮休,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拴鸵,沒想到半個月后肛炮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡宝踪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年侨糟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘩燥。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡秕重,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厉膀,到底是詐尸還是另有隱情溶耘,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布服鹅,位于F島的核電站凳兵,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏企软。R本人自食惡果不足惜庐扫,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形庭,春花似錦铅辞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至富纸,卻和暖如春囤踩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晓褪。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工堵漱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辞州。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓怔锌,卻偏偏與公主長得像寥粹,于是被迫代替她去往敵國和親变过。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 通常情況下涝涤,商業(yè)和企業(yè)級路由器(如思科媚狰、瞻博網(wǎng)絡、HPE等)運行在自己專有的操作系統(tǒng)(OS)上阔拳,這些軟件只運行在特...
    時代數(shù)字趨勢閱讀 4,017評論 0 0
  • 路由器上面基本都是用switch芯片來實現(xiàn)lan/wan的劃分崭孤,但是有的switch只有一個GMAC,有的有多個G...
    Creator_Ly閱讀 4,255評論 0 1
  • 計算機網(wǎng)絡概述 計算機網(wǎng)絡概念 計算機網(wǎng)絡的定義 計算機網(wǎng)絡是指將地理位置不同的具有獨立功能的多臺計算機及其外部設(shè)...
    TyrantKKK閱讀 524評論 0 0
  • 經(jīng)常玩 PT 的同學很可能也遇到過下面這個令人頭疼的問題:目前大多數(shù)路由器并不支持 IPv6 的局域網(wǎng)轉(zhuǎn)發(fā)糊肠,雖然可...
    exhen閱讀 8,189評論 0 0
  • 概述 1 計算機網(wǎng)絡的兩個重要功能: 連通性辨宠、共享連通性:計算機網(wǎng)絡使上網(wǎng)的用戶都可以交換信息。如遠程桌面連接共享...
    dreamer11閱讀 569評論 0 0