(звон фанфар, барабанная дробь, зычным голосом) С тех незапамятных времен, кода нерадивые админы блокировали нежелательные сайты с помощью файла /etc/hosts (ну вы понимаете о ком я), многое изменилось - наступила эра netfilter-а!!! Представляем вашему вниманию (торжественная пауза) АааааааадКииииллллеееерррр!!!
Простейший bash-скрипт adkiller.sh, позволит сэкономить Ваше время и составит за Вас правила для iptables. В эти правила будут внесены все айпи-адреса неугодных Вам хостов таким образом, что у браузера не будет возможности ни отправки запроса, ни получения данных к какому-либо нежелательному сайту. Все, что от Вас потребуется - составить список хостов, с которыми Вы не желаете иметь дела.
Итак, пишем в файле blacklist следующие строки:
ya.ru
vk.com
google.ru
google.com
Далее, запускаем убийцу рекламы:
sudo adkiller.sh /path_to_blacklist
И плачем, ведь мы только что заблокировали себе ВКонтакт!!!
А вот, собственно и сам скрипт:
#!/bin/bash
# Подготовка iptables
# Сбрасываем текущие правила блокировки, если есть
iptables -F ADKILLER
iptables -X ADKILLER
# Создаем цепь для блокируемых адресов
iptables -N ADKILLER
# Добавляем правила перенаправления
iptables -I INPUT 1 -j ADKILLER
iptables -I OUTPUT 1 -j ADKILLER
# Получаем имя файла с хостами для блокирования
ADS="$1"
# Если указан файл
if [ -n "$ADS" ]
then
if [ -f $1 ]
then
# Для каждой строки в файле
for HOST in `cat "$ADS"`;
do
# Узнаем IP-адреса хоста (их может быть больше одного)
for HOST_ADDR in `host "$HOST" | awk '{print $4}' | sed 's/[a-zA-Z\:]//g'`
do
# Добавляем в цепочку ADKILLER IP-адреса хостов
iptables -A ADKILLER -d "$HOST_ADDR" -j REJECT
iptables -A ADKILLER -s "$HOST_ADDR" -j REJECT
done
done
else
echo "Файл \"$1\" не найден"
fi
else
echo "Использование: \"$0 имя_файла\""
echo "Где \"имя_файла\" - список блокируемых хостов"
fi
# Добавляем возврат в предыдущую цепочку
iptables -A ADKILLER -j RETURN
exit 0
UPD: За сохранность сумок администрация ответственности не несет