說明:
1、極路由使用的是OpenWrt做為操作系統,本身就是一個Linux,包管理使用opkg,只是改了一個界面而已。
2、Linux下的防火牆最終都會歸iptables進行管理,OpenWrt的防火牆機制同樣也是,最上層采用了自己基於UCI標准的配置方法管理防火牆firewall,最終寫入到iptables。
3、UCI是OpenWrt統一配置文件的標准,真心不太喜歡這種語法,沒iptables來的清晰。
4、OpenWrt基於firewall的配置,由於涉及到多個網口,有Wan和Lan這些,最終會轉換成很多自定義的鏈,看來來很吃力,我的建議是直接在firewall層全部開啟,然后自己使用iptables做限制。不建議停掉之后再自己寫配置,不然你無法知道哪些網口是走向什么地方的。
5、firewall不能單獨關閉,不然會無法上網。
簡單教程:
OpenWrt下的NAT、DMZ、Firewall rules都是由配置文件“/etc/config/firewall”進行控制管理的。此文件可以使用UCI進行控制,也可以使用vi編輯器直接修改。
該文件最后會在/etc/init.d/firewall啟動的時候由UCI進行解碼並且生成iptables規則生效。因此使用者不需要了解iptables即可通過配置文件實現防火牆規則。
防火牆的修改生效,需要重啟防火牆執行一下命令:
/etc/init.d/firewall reload
或
/etc/init.d/firewall restart
查看當前iptables的已啟用策略語法為:
iptables -L
防火牆的基本設置
- config defaults防火牆默認參數表
鍵 值 是否必須設置 說明 input ACCEPT 是 設置 INPUT 鏈(chain) 的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕 output ACCEPT 是 設置 OUTPUT 鏈(chain) 的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕 forward REJECT 是 設置 FORWARD 鏈(chain) 的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕 syn_flood 1 是 是否啟用防洪水攻擊。可選值:0關閉,1啟用。 synflood_rate 字符串 否 設置 SYN 包傳輸洪水攻擊檢測比率值,默認為:25 單位(包/秒) synflood_burst 字符串 否 設置 SYN 包傳輸比率值識別洪水攻擊,默認為:50 單位(包/秒) disable_ipv6 1 否 設置關閉掉 IPv6 的防火牆策略, 可選值:0忽略,1關閉。
這部分參考值使用系統默認值即可,無需修改:
config defaults option syn_flood 1 option input ACCEPT option output ACCEPT option forward REJECT # Uncomment this line to disable ipv6 rules # option disable_ipv6 1
- config zone用於WAN/LAN域(zone)的參數表
鍵 值 是否必須設置 說明 name 字符串 是 域,必須是唯一值,可選值:wan,lan network 列表值 否 哪些接口被捆綁到這個域中,可選接口的名稱,比如:lan,wan,wan6 input ACCEPT 否 設置INPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕 output ACCEPT 否 設置OUTPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕 forward ACCEPT 否 設置FORWARD鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕 masq 1 否 設置傳輸偽裝,如果是WAN口必須為1 mtu_fix 1 否 設置MTU的MSS鉗制,如果是WAN口請為1
這部分配置也不需要做修改,參考:
config zone option name lan list network 'lan' option input ACCEPT option output ACCEPT option forward ACCEPT config zone option name wan list network 'wan' list network 'wan6' option input REJECT option output ACCEPT option forward REJECT option masq 1 option mtu_fix 1
- config forwarding路由轉發參數表
鍵 值 是否必須設置 說明 src lan 是 設置轉發來源 dest wan 是 設置轉發目標
這部分也需要修改,參考:
config forwarding
option src lan
option dest wan
防火牆的規則
如果在路由產品中需要開發 “允許 WAN 口訪問設備的特定端口”,可以設置本規則(比如開放 WAN 口允許 SSH 登入,或允許 WAN 口訪問設備的 FTP),一般情況下無需設置。
防火牆規則在 /etc/config/firewall 中可以有任意數量的規則,這些規則定義了數據傳輸的動作和行為是被允許還是拒絕。
config rule option name '規則名稱' .....
鍵 | 值 | 是否必須設置 | 說明 |
name | 字符串 | 是 | 設置當前這個 rule 的名稱 |
target | 字符串 | 是 | 設置防火牆的動作,可選值:ACCEPT 許可, REJECT 拒絕, DROP 拋棄 |
src | 字符串 | 否 | 數據源的zone域是哪個。可選值: wan / lan |
src_ip | 字符串 | 否 | 數據源的IP地址是哪個。 |
src_mac | 字符串 | 否 | 數據源的 MAC 地址是哪個。 |
src_port | 字符串 | 否 | 數據源的端口,可以是一個端口,或一個端口范圍,但是必須同時指定了協議類型 |
proto | 字符串 | 否 | 數據源的協議類型,可選值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部 |
dest | 字符串 | 否 | 數據目標的 zone 域是哪個,可選值:wan / lan |
dest_ip | 字符串 | 否 | 數據目標的IP地址。 |
dest_port | 字符串 | 否 | 數據目標的端口,可以是一個端口,或一個端口范圍,但是必須同時指定了協議類型 |
family | 字符串 | 否 | 數據的協議族,可選值: ipv4, ipv6, any |
rule規則可以靈活設置,比如允許WAN口可以ssh到系統,舉例:
config rule option name wan-ssh option src wan option dest_port 22 option proto tcp option target ACCEPT
端口轉發和 DMZ(demilitarized zone 隔離區)
端口轉發是路由產品中常見的配置,它允許使用者通過WAN口訪問特定的端口轉發給局域網的一台電腦設備(比如WAN口訪問80端口(HTTP)將轉發給局域網某台網站服務器)。
端口轉發也是在防火牆配置/etc/config/firewall中定義redirect段策略實現的。所有匹配的來源數據將根據目標設置轉發到目標主機上。
firewall配置中可以有多個redirect轉發策略,默認是沒有開放任何轉發的,如果需要轉發請使用vi或UCI進行配置。
規則配置文件結構
config redirect option name '名稱' ....
config redirect可選參數表
鍵 | 值 | 是否必須設置 | 說明 |
name | 字符串 | 是 | 設置當前這個 redirect 的名稱 |
src | 字符串 | 是 | 轉發源的 zone 域,一般轉發都是轉發從 wan 過來的訪問 |
src_ip | 字符串 | 否 | 轉發源的 IP 地址指定 |
src_mac | 字符串 | 否 | 轉發源的 MAC 地址指定 |
src_port | 字符串 | 否 | 轉發源的端口指定 |
proto | 字符串 | 否 | 轉發源的協議類型,可選值:tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部 |
dest | 字符串 | 是 | 轉發目標的 zone 域 |
dest_ip | 字符串 | 否 | 轉發目標的IP地址指定 |
dest_mac | 字符串 | 否 | 轉發目標的MAC地址指定 |
dest_port | 字符串 | 否 | 轉發目標的端口指定 |
端口轉發的可配置性十分靈活,比如我們將 9020 這個端口轉發給內網一台服務器的 80,舉例:
config redirect option name '9020-80' option proto 'tcp' option src 'wan' option src_dport '9020' option dest 'lan' option dest_ip '192.168.1.100' option dest_port '80'
將電腦192.168.1.2設置DMZ隔離區,舉例:
config redirect option src wan option proto all option dest_ip 192.168.1.2
參考:
http://wiki.openwrt.org/zh-cn/doc/uci(UCI)
http://wiki.openwrt.org/zh-cn/doc/uci/firewall(防火牆配置)
https://www.haiyun.me/archives/openwrt-iptables.html(自定義iptables替換firewall)
http://blog.csdn.net/u011641885/article/details/49303699(以上內容部分轉自此篇文章)