Iptables 按时间限制访问

Iptables 按时间限制访问

如何控制每个IP的上网时间?

如何向此规则添加时间:iptables -I FORWARD -s 192.168.0.56 -j ACCEPT

我试过这个

iptables -I FORWARD -s 192.168.0.56 -m time --timestart 13:00 --timestop 14:00 -j ACCEPT

iptables -I FORWARD -s 192.168.0.56 --match time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 09:00 --timestop 10:00 -j ACCEPT

但它不起作用

也许还有其他方法可以做到?

Operating system: Ubuntu 18.04.4 LTS

root@router:/home/wlodek# iptables -L FORWARD
Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.56         anywhere             TIME from 09:00:00 to 10:00:00 on Mon,Tue,Wed,Thu,Fri UTC
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

IP:192.168.0.56-有联系 iptables -I FORWARD -s 192.168.0.56 -j ACCEPT

IP:192.168.0.56-无连接 iptables -I FORWARD -s 192.168.0.56 -j ACCEPT +时间

答案1

iptables采用 UTC 时间,而不是您的当地时间。

尝试以下公式:

iptables -I FORWARD -s 192.168.0.56 --match time --weekdays Mon,Tue,Wed,Thu,Fri --timestart $(date -u -d @$(date "+%s" -d "09:00") +%H:%M) --timestop $(date -u -d @$(date "+%s" -d "10:00") +%H:%M) -j ACCEPT

这会将您的本地开始和结束时间转换为 UTC,然后交给iptables

当然,您可以用任何其他时间替换开始时间09:00和结束时间。10:00

相关内容