家長控制或者兒童上網,說的都是可以指定某個設備可以在某個時間段允許上網,或者某個時間斷不允許上網。
1、禁止上網
禁止上網比較直接,當檢測在當前時間斷,則將包丟棄
使用iptables的time擴展模塊,進行時間檢測。
在FORWARD鏈DROP掉數據包,
例如19:00-21:00禁止IP上網:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 19:00 --timestop 21:30 --kerneltz -j DROP
這邊的kerneltz代表使用內核上的時區,而非默認的UTC
又或者19:00-21:00禁止mac地址上網:
iptables -I FORWARD -m mac --mac-source 48:A9:22:71:8B:13 -m time --timestart 19:00 --timestop 21:00 --kerneltz -j DROP
另外時間后面可以指定禮拜幾--weekdays,比如:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 5:00 --timestop 6:30 --weekdays 1,2,3,4,5 -j DROP
或者使用英文:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 5:00 --timestop 6:30 --weekdays Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
openwrt利用防火墻規則禁止某個ip或者mac規定時間,規定日子禁止上網,而局域網能訪問的iptables規則
也可以直接在INPUT鏈上面禁止,這樣設備就連局域網也無法訪問
iptables -I INPUT -s 192.168.1.103 -m time --timestart 5:00 --timestop 6:30 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
2、允許上網
禁止上網是直接DROP,允許上網的話,則是這一段時間斷ACCEPT,其他時間段都DROP,所以我們只需要確保ACCECP在DROP之前即可
例如19:00-21:00允許IP上網,其他時間段不允許:
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 19:00 --timestop 21:30 --kerneltz -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -j DROP
如果有多個時間斷的話,也必須確保所有的ACCECT再最后的DROP之前
如禮拜一到禮拜五20:00到21:00允許上網,周末17:00到21:30允許上網。
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 20:00 --timestop 21:00 --weekdays 1,2,3,4,5 --kerneltz -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -m time --timestart 19:00 --timestop 21:30 --weekdays 6,7 --kerneltz -j ACCEPT
iptables -I FORWARD -s 192.168.1.103 -j DROP