1

Тема: Включаем интернет по расписанию

Осознал потребность в теме, освещающей очень распространённый вопрос:

есть какие нибудь наработки по отключению интернет через cron на конкретном ip-адресе или mac-адресе? Это реально выполнить?

Или ещё:

возможно ли сделать пакет, в котором будет реализована работа wifi по расписанию(Wireless LAN Scheduling)?

Итак, включаем/выключаем инет по расписанию(применительно к Кинетику и Гиге):
1) На роутере должна быть установлена система пакетов Zyxmonа
2) Идем в веб интерфейсе на закладку "Фильтры", "MAC-адреса", добавляем MAC-адреса нужных компов
и выбираем "Режим фильтра MAC-адресов" "Черный список". Т.о, изначально(после загрузки роутера) интернет для этих адресов будет заблокирован.
3) Создадим в папке /media/DISK_A1/system/usr/sbin  (можно и в другой - я делал в этой) 2 файла-скрипта:
ineton.sh с содержимым:

#!/bin/sh

iptables -D FORWARD -m mac --mac-source 00:0C:29:92:F1:6F -j DROP
logger "Internet turned on"

и inetoff.sh с содержимым:

#!/bin/sh

iptables -I FORWARD -m mac --mac-source 00:0C:29:92:F1:6F -j DROP
logger "Internet turned off"

Здесь 00:0C:29:92:F1:6F  - MAC адрес устройства(компьютера), который мы будем блокировать.
Если таких несколько, в каждый из файлов пишем соответствующее количество строк iptables с нужными MAC адресами.
Также, не забываем установить этим файлам атрибут "исполняемый":

chmod +x /media/DISK_A1/system/usr/sbin/ineton.sh
chmod +x /media/DISK_A1/system/usr/sbin/inetoff.sh

4) Переходим к настройке "планировщика задач" cron. (Его не нужно устанавливать через opkg  - cron уже встроен в расширенную систему Zyxmonа)
Правим файл /media/DISK_A1/system/etc/crontabs/root
Вот пример, чего должно получиться:

SHELL=/bin/sh
MOUNT="/media/DISK_A1/system"
PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
# Please remove every minute task. It is for checking puposes
#*/1 * * * * logger "Test of cron every minute"
0 8 */1 * * ineton.sh
0 22 */1 * * inetoff.sh
#

В данном примере, интернет будет включаться в 8:00 каждый день и отключаться в 22:00 каждый день.
Правила установки времени выполнения (всех этих * и циферок) легко можно найти в инете.
Осталось только переименовать файл /media/DISK_A1/system/etc/init.d/K02cron в S02cron(и дать команду на его запуск:

/media/DISK_A1/system/etc/init.d/S02cron start

) и всё, - готово!

С включением/выключением WiFi всё строго аналогично, только назовём скрипты wifion.sh

#!/bin/sh
 
/usr/sbin/iwpriv ra0 set RadioOn=1
/bin/rm -f /var/tmp/radio_off

и wifioff.sh

#!/bin/sh
 
/usr/sbin/iwpriv ra0 set RadioOn=0

Отредактировано Dr.Acid (2013-02-22 22:03:01)

2

Re: Включаем интернет по расписанию

Dr.Acid :

2) Идем в веб интерфейсе на закладку "Фильтры", "MAC-адреса", добавляем MAC-адреса нужных компов
и выбираем "Режим фильтра MAC-адресов" "Черный список". Т.о, изначально(после загрузки роутера) интернет для этих адресов будет заблокирован.

Забыл тогда сказать, что можно сделать и наоборот - белый список + "открытие" доступа "посторонним" макам по расписанию.

А так - почитал, всё должно быть понятно даже школьнику. Советую вынести в WIKI.

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

3

Re: Включаем интернет по расписанию

Dr.Acid :

интернет для этих адресов будет заблокирован.

или будет заблокировано полностью подключение к роутеру(как домашнюю сеть)?
билоб интересней если-бы только интернет.

4

Re: Включаем интернет по расписанию

ZimniY :

Забыл тогда сказать, что можно сделать и наоборот - белый список + "открытие" доступа "посторонним" макам по расписанию.

Да, можно и наоборот. Это к недостатку описанного метода - если, например, что-нибудь заглючило и роутер пришлось перезагрузить, то "управляемым"  клиентам придётся ждать, когда наступит время их "подключения" к инету, даже если они уже в нём были(т.е. следующего включения). Собственно, и наоборот - в методе с белым списком, как ты писал, всегда можно "включить" всем инет, просто перезагрузив роутер. Тут уже выбор за пользователем.
Вот, приведу здесь выдержку из таблицы(iptables -nvL) для всех трех случаев:


1) Нет никаких фильтров:

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  ppp+   ppp+    0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  !br0   ra0     0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0           state NEW
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

"Белый" список - единственный MAC 00:0C:29:92:F1:6F

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  ppp+   ppp+    0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  !br0   ra0     0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           MAC 00:0C:29:92:F1:6F
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

Здесь всего 1 мак адрес, но не забывайте, что адрес компа, ч которого производится настройка роутера тоже обязательно должен быть внесен в белый список.
"Черный" список - единственный MAC 00:0C:29:92:F1:6F

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  ppp+   ppp+    0.0.0.0/0            0.0.0.0/0
    0     0 DROP       all  --  !br0   ra0     0.0.0.0/0            0.0.0.0/0
    4   336 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           MAC 00:0C:29:92:F1:6F
    0     0 ACCEPT     all  --  br0    *       0.0.0.0/0            0.0.0.0/0           state NEW
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED

Думаю, теперь будет понятно, как (по аналогии), сделать вариант и с белым списком.

А так - почитал, всё должно быть понятно даже школьнику. Советую вынести в WIKI.

Ну, я постарался!  wink
Насчет вики уже подумывал - чтож, если пройдёт "приемку" здесь - действительно, пожалуй, напишу в вики.

Отредактировано Dr.Acid (2013-02-23 22:19:42)

5

Re: Включаем интернет по расписанию

imalv26 :
Dr.Acid :

интернет для этих адресов будет заблокирован.

или будет заблокировано полностью подключение к роутеру(как домашнюю сеть)?
билоб интересней если-бы только интернет.

В данном случае, полностью. Это так сделано у Заксель, имейте ввиду - в приведённом примере я просто сделал по образцу. Для того, чтобы был заблокирован только инет, достаточно сделать так:

iptables -I FORWARD -o ra0 -m mac --mac-source 00:0C:29:92:F1:6F -j DROP

Т.е. явно указать в правиле выходной интерфейс (в моем случае это ra0)
Соответственно, разблокировка будет:

iptables -D FORWARD -o ra0 -m mac --mac-source 00:0C:29:92:F1:6F -j DROP

В этом случае, через веб вообще ненадо ничего включать, а оставить только скрипты. Ну ещё можно стартовый скрипт сделать - для установки начального состояния.

Отредактировано Dr.Acid (2013-02-23 23:22:50)

6

Re: Включаем интернет по расписанию

Dr.Acid :

Т.е. явно указать в правиле выходной интерфейс (в моем случае это ppp0)

если клиенты подключены по wi-fi а интернет получаю с usb модема какие будут скрыпты?
возможноль реализовать на KEENETIC 4G.

7

Re: Включаем интернет по расписанию

imalv26 :

если клиенты подключены по wi-fi а интернет получаю с usb модема какие будут скрыпты?
возможноль реализовать на KEENETIC 4G.

1) Не важно, как подключены клиенты(LAN, WiFi) - интерфейс моста называется br0 (входной, в нашем случае)
Насчет выходного интерфейса(инета) - да, есть варианты - разбирайтесь. Для модемов это вроде wimax0 называется(поправьте, если не так).
2) На KEENETIC 4G реализовать можно - в принципе, точно так-же. И на Лайте можно.(с известными осложнениями, но можно)

Отредактировано Dr.Acid (2013-02-23 23:29:41)

8

Re: Включаем интернет по расписанию

Dr.Acid :

Здесь всего 1 мак адрес, но не забывайте, что адрес компа, ч которого производится настройка роутера тоже обязательно должен быть внесен в белый список.

Простите, но нахрена? Мы же FORWARDING правим, а не INPUT.

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

9

Re: Включаем интернет по расписанию

ZimniY :

Простите, но нахрена? Мы же FORWARDING правим, а не INPUT.

Я и сам удивился, но Заксель на странице веба предупреждает.
А так вообще мистика творится - я с одного компа пингую другой(оба подключены к ЛАН роутера), а пакеты идут через INPUT - это что за ерунда? Правда, физически это один порт на роутере (один из компов - виртуалка), может, дело в этом?

Отредактировано Dr.Acid (2013-02-24 00:19:01)

10

Re: Включаем интернет по расписанию

Рецепт из пятого поста работает, при этом в вебе ничего задавать не нужно (в смысле, фильтров). В качестве -o указывать ваш интерфейс с инетом, обычно это eth2.2 или ppp0 При этом доступ к домашней локалке не блокируется.

11

Re: Включаем интернет по расписанию

Dr.Acid :

Правим файл /media/DISK_A1/system/etc/crontabs/root
Вот пример, чего должно получиться:


у меня зароботало только когда прописал полный путь и дал команду старт:
0 7 */1 * * /media/DISK_A1/system/usr/sbin/wifion.shf start
0 1 */1 * * /media/DISK_A1/system/usr/sbin/wifioff.shf start
38 24 */1 * */media/DISK_A1/system/usr/sbin/inetoff.sh start
0 9 */1 * * /media/DISK_A1/system/usr/sbin/ineton.sh start
да все прекрасно работает и на KEENETIC 4G. спасибо.
еще такой вапрос: возможноль не отключать доступ до интернета(по wifi) полностю, а ограничить скорость доступа?
видел в TP-LINK такое возможно с коробки, там даже режут трафик отдельно для торентов.

Отредактировано imalv26 (2013-02-24 14:56:20)

12

Re: Включаем интернет по расписанию

imalv26 :

у меня зароботало только когда прописал полный путь и дал команду старт:

А переменная PATH у вас в файле /media/DISK_A1/system/etc/crontabs/root присутствует? У меня да, и всё работает без указания полных путей. А start имеет смысл, только если этот параметер обрабатывается в самом скрипте, так что можете убирать смело.

еще такой вапрос: возможноль не отключать доступ до интернета(по wifi) полностю, а ограничить скорость доступа?
видел в TP-LINK такое возможно с коробки, там даже режут трафик отдельно для торентов.

А вот об этом в 4ж даже не мечтайте - нереально(мильон раз писал, почему) sad  TP-LINK - это да, это круто!

13

Re: Включаем интернет по расписанию

Dr.Acid :

Осознал потребность в теме, освещающей очень распространённый вопрос:

есть какие нибудь наработки по отключению интернет через cron на конкретном ip-адресе или mac-адресе? Это реально выполнить?

Или ещё:

возможно ли сделать пакет, в котором будет реализована работа wifi по расписанию(Wireless LAN Scheduling)?

есть ещё один похожий вопрос -  какой командой вообще подключить/отключить интернет-соединение? т.е. не трогать клиентов, а имитировать нажатие кнопки "подключить/отключить" интернет на странице "подключение к интернету" в мониторе состояния. Я так понимаю, будет как минимум 2 варианта - если используется PPTP/L2TP/PPoE и т.п. туннель и когда нужно вообще отключить WAN - скажем, в случае IPoE.

14

Re: Включаем интернет по расписанию

S_Bugaev :

есть ещё один похожий вопрос -  какой командой вообще подключить/отключить интернет-соединение? т.е. не трогать клиентов, а имитировать нажатие кнопки "подключить/отключить" интернет на странице "подключение к интернету" в мониторе состояния. Я так понимаю, будет как минимум 2 варианта - если используется PPTP/L2TP/PPoE и т.п. туннель и когда нужно вообще отключить WAN - скажем, в случае IPoE.

А вариант не с отключением WAN, а с блокированием прохождения пакетов на/с него не устроит?
Если устроит, то можно обойтись одной/несколькими "универсальными" командами iptables (собственно, частный случай приведённого выше фильтра по мак-адресу):

iptables -I FORWARD -o ppp0 -j DROP

Включаем, соответственно:

iptables -D FORWARD -o ppp0 -j DROP

Это для случая PPTP/L2TP/PPoE , для IPoE вместо ppp0 будет eth2.2

В общем, вариантов (задач и их решений) море - каждый может подобрать под себя, а общий принцип, я надеюсь, понятен.

15

Re: Включаем интернет по расписанию

iptables -I FORWARD -i br0 -j DROP

не универсальнее? roll

Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn...
Keenetic Giga & WD Mybook Live user

16

Re: Включаем интернет по расписанию

Dr.Acid :

А вариант не с отключением WAN, а с блокированием прохождения пакетов на/с него не устроит?

нет, не устроит. Предложенный в шапке принцип понятен, тут немного другое. Например, утечка трафика в случае глючной биллинговой системы у провайдера (был один случай в моей практике... по чуть-чуть.. но за время простоя в месяц набегало...), или как у одного заказчика - в определённое время ему финансово выгодно использовать IPoE, в другое - поднять L2TP и скачать что-то через другой тарифный план. Думаю, как раз "на все случаи жизни" нужно и такую команду показать в этой теме. Пробовал через ifconfig up/down - сходу не получилось, ещё мне линуксоиды называли что-то типа pppdial... сам я в линуксе только осваиваюсь,  с детства в ДОСе, начиная с 3.30... чувствую, что-то простое должно быть - но куда копать - не представляю.

17

Re: Включаем интернет по расписанию

S_Bugaev, копайте cli, там есть. Под cli я понимаю бинарник в прошивке.

18

Re: Включаем интернет по расписанию

Zyxmon :

S_Bugaev, копайте cli, там есть. Под cli я понимаю бинарник в прошивке.

так сейчас и сделано. Но это костыль - чтобы сменить режим используется шедулер компьютера, который вызывает телнет с параметром-нужной командой. Хочется сделать это автономно, используя имеющийся в кинетике cron. Неужели в "полноценном линуксе" нету подобной команды?

19

Re: Включаем интернет по расписанию

Понятно. Честно сказать, до конца в свое время этот вопрос так и не "раскурил" - надо будет разобраться, как это на кинетике делается.
Кажись, для ppp нашел:  ppp.sh
Ещё есть pppd.sh
В общем, попробую, разберусь - отпишу.
А для IPoE, пожалуй, действительно ifconfig up/down - должно работать (может просто какойто демон перезапускает интерфейс в случае его "падения" - опять же надо смотреть)

20

Re: Включаем интернет по расписанию

Итак:

ppp.sh disconnect

- отключает от интернета (PPTP/L2TP/PPoE)

ppp.sh connect

- соответственно, подключает
При этом в вебе статус соединения меняется корректно.

21

Re: Включаем интернет по расписанию

Dr.Acid :

Итак:

ppp.sh disconnect

- отключает от интернета (PPTP/L2TP/PPoE)

ppp.sh connect

- соответственно, подключает
При этом в вебе статус соединения меняется корректно.

спасибо! то, что доктор прописал... Acid... :-D

22

Re: Включаем интернет по расписанию

S_Bugaev :

вызывает телнет с параметром-нужной командой.

Зачем так сложно. Посто в ssh набрать "cli <команда>". Команда вроде там общая для всех типов подключения.

23

Re: Включаем интернет по расписанию

На Keenetic Giga в  связи с особенностями моего 3g тарифа (с 8:00 до 0:00 скорость 1х, с 0:00 до 8:00 скорость EVDO Rev.A), мне ежесуточно после 0:00 нужно делать реконнект интернет-соединения!
Помогут ли мне следующие телодвижения:
1)Ставлю cron по этой ссылке http://forum.zyxmon.org/post4262.html#p4262
2) Правлю файл /media/DISK_A1/system/etc/crontabs/root

SHELL=/bin/sh
MOUNT="/media/DISK_A1/system"
PATH=$MOUNT/bin:$MOUNT/sbin:$MOUNT/usr/bin:$MOUNT/usr/sbin:/sbin:/usr/sbin:/bin:/usr/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
0 0 */1 * * reconnect.sh

3)Создаю в папке /media/DISK_A1/system/usr/sbin файл-скрипт:
reconnect.sh с содержимым:

#!/bin/sh

killall -15 pppd

Не хочу накосячить с новым роутером, поэтому советуюсь.

24

Re: Включаем интернет по расписанию

xxxeLiterxxx, сначала нужно поставить систему на usb носитель.
В целом правильно. Ничего с кинетиком не произойдет. Нужно вытащить  usb hdd или сбросить роутер кнопкой reset.
В crontab нужно время прописать - см. пример для wifi по расписанию.

25

Re: Включаем интернет по расписанию

Zyxmon :

xxxeLiterxxx, сначала нужно поставить систему на usb носитель.

Настроил cron на Usb носителе, все работает! Настраивал по ссылке http://forum.zyxmon.org/post3113.html#p3113. Вопросы, если я выполню инструкции отсюда http://forum.zyxmon.org/post4262.html#p4262:
а) придется ли мне наново настраивать cron?
б) нужно ли отключать свап?
в) если сохранить потом конфиг роутера в файл, а потом (после ресета), восстановиться - восстановятся ли мои настройки  cron?

Отредактировано xxxeLiterxxx (2013-06-15 18:25:46)