Как автоматически ограничить доступ к определенным доменам в рабочее время
Я знаю о приложении SelfControl, но его нужно запускать каждый раз и устанавливать часы блока.
Я хочу, например, запретить загрузку определенных сайтов в рабочее время, но сделать это возможным во время отдыха. Я хочу установить его один раз и забыть. Он должен переключаться автоматически каждый день.
Что может быть проще сделать, учитывая, что я супер новичок.
2 ответа
Для этого мы будем использовать комбинацию Iptables, Bash Scripting и Cron.
Iptables
Команда Iptables для блокировки домена выглядит следующим образом:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
Аналогично, команда разблокировки выглядит так:
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j ACCEPT
Скрипты Bash
Сделайте файл, скажем, block.sh
, в котором вы определяете правила Iptables, чтобы блокировать исходящие соединения, домены, которые вы хотите заблокировать, и обратный сценарий, чтобы разблокировать их.
#! /usr/bin/env bash
iptables -I INPUT -p tcp --dport 80 -m string --string "Host: yourdomain.com" --algo bm -j DROP
# other stuff you want to do when you block a domain
# add blocking commands for each domain here
Бежать chmod +x block.sh
сделать скрипт исполняемым. Теперь вы можете запустить его как /path/to/file/block.sh
,
Таким образом, у вас будет два скрипта вроде:
/path/to/block.sh
/path/to/unblock.sh
Cron
Теперь добавьте запись в crontab для запуска ваших скриптов, например:
Бежать crontab-e
, При первом запуске он попросит вас настроить текстовый редактор. Используйте нано, если вы не уверены.
Добавьте эти строки в конец файла:
0 9 * * * /path/to/block.sh
0 17 * * * /path/to/unblock.sh
Сохраните файл с CTRL+O
, Нажмите ENTER
а потом, CTRL+X
выходить.
Теперь каждый день в 9 часов утра первый скрипт блокирует все домены, а в 5 часов вечера второй скрипт разблокирует их обратно.
Я бы порекомендовал вам посмотреть что-то вроде Dansguardian:
Документация довольно хорошая и есть некоторые ресурсы по ограничениям времени просмотра.