openwrt路由器使用iptables進行域名過濾?

Tags: 路由器, 域名,

有時候在家想不讓小孩亂上網,某些網址不能登陸,而這時如果家裡的無線路由器剛好是openwrt時,可利用iptables使得當輸入的網址包含相關字段是無法登陸該網頁。

工具/原料

openwrt路由器

方法/步驟

瀏覽器登陸192.168.1.1

openwrt路由器使用iptables進行域名過濾

然後按照下圖點擊設置

openwrt路由器使用iptables進行域名過濾

在防火牆自定義規則中寫入如下語句:

iptables -I FORWARD -m string --string "gamersky" --algo kmp -j DROP

openwrt路由器使用iptables進行域名過濾

按下提交

這是到達如下頁面:

狀態=>防火牆

按下重啟防火牆

網址包含gamersky時,無法登陸,即使在搜索引擎中鍵入gamersky也不行。

openwrt路由器使用iptables進行域名過濾

看到FORWARD中已經包含了信息。輸入遊民星空網址

試試,果然無法登陸了。

可以看到已經攔截了請求的數據包。

openwrt路由器使用iptables進行域名過濾

openwrt路由器使用iptables進行域名過濾

iptables -I FORWARD -m string --string "abcd" --algo kmp -j DROP

or

iptables -I FORWARD -m string --string "abcd" --algo bm -j DROP

使用string設置過濾域名。當網址中包含相關字段是無法上該網址。

使用ssh客戶端可以

把過濾的命令寫入/etc/firewall.user中,則每次啟動後firewall就會添加進入規則當中。

而且這樣添加後,在搜索引擎中也不能夠出現該字段,否則不能進行相關搜索。

必須把規則放入FORWARD鏈中,因為FORWARD是路由器進行轉發的中心部分。

當然也可以這樣寫:

iptables -I FORWARD -s www.xxxx.com -m state --state NEW,RELATED,ESTABLISHED -j DROP

但是可能有問題,首先,一般防火牆先於鏈接互聯網,這樣域名得不到轉化,導致錯誤。而且這樣寫默認計算機是轉化為ip看的,但是有一些網站ip有很多個,這樣寫有問題。

所以經過試驗,使用string模塊是有效的。但是效率比較低,可能拖慢網速。不是是不是ipset可以提高效率。

相關問題答案