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 + время

3
задан 25 February 2020 в 11:53

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 к любому другому времени.

5
ответ дан 25 February 2020 в 23:05

Другие вопросы по тегам:

Похожие вопросы: