在上一章,我們已經(jīng)介紹了關(guān)于網(wǎng)絡(luò)部分的配置,今天這章我們將深入介OpenWRT下的防火墻類功能。 在OpenWRT下防火墻的默認(rèn)行為已經(jīng)可以滿足路由器的需要,一般情況下也無(wú)需修改,所以本章作為了解閱讀即可。 如果想設(shè)置端口轉(zhuǎn)發(fā)、uPNP等更多功能可以參考本章的配置方法進(jìn)行設(shè)置。 OpenWRT內(nèi)置防火墻介紹OpenWRT下的NAT、DMZ、Firewall rules都是由配置文件“/etc/config/firewall”進(jìn)行控制管理的。此文件可以使用UCI進(jìn)行控制,也可以用vi編輯器直接修改。 而該文件最總會(huì)在/etc/init.d/firewall啟動(dòng)的時(shí)候由UCI進(jìn)行解碼并且生成iptables規(guī)則生效。因此使用者不需要了解iptables即可通過配置文件實(shí)現(xiàn)防火墻控制。 防火墻的修改生效,需要重啟防火墻執(zhí)行以下指令:
root@OpenWrt:/# /etc/init.d/firewall reload
或執(zhí)行:
root@OpenWrt:/# /etc/init.d/firewall restart
查看當(dāng)前iptables的已啟用策略語(yǔ)法為:
root@OpenWrt:/# iptables -L
防火墻的基本設(shè)置本節(jié)主要介紹了防火墻的基本策略和基本參數(shù),其中默認(rèn)值已經(jīng)能很好的工作了,無(wú)需修改。 config defaults 防火墻默認(rèn)參數(shù)表 鍵 值 必須設(shè)置 說(shuō)明
input ACCEPT 是 設(shè)置INPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
output ACCEPT 是 設(shè)置OUTPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
forward REJECT 是 設(shè)置FORWARD鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
syn_flood 1 是 是否啟用防洪水攻擊。 可選值: 0關(guān)閉,1啟用
synflood_rate 字符串 否 設(shè)置SYN包傳輸洪水攻擊檢測(cè)比率值,默認(rèn)為: 25 單位(包/秒)
synflood_burst 字符串 否 設(shè)置SYN包傳輸比率值識(shí)別洪水攻擊,默認(rèn)為: 50 單位(包/秒)
disable_ipv6 1 否 設(shè)置關(guān)閉掉IPv6的防火墻策略,可選值: 0忽略,1關(guān)閉 這部分參考值既是系統(tǒng)默認(rèn)的即可,無(wú)需修改:
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)的參數(shù)表 鍵 值 必須設(shè)置 說(shuō)明
name 字符串 是 域,必須是唯一值,可選值: wan, lan
network 列表值 否 哪些接口被捆綁到這個(gè)域中,可選接口的名稱,比如: lan, wan, wan6
input ACCEPT 否 設(shè)置INPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
output ACCEPT 否 設(shè)置OUTPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
forward ACCEPT 否 設(shè)置FORWARD鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
masq 1 否 設(shè)置傳輸偽裝,如果是WAN口必須為1
mtu_fix 1 否 設(shè)置MTU的MSS鉗制,如果是WAN口請(qǐng)為1 這部分配置也不需要做修改,參考:
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 zone
option name lan
list network ‘lan’
option input ACCEPT
option output ACCEPT
option forward ACCEPT
config forwarding 路由轉(zhuǎn)發(fā)參數(shù)表 鍵 值 必須設(shè)置 說(shuō)明
src lan 是 設(shè)置轉(zhuǎn)發(fā)來(lái)源
dest wan 是 設(shè)置轉(zhuǎn)發(fā)目標(biāo) 這部分配置也不需要做修改,參考:
config forwarding
option src lan
option dest wan
防火墻的規(guī)則如果在你的路由產(chǎn)品中需要開放“允許WAN口訪問設(shè)備的特定端口”,可以設(shè)置本規(guī)則(比如開放WAN口允許SSH登入,或允許WAN口訪問設(shè)備的FTP),一般情況下無(wú)需設(shè)置。 防火墻規(guī)則在/etc/config/firewall中可以有任意數(shù)量的規(guī)則,這些規(guī)則定義了數(shù)據(jù)傳輸?shù)膭?dòng)作和行為是被允許還是拒絕。 規(guī)則配置文件結(jié)構(gòu)
config rule
option name ‘規(guī)則名稱’
…..
config rule可選參數(shù)表: 鍵 值 必須設(shè)置 說(shuō)明
name 字符串 是 設(shè)置當(dāng)前這個(gè)rule的名稱
target 字符串 是 設(shè)置防火墻動(dòng)作,可選值: ACCEPT 許可, REJECT 拒絕, DROP 拋棄
src 字符串 否 數(shù)據(jù)源的zone域是哪個(gè)??蛇x值: wan / lan
src_ip 字符串 否 數(shù)據(jù)源的IP地址是哪個(gè)。
src_mac 字符串 否 數(shù)據(jù)源的MAC地址是哪個(gè)。
src_port 字符串 否 數(shù)據(jù)源的端口,可以是一個(gè)端口,或一個(gè)端口范圍,但是必須同時(shí)指定了協(xié)議類型
proto 字符串 否 數(shù)據(jù)源的協(xié)議類型, 可選值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部
dest 字符串 否 數(shù)據(jù)目標(biāo)的zone域是哪個(gè)??蛇x值: wan / lan
dest_ip 字符串 否 數(shù)據(jù)目標(biāo)的IP地址。
dest_port 字符串 否 數(shù)據(jù)目標(biāo)的端口,可以是一個(gè)端口,或一個(gè)端口范圍,但是必須同時(shí)指定了協(xié)議類型
family 字符串 否 數(shù)據(jù)的協(xié)議族,可選值: ipv4, ipv6, any rule規(guī)則設(shè)置可以靈活,比如允許來(lái)自WAN口的ping,舉例:
config rule
option name Allow-Ping
option src wan
option proto icmp
option icmp_type echo-request
option family ipv4
option target ACCEPT
比如,我們希望WAN口可以ssh到系統(tǒng),那么舉例:
config rule
option name wan-ssh
option src wan
option dest_port 22
option proto tcp
option target ACCEPT
在firewall配置中有大量rule可以參考各位去學(xué)習(xí)配置方法。默認(rèn)情況下的規(guī)則設(shè)置已經(jīng)足夠作為路由器使用。 端口轉(zhuǎn)發(fā)和DMZ端口轉(zhuǎn)發(fā)是路由產(chǎn)品中常見的配置,它允許使用者通過WAN口訪問特定的端口轉(zhuǎn)發(fā)給局域網(wǎng)的一臺(tái)電腦設(shè)備(比如WAN口訪問80端口(HTTP)將轉(zhuǎn)發(fā)給局域網(wǎng)某臺(tái)網(wǎng)站服務(wù)器)。 端口轉(zhuǎn)發(fā)也是在防火墻配置/etc/config/firewall中定義redirect段策略實(shí)現(xiàn)的。所有匹配的來(lái)源數(shù)據(jù)將根據(jù)目標(biāo)設(shè)置轉(zhuǎn)發(fā)到目標(biāo)主機(jī)上。 firewall配置中可以有多個(gè)redirect轉(zhuǎn)發(fā)策略,默認(rèn)是沒有開放任何轉(zhuǎn)發(fā)的,如果你需要轉(zhuǎn)發(fā)請(qǐng)使用vi或UCI進(jìn)行配置。 規(guī)則配置文件結(jié)構(gòu)
config redirect
option name ‘名稱’
….
config redirect可選參數(shù)表: 鍵 值 必須設(shè)置 說(shuō)明
name 字符串 是 設(shè)置當(dāng)前這個(gè)redirect的名稱
src 字符串 是 轉(zhuǎn)發(fā)源的zone域,一般轉(zhuǎn)發(fā)都是轉(zhuǎn)發(fā)從wan過來(lái)的訪問
src_ip 字符串 否 轉(zhuǎn)發(fā)源的IP地址指定
src_mac 字符串 否 轉(zhuǎn)發(fā)源的MAC地址指定
src_port 字符串 否 轉(zhuǎn)發(fā)源的端口指定
proto 字符串 否 轉(zhuǎn)發(fā)源的協(xié)議類型, 可選值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部
dest 字符串 是 轉(zhuǎn)發(fā)目標(biāo)的zone域
dest_ip 字符串 否 轉(zhuǎn)發(fā)目標(biāo)的IP地址指定
dest_mac 字符串 否 轉(zhuǎn)發(fā)目標(biāo)的MAC地址指定
dest_port 字符串 否 轉(zhuǎn)發(fā)目標(biāo)的端口指定 端口轉(zhuǎn)發(fā)的可配置性十分靈活。比如我們將9020這個(gè)端口轉(zhuǎn)發(fā)給內(nèi)網(wǎng)一臺(tái)服務(wù)器的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設(shè)置DMZ隔離區(qū),舉例:
config redirect
option src wan
option proto all
option dest_ip 192.168.1.2
安裝UPnPUPnP是一種對(duì)等即插即用網(wǎng)絡(luò)協(xié)議,主要用于視頻,音頻領(lǐng)域的傳輸協(xié)議,對(duì)使用者來(lái)說(shuō),打開UPnP之后可以增加迅雷等下載軟件的下載速度。 提示:UPnP服務(wù)開機(jī)啟動(dòng)會(huì)消耗一點(diǎn)CPU和內(nèi)存資源。 第一步:安裝必要的包確保你的開發(fā)板已經(jīng)連入互聯(lián)網(wǎng),并執(zhí)行以下命令:
root@OpenWrt:/# opkg update
root@OpenWrt:/# opkg install miniupnpd
第二步:配置UPnP參數(shù)UPnP的配置參數(shù)在/etc/config/upnp當(dāng)中。 config upnpd config的配置參數(shù): 鍵 值 必須設(shè)置 說(shuō)明
enable_natpmp 1 是 開啟NAT-PMP支持,1表示開啟
enable_upnp 1 是 開啟UPnP支持,1表示開啟
secure_mode 1 是 安全模式,客戶端只能給自己轉(zhuǎn)發(fā)一個(gè)輸入口
log_output 0 是 日志輸出級(jí)別,0表示不輸出日志,如果設(shè)置了將輸出到syslog中
download 數(shù)字 是 允許來(lái)自wan口的數(shù)據(jù)輸入帶寬,單位是(KB/秒)。
upload 數(shù)字 是 允許輸出到wan口的數(shù)據(jù)輸入帶寬,單位是(KB/秒)。
external_iface 字符串 是 外網(wǎng)的設(shè)備域,默認(rèn)是wan
internal_iface 字符串 是 內(nèi)網(wǎng)的設(shè)備域,默認(rèn)是lan
port 數(shù)字 是 監(jiān)聽的端口
upnp_lease_file 文件名 是 的upnp客戶端租用記錄文件 config perm_rule許可設(shè)置配置參數(shù): 鍵 值 必須設(shè)置 說(shuō)明
action 字符串 是 設(shè)置是否許可:allow許可,deny不許可
ext_ports 字符串 是 外部端口范圍
int_addr 字符串 是 IP地址,如果是0.0.0.0/0表示全部
int_ports 字符串 是 內(nèi)部端口范圍 在安裝UPnP的時(shí)候已經(jīng)生成的/etc/config/upnp默認(rèn)配置,如果要修改請(qǐng)使用vi或UCI對(duì)起進(jìn)行修改。 第三步:設(shè)置miniupnpd開機(jī)啟動(dòng)
root@OpenWrt:~# /etc/init.d/miniupnpd enable
設(shè)置完畢以后,下次開機(jī)即可駐留內(nèi)存,使用/etc/init.d/miniupnpd start可以臨時(shí)開啟一次看看。 第四步:檢測(cè)是否有效開啟
root@OpenWrt:~# netstat -lnp|grep miniupnpd
如果查看到監(jiān)聽的端口,表示開啟完成。 本章到這里就結(jié)束了,下章開始,我們將了解OpenWRT作為普通路由器的其它設(shè)置部分,包括時(shí)區(qū)、SSH遠(yuǎn)程登入服務(wù)等。感謝大家的耐心學(xué)習(xí)!
|