OpenWrt是三大主流路由器固件之一,應用非常廣泛。本文對OpenWrt的使用方法進行簡明總結,方便初學者入門。
0. 參考
1. 概述
OpenWrt是三大主流路由器固件之一,本質上是是一個高度模塊化、高度自動化的嵌入式Linux系統,擁有強大的網絡組件和擴展性,常常被用于工控設備、電話、小型機器人、智能家居、路由器以及VOIP設備中。同時,OpenWrt還提供了100
多個已編譯好的軟件,而且數量還在不斷增加,而 OpenWrt SDK更進一步簡化了開發軟件的工序。
OpenWrt不同于其他許多用于路由器的發行版,它是一個從零開始編寫的、功能齊全的、容易修改的路由器操作系統,從而可以添加需要的功能而不引入無用模塊,同時支持這些功能工作的Linux
內核又遠比絕大多數發行版更新。其架構如下所示:
OpenWrt支持各種處理器架構,無論是對ARM,X86,PowerPC或者MIPS都有很好的支持。OpenWrt支持多達3000
多種軟件包,囊括從工具鏈,到內核,到軟件包,再到根文件系統等整個體系。用戶只需簡單的一個make命令即可方便快速地定制一個具有特定功能的嵌入式系統來作為路由器固件。
OpenWrt支持常見路由協議,包括RIP、OSPF、OLSR、BATMAN等,適用于從小型網絡、大型密集網絡到無線Ad-hoc網絡等各種場景。
OpenWrt支持DMZ(隔離區)、VLAN(虛擬局域網)、虛擬服務器(端口映射)、訪問控制列表(ACL)、NAT(網絡地址轉換)等常用功能模塊以及支持如下功能的防火墻:
- 全狀態包檢測(SPI);
- 防范常見拒絕服務(DoS)攻擊;
- 過濾多播/Ping 探測包;
- 日志記錄和報表統計;
- 網絡攻擊檢測。
2. 固件編譯和更新
2.1 固件編譯
OpenWrt最新源碼可以通過git工具從OpenWrt GitHub倉庫下載:
```bash
$ git clone https://github.com/openwrt/openwrt.git
```
OpenWrt編譯建議使用最新的穩定版本(不帶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的構建系統,具體用法可以參考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中統一配置RIP和OSPF,屬于可選項,未選中時可以使用telnet分別連接2602和2604端口配置RIP和OSPF;
- Network -> wpa-supplicant:編譯wpa-supplicant包,用以支持無線密碼,需要在LuCI配置界面->系統->軟件包界面手動安裝。
2.2 固件更新
固件更新方式可以使用串口終端和網頁配置界面2種方式:
-
串口終端方式
路由器串口一般為標準TTL接口,可以通過USB轉TTL模塊連接到電腦上,默認波特率一般為115200:連接串口并在U-Boot啟動時按任意鍵中斷固件加載;
連接任一路由器網口到PC網口;
-
在
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的同一網段;
使用PC瀏覽器訪問路由器IP以下載固件。
注意:
- 映像下載完成后用戶密碼為空,需要重新設置;
- 如果瀏覽器自動跳轉到LuCI,則需要更換瀏覽器或者清除瀏覽器cache(緩存);
- U-Boot復位命令為
reset
。
-
網頁配置界面方式
路由器默認IP為192.168.1.1
,網頁配置界面->系統->備份/升級界面中包含固件刷新,可以用于下載固件;注意:- 電腦IP地址采用自動配置方式;
- 連接路由器IP即網關地址,默認密碼為空;
- 依次進入LuCI配置界面->系統->備份/升級界面;
- 使用固件刷新方式更新固件。
注意:固件更新完成后用戶配置仍然保留。
3. 路由器配置
路由器可以通用過如下兩種方式進行配置:
- 終端命令行配置方式:
- 可以使用串口或者
telnet
連接到路由器終端; - 命令行配置時可以采用UCI命令或者
vi <配置文件>
方式;
- 可以使用串口或者
- Web界面配置方式:使用PC瀏覽器連接路由器IP即網關地址即可。
注意:默認密碼為空,可以在終端中使用passwd
命令修改或者在網頁配置界面->系統->備份/升級界面中設置。
3.1 VLAN配置
VLAN協議即虛擬局域網, 通過在報文頭增加VLAN標簽,將網絡設備被化分為若干個虛擬的局域網組。OpenWrt支持IEEE 802.1Q
和IEEE 802.1ad VLAN
標準,通過UCI配置接口(/etc/config/network
)和LuCILuci配置界面的交換機頁面將路由器中的嵌入式交換機劃分為多個VLAN,并在系統中顯示為獨立的接口。
假定路由器有1個wan口(編號0)和4個LAN口(編號1,2,3,4),使用如下方法將4個LAN口劃分為2個VLAN(1和2)。
3.1.1 UCI命令行配置
連接路由器終端;
-
劃分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'
-
創建新的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'
-
將默認LAN接口
lan
切換到VLAN1上:OpenWrt# uci set network.lan.ifname='eth1.1'
-
在
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'
-
將
lan2
加入防火墻的lan
區域:OpenWrt# uci set firewall.@zone[0].network='lan lan2'
-
提交修改并復位路由器:
OpenWrt# uci commit OpenWrt# reboot
3.1.2 配置文件配置
連接路由器終端;
-
使用
vi etc/config/network
命令修改etc/config/network
,劃分VLAN,切換lan
接口到VLAN1上,并創建新的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'
-
使用
vi etc/config/dhcp
命令在etc/config/dhcp
末尾增加LAN2的DHCP配置:config dhcp 'lan2' option start '100' option limit '150' option interface 'lan2' option leasetime '12h'
-
使用
vi etc/config/firewall
修改etc/config/firewall
,將lan2
加入防火墻的lan
區域:config zone option name 'lan' option network 'lan lan2' ...
-
復位路由器:
OpenWrt# reboot
3.1.3 網頁界面配置
- 使用PC瀏覽器連接路由器地址即網關地址;
- 進入
網絡->交換機
頁面,點擊添加
按鈕添加VLAN2,修改VLAN1配置,并點擊保存并應用
按鈕: - 進入
網絡->接口
頁面,點擊添加新接口
按鈕添加lan2
,對應于VLAN2接口eth1.2
,并點擊提交
按鈕: - 在刷新出來的新頁面中點擊
DHCP設置
按鈕,設置lan2
的IPv4地址和網關; - 在刷新出來的新頁面中點擊
防火墻設置
標簽,將lan2
加入防火墻的lan
區域,并點擊保存并應用
按鈕: - 點擊
LAN
標簽設置lan
接口,點擊物理設置
按鈕,切換lan
接口到VLAN1接口eth1.1
,并點擊保存并應用
按鈕:
注意:點擊保存并應用
按鈕時若界面卡住不再刷新,則將PC網口更換到路由器另外一組VLAN對應的LAN口。
3.2 路由配置
IP路由是路由器最重要的功能。路由是在網絡中選擇要發送網絡流量的路徑的過程。報文根據路由表來進行路由。路由可以靜態配置,也可以使用路由協議進行自動化的動態配置以減少靜態配置工作。
路由表中的路由項,根據目的地址不同可以劃分為單播路由和多播路由;根據來源不同可以劃分為設置接口IP地址和掩碼時自動增加的直連路由、網絡管理員手工配置的靜態路由和路由協議動態生成的動態路由。
路由狀態可以通過LuCI配置界面路由表狀態頁面查看。
為了方便說明,之后的配置以如下場景為例:
其中:
- 被測路由器WAN口IP地址為
192.168.0.100
,對應網口設備為eth1
,LAN口IP地址為192.168.1.X
; - 鄰居路由器WAN口IP地址為
192.168.0.200
,對應網口設備為eth1
,LAN口IP地址為192.168.2.X
。
3.2.1 靜態路由
靜態路由,是網絡管理員通過route
、ip route
等Linux
路由配置命令手工配置的路由,適用于拓撲簡單并且穩定的小型網絡。
靜態路由不能自動適應網絡拓撲結構的變化,因此當網絡發生故障或網絡拓撲發生變化時,必須再次由網絡管理員手工修改配置。
除了route
、ip route
等Linux
路由配置命令,OpenWrt同時通過LuCI配置界面提供web方式的靜態路由查看和配置命令,即狀態界面的路由表頁面和網絡界面的靜態路由頁面。
配置方法如下所示:
-
被測路由器:連接終端或者進入LuCI配置界面的靜態路由頁面,增加WAN口路由規則,將鄰居路由器LAN側IP地址路由到鄰居路由器的WAN口IP地址,并關閉防火墻:
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配置界面的靜態路由頁面,增加WAN口路由規則,將被測路由器LAN側IP地址路由到被測路由器的WAN口IP地址,并關閉防火墻:
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
注意:
可以通過LuCI配置界面的靜態路由器頁面增加靜態路由配置,但是無效的路由表項即使保存成功也不會生效,無法在路由表狀態頁面看到;在終端中使用
route
命令添加無效路由時會提示錯誤信息;-
需要關閉防火墻或者修改
etc/config/firewall
接受轉發包和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 動態路由
OpenWrt通過Routing套件中的Quagga軟路由提供RIP、OSPF等動態協議路由協議。
Quagga是一個路由軟件包,用于為基于TCP / IP的路由服務提供路由協議支持,包括RIPv1,RIPv2,RIPng,OSPFv2,OSPFv3,IS-IS,BGP-4和BGP-4 +等。Quagga還支持特殊的BGP路由反射器和路由服務器行為。除了傳統的IPv4路由協議,Quagga還支持IPv6路由協議。通過支持SMUX和AgentX協議的SNMP守護程序,Quagga提供了路由協議MIB。
Quagga體系結構由核心守護程序zebra和一系列協議守護程序組成,用以共同構建路由表。每個主要協議都在其自己的守護程序中實現,并與核心守護程序(zebra)通信以將路由更新傳遞給zebra;zebra守護程序充當基礎Unix內核的抽象層,并通過Unix或TCP流向Quagga客戶端提供Zserv API。
Quagga在網絡協議棧中的作用是與其他路由器交換路由信息,制定路由和策略決策,并將路由決策安裝到Linux內核中,從而允許Linux協議棧做出相應的轉發決策。
Quagga通過集成用戶界面外殼程序 vtysh來管理所有守護程序。vtysh通過UNIX域套接字連接到每個守護程序,然后充當用戶輸入的代理。除了統一的前端,vtysh還提供了通過集成配置模式使用單個配置文件來配置所有守護程序的功能,從而避免了為每個守護程序維護單獨的配置文件的開銷。
3.2.2.1 RIP
Quagga路由套件的ripd
支持RFC2453
中描述的RIPv2
和RFC1058
中描述的RIPv1
。
RIP(Routing Information Protocol,路由信息協議)定義了路由器在互連的一組局域網(LAN)之間移動流量時應如何共享信息,應用較早(最早出現于1981年的Xerox網絡系統(XNS)協議套件中)、使用較普遍的內部網關協議(Interior Gateway Protocol,IGP),適用于小型同類網絡的一個自治系統(AS)內的路由信息的傳遞。
RIP是一個用于路由器和主機間交換路由信息的距離向量協議,使用跳數,即metric
來衡量到達目標地址的路由距離。
RIP使用距離矢量算法(Bellman-Ford算法)來決定將數據包放在哪個路徑上以到達其目的地。每個RIP路由器維護一個路由表,每30秒向其最近的鄰居廣播其整個路由表。如果路由器在路由上收到更新,并且新路徑更短,它將使用較短路徑的長度和下一跳地址更新其表條目。如果新路徑較長,它將等待一個抑制時間,以查看以后的更新是否也反映了較高的值。僅當確定新的較長路徑穩定時,才會更新表條目。如果路由器崩潰或網絡連接斷開,則網絡會發現這一點,因為該路由器停止向其鄰居發送更新,或者停止沿斷開的連接發送和接收更新。如果路由表中的給定路由沒有在6個連續的更新周期(即180秒)內更新,則RIP路由器將丟棄該路由,并通過其自身的定期更新讓網絡的其余部分了解問題。
目前,OSPF已在很大程度上取代了RIP,成為最廣泛使用的內部網關協議(IGP)。RIP已被取代主要是因為它的簡單性以及無法擴展到非常大和復雜的網絡。
配置方法如下所示:
-
在被測路由器終端中執行如下命令:
OpenWrt# vi /etc/quagga/ripd.conf
-
將如下內容粘貼到
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
在鄰居路由器*終端中執行同樣步驟,注意將
network 192.168.1.0/24
改為network 192.168.2.0/24
;重啟路由器或執行
/etc/init.d/quagga restart
重啟quagga
服務;在路由器終端中首先使用
/etc/init.d/firewall stop
關閉防火墻,然后使用route
命令查詢動態路由是否已經出現;在路由器終端中使用
vtysh
進入配置終端后輸入然后使用show ip rip status
查看RIP信息。
注意:
參考Quagga 配置筆記;
通過
vtysh
配置時需要先使用configure terminal
進入配置終端后再輸入配置文本中的命令,具體步驟參考Quagga簡介、安裝、配置說明;測試時也可以通過
/etc/quagga/ripd.log
和/etc/quagga/ospfd.log
查看日志和調試信息;日志和調試信息在正式版本中可以關掉,節省空間;
-
測試時需要關閉防火墻,或者修改
etc/config/firewall
添加如下防火墻規則,否則無法收到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網絡的OSPFv2
。
OSPF(Open Shortest Path First,開放式最短路徑優先)是內部網關協議(IGP)系列中最著名的協議,由IETF的OSPF工作組在19世紀80年代中期開發。OSPF具有路由變化收斂速度快、路由更新效率高、無路由環路、支持變長子網掩碼(VLSM)和匯總、層次區域劃分等優點。OSPF通過鄰居關系維護路由,避免定期更新對帶寬進行的消耗,適用于大中型網絡。在網絡中使用OSPF協議后,大部分路由將由OSPF協議自行計算和生成,無須網絡管理員人工配置,當網絡拓撲發生變化時,協議可以自動計算、更正路由,極大地方便了網絡管理。
在網絡中配置后,OSPF將偵聽鄰居并收集所有可用的鏈路狀態數據,以構建其網絡中所有可用路徑的拓撲圖,然后將信息保存在其拓撲數據庫(也稱為鏈路狀態數據庫(LSDB))中。根據收集到的信息,它將使用計算機科學家Edsger W. Dijkstra在1956年開發的稱為最短路徑優先(SFP)的算法,計算到達每個可訪問子網/網絡的最佳最短路徑。大部分路由將由OSPF協議自行計算和生成,無須網絡管理員人工配置,當網絡拓撲發生變化時,協議可以自動計算、更正路由,極大地方便了網絡管理。
OSPF將自治系統內的路由器劃分為路由區域,每個區域都由一組連接的路由器組成,從而簡化管理并優化可用資源,并在此基礎上進行路由計算。
與RIP協議相比,OSPF使用基于帶寬的度量值,選路更加科學。當路由條目更新時,僅發送更新路由(RIP發送整個路由表),減小了線路帶寬的消耗,收斂速度快。
配置方法如下所示:
-
在被測路由器串口shell中執行如下命令:
OpenWrt# vi /etc/quagga/ospfd.conf
-
將如下內容粘貼到
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
在鄰居路由器終端中執行同樣步驟,注意將
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
;重啟路由器或執行
/etc/init.d/quagga restart
重啟quagga
服務;在路由器終端中使用
/etc/init.d/firewall stop
關閉防火墻,然后使用route
命令查詢動態路由是否已經出現;在路由器終端中使用
vtysh
進入配置終端后輸入然后使用show ip ospf database
查看路由數據庫。
注意事項參見3.2.2 RIP。
3.2.3 多播路由
多播方式使得服務器可以將一個報文發送到多播地址,然后通過路由器的多播路由支持,使得多播組內的每個報文都可以接收到服務器發送的報文。多播數據在傳輸層封裝為UDP報文,發送到224.0.0.0 ~ 239.255.255.255
范圍內的D類IP地址和對應的以01-00-5E
開頭的MAC地址。
實現多播路由的關鍵在于建立多播路由表。多播路由表的創建包括3種方式,即靜態路由、PIM
和IGMP
代理。其中,IGMP(互聯網組管理協議)是一個由主機和路由器之間使用的IPv4相鄰網絡建立多播,并維護多播組成員關系的通信協議。IGMP代理通過攔截路由器LAN側主機發送的IGMP報文,代理LAN側主機來發送IGMP報文和維護多播組成員關系,并加入上游多播組,即在WAN端口執行主機的角色,LAN端口執行路由器的角色。
OpenWrt通過自帶的網絡服務包igmpproxy
支持IGMP代理,并IGMP使用UCI配置接口(etc/config/igmpproxy
)作為管理接口,可以通過Linux命令ip mroute
查看多播路由。
配置方法如下所示:
1.在被測路由器終端上修改/etc/config/igmpproxy
中的upstream
端口監聽地址范圍(外網PC地址范圍)并關閉loopback
端口監聽:
```
config phyint
...
option direction upstream
list altnet 192.168.0.0/24
```
2.重啟被測路由器,并在被測路由器終端上使用ps | grep igmp
確認存在igmpproxy
進程,如果沒有則需要確認igmpproxy
文件配置是否正確;
3.在模擬內網PC上啟動VLC?media?player,輸入地址udp://@239.1.1.1:8028
,點擊播放;
4.在模擬外網PC上啟動PixStream?WinSend,點擊open
選擇需要發送的的*.ts
格式的流媒體文件,,其他參數均為默認,點擊發送。
注意:
-
/var/etc/igmpproxy.conf
由igmpproxy
根據/etc/config/igmpproxy
自動生成;如果igmpproxy
代理進程沒有起來,需要確認內容是否如下所示,否則需要重啟路由器:quickleave phyint eth1 upstream ratelimit 0 threshold 1 altnet 192.168.0.0/16 phyint br-lan downstream ratelimit 0 threshold 1
IGMP代理測試詳細步驟參見IGMP Proxy測試。
3.3 防火墻
防火墻是指一種將內部網和公眾訪問網(如Internet)分開的方法,實際上是一種建立在現代通信網絡技術和信息安全技術基礎上的應用性安全技術和隔離技術。
OpenWrt基于Linux內核netfilter/iptable
框架封裝了網絡防火墻組件firewall3
,并進而通過LuCI配置界面提供web配置功能。
firewall3
在用戶空間中運行,用以將配置文件解析為一組iptables規則,并將每個規則發送到內核netfilter
模塊。OpenWRT使用firewall3
應用程序安全構建規則集,同時隱藏許多細節。
iptables
是內核netfilter
模塊的用戶空間代理,通過將報文過濾規則劃分為負責過濾和防火墻功能的filter表、負責NAT(網絡地址轉化)功能的nat表、負責拆解/封裝/重封裝報文的mangel表以及關閉nat表上其中的連接追蹤機制的raw表。
內核netfilter
模塊在prerouting
、input
、forward
、output
和postrouting
等報文經過的5個階段使用firewall3
創建的iptables
規則提供各種防火墻功能。
OpenWrt防火墻提供iptables命令、UCI配置接口(etc/config/firewall
)和Luci配置界面的防火墻頁面等三種配置方式。
3.3.1 全狀態包檢測(SPI)
全狀態包檢測(SPI),是指通過對每個連接信息,包括源地址、目的地址、源端口、目的端口、協議類型、TCP協議連接狀態和超時時間等進行檢測從而判斷是否丟棄數據包,并在默認情況下拒絕所有來自外網的請求,對通過防火墻的發自內網請求的連接動態地維護所有通信的狀態(連接),只有對內網請求回復的連接并符合已建立的狀態數據庫的包才能通過防火墻進入內網;該功能由Linux網絡協議棧默認提供。
3.3.2 防范常見拒絕服務(DoS)攻擊
防范常見拒絕服務(DoS)攻擊,包括PingofDeath
、TearDrop
、UDPflood
、SYNflood
、LandAttack
、IPSpoofingDoS
等;其中SYNflood
可以通過使能全局配置項synflood_protect
來進行防范,其余攻擊形式由Linux網絡協議棧默認提供保護,無需配置。
OpenWrt全局防火墻配置通過etc/config/firewall
來配置:
config defaults
...
option synflood_protect '1'
...
其中,可用配置項可以參考Documentation/User guide/Firewall documentation/Firewall configuration etc/config/firewall。
3.3.3 NAT(網絡地址轉換)
NAT是指將內部網絡的私有IP地址轉換為公有IP地址,包括SNAT(源地址轉換)和DNAT(目的地址轉換);該功能可以通過創建SNAT和DNAT端口轉發規則來實現,參考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(隔離區)和虛擬服務器(端口映射),是指將來自外網的所有請求或指向某個端口/協議的請求轉發到指定的內網主機,從而實現對外服務器和虛擬服務器的功能;該功能可以通過創建DNAT端口轉發規則,實現指定協議從指定源地址/源端口到目的地址/目的端口之間的轉換,從而將指定內網主機的所有或部分端口/協議開放給外網用戶訪問。