Народ, привет!
Нужна помощь в скрипте, который загружает правила в Iptables
Хочу, чтобы в рамках определенного времени доступ в интернет блокировался на определенный хост.
Делаю так:
# Переменные
# Начало
MinDate=`date -d "10:00" +%H:%M`
# Конец
MaxDate=`date -d "15:00" +%H:%M`
# Текущая дата
CurDate=`date +%H:%M`
# Задаем условие
if (( $MinDate < $CurDate < $MaxDate )); then
iptables -I FORWARD 1 -s 172.23.11.152 -j REJECT
fi
Но bash выдает ошибку:
-bash: ((: 10:00 < 12:06 < 15:00 : синтаксическая ошибка в выражении (неверный маркер «:00 < 12:06 < 15:00 »)
Экранирование ломает переменную.
Пробовал указывать явно:
if (( $('date -d "10:00" +%H:%M') < $CurDate < $MaxDate )); then
iptables -I FORWARD 1 -s 172.23.11.152 -j REJECT
fi
Тот же результат.
Подскажте пожалуйста, как построить выражение, чтобы оно работало?
Или, быть может, есть элегантнее решение?
Пробовал делать так:
iptables -I FORWARD 1 -s 172.23.11.152 -m time --timestart 10:00 --timestop 15:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
Не работает. Т.е. ка-будто его нет вовсе...
Если сделать: iptables -I FORWARD 1 -s 172.23.11.160 -j REJECT - работает.
А еще, мне непонятно, почему, если сделать так:
iptables -I FORWARD 1 -s 172.23.11.152 -d eth1 -m time --timestart 10:00 --timestop 15:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
Система ругается, что такого интерфейса нет, хотя он есть, это точно...
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 11.11.11.11 netmask 255.255.254.0 broadcast 11.11.10.255
inet6 fe80::215:5dff:fe0b:640c prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:0b:64:0c txqueuelen 1000 (Ethernet)
RX packets 256999269 bytes 252484553854 (252.4 GB)
RX errors 0 dropped 259399 overruns 0 frame 0
TX packets 95268664 bytes 35405775114 (35.4 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ОСь - Ubuntu server 18.04.02
Уточнение.
Правило:
iptables -I FORWARD 1 -s 172.23.11.152 -m time --timestart 10:00 --timestop 15:00 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECT
заработало, только не так как мне нужно.
По факту, ему пофиг на параметры времени. Он начал блокировать все постоянно.
Т.е., так же как правило: iptables -I FORWARD 1 -s 172.23.11.160 -j REJECT
Есть идеи?