有時候在家想不讓小孩亂上網,某些網址不能登陸,而這時如果家裡的無線路由器剛好是openwrt時,可利用iptables使得當輸入的網址包含相關字段是無法登陸該網頁。
工具/原料
openwrt路由器
方法/步驟
瀏覽器登陸192.168.1.1
然後按照下圖點擊設置
在防火牆自定義規則中寫入如下語句:
iptables -I FORWARD -m string --string "gamersky" --algo kmp -j DROP
按下提交
這是到達如下頁面:
狀態=>防火牆
按下重啟防火牆
網址包含gamersky時,無法登陸,即使在搜索引擎中鍵入gamersky也不行。
看到FORWARD中已經包含了信息。輸入遊民星空網址
試試,果然無法登陸了。
可以看到已經攔截了請求的數據包。
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可以提高效率。