А можно по подробнее, уж очень интересно, проблема: как прогнать ребенка от компа.;)
если можно со скриптами и куда, и как запустить.
Printable View
AlekseyA, нет проблем :)
Скрипт ON:Скрипт OFF:Code:#!/bin/sh
iptables -F CHILD
iptables -A CHILD -j RETURN
iptables -L CHILD && echo -e "Ребенок ВКлючен\n"
Скрипт OFFFCode:#!/bin/sh
iptables -F CHILD
iptables -A CHILD -j DROP
### Во время действия летнего времени срабатывает на 1 час позже:
iptables -I CHILD 1 -m time --timestart 18:00:00 --timestop 21:00:00 --days Sun,Mon,Tue,Wed,Thu,Fri,Sat -j RETURN
echo
iptables -L CHILD && echo -e "Ребенок ВКлючен по времени\n"
Файлы ON, OFF, OFFF лежат в /opt/bin и, естественно, сделаны исполняемыми.Code:#!/bin/sh
iptables -F CHILD
iptables -A CHILD -j DROP
echo
iptables -L CHILD && echo -e "Ребенок ВЫключен СОВСЕМ\n"
Сценарий: ребенок звонит, говорит, что сделал уроки и просит включить инет.
Папа запускает Putty на телефоне, набирает ON и ребенок включен.
Остальное - аналогично.
P.S. Естественно, для работы скриптов в post-firewall нужно включить тот кусок, что я приводил выше.
Суперское решение, сейчас расплачусь от счастья!
Одно НО - детишкоф у меня двое, у каждого свой комп. Правило одно на обоих - 23:00 - отбой и никаких гвоздей. Куда в вышеприведенном скрипте МАС адрес второго отпрыска воткнуть?
Antoon, это вроде очевидно.
В вышеприведенном куске post-firewall ищите строчку, где указан MAC.
Под ней дописываете такую же, но с MAC-ом второго чада.
Я сделал так:
Создал два файла.
Первый ipoff следующего содержания:
где : 192.168.xx.xx - компьютер доступ к которому следует закрыть.Code:#!/bin/sh
iptables -I FORWARD -s 192.168.xx.xx -j DROP
И второй ipon:
Сделал их исполняемыми.Code:#!/bin/sh
iptables -D FORWARD -s 192.168.xx.xx -j DROP
Поместил их в /opt/local/bin.
В /opt/local распологаются программы поставленные вручную.
И задал задания в крон:
Доступ закрыт с 14 до 18 каждый день , кроме субботы и воскресенья.Code:00 14 * * 1-5 ipoff
00 18 * * 1-5 ipon
Все.
tin, это всё очевидно, но неэффективно.
Детки умные пошли - бывает, что питание роутера передернуть могут. В Вашем случае передергивание питания с 14 до 18 приведет к тому, что интернет появится до 14 следующего дня.
Или флешку могут выдернуть :)
Да и IP вручную поставить - нет проблем.
) bbsc прав, полноценная защита от инсайдеров в принципе невозможна, можно же и вообще напрямую в компьютер включится, так что тут уже скорее вопрос воспитания
Смена IP например решается просто, привязываем MAC к IP, даже если сменить IP, роутер будет все слать на тот MAC что у него приписан, да и скрипт можно пихнуть в автозагрузку и сделать эффективную проверку условий, вот только проблему воспитания это вряд ли решит :)
TReX, tin , не очень понимаю, к чему весь этот флуд насчет воспитания.
Был бы порядок с воспитанием - iptables -m time нам всем бы не понадобился.
А так...
Вариант с iptables -m time исключает доступ к инету без карточки доступа и без разрушающих действий с папиной железкой.
Вариант с crontab позволяет его легко обойти и считать папу лопухом.
P.S. В принципе, вариант с iptables -m time тоже можно обойти.
Но для этого нужно сделать ряд неочевидных действий.
Например, почитать про MAC-адреса, как их менять, вычислить MAC, например, маминого или папиного телефона и получить доступ.
Попутно придется "взять" локального админа у себя на компе.
Так вот, если моя дочка это всё сможет сделать, то я буду только рад и включу ей интернет навсегда.
Antoon, странно, а что именно Вы делали?
И какая версия прошивки роутера?
Antoon, покажите:
1. cat /tmp/local/sbin/post-firewall
2. iptables -L FORWARD
3. iptables -L CHILD
#!/bin/sh
iptables -t nat -nvL POSTROUTING | grep MASQUERADE | awk '{
"ifconfig "$7" | grep Mask" | getline ip;
split(ip,ip,":"); split(ip[2],ip," ");
split($8,src,"!");
if (src[1]=="") {src="! -s "src[2]} else {src="-s "src[1]};
if ($9=="0.0.0.0/0") {dst=""} else {dst="-d "$9};
system("iptables -t nat -A POSTROUTING -o "$7" "src" "dst" -j SNAT --to-source "ip[1]);
system("iptables -t nat -D POSTROUTING -o "$7" "src" "dst" -j MASQUERADE");
}'
iptables -N CHILD
iptables -A CHILD -j DROP
iptables -I FORWARD 1 -m mac --mac-source 00:17:9a:02:a2:a1 -o ppp0 -j CHILD
iptables -I FORWARD 1 -m mac --mac-source 00:13:02:ae:d7:02 -o ppp0 -j CHILD
## Включаем ребенку интернет по времени
iptables -I CHILD 1 -m time --timestart 07:00:00 --timestop 00:00:00 --days Sun,Mon,Tue,Wed,Thu,Fri,Sat -j RETURN
Chain FORWARD (policy ACCEPT)
target prot opt source destination
CHILD all -- anywhere anywhere MAC 00:13:02:AE:D7:02
CHILD all -- anywhere anywhere MAC 00:17:9A:02:A2:A1
DROP tcp -- anywhere anywhere webstr: url *
ACCEPT all -- anywhere anywhere
DROP all -- anywhere anywhere state INVALID
TCPMSS tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN TCPMSS clamp to PMTU
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
DROP all -- anywhere anywhere
DROP all -- anywhere anywhere
SECURITY all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere ctstate DNAT
DROP all -- anywhere anywhere
Chain CHILD (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere TIME from 07:00:00 to 00:00:00 on Sun,Mon,Tue,Wed,Thu,Fri,Sat
DROP all -- anywhere anywhere