У вас есть старенький (или не очень) компьютер с двумя сетевыми картами? Вам надоела реклама и лишние телодвижения для обхода блокировок? Вы не хотите с этим мириться? Тогда добро пожаловать под кат.
Цель
Настроить интернет шлюз таким образом, чтобы клиенты внутри локальной сети без дополнительных настроек работали с интернетом без ограничений. К заблокированным сайтам доступ будет осуществляться через тор, к остальным через обычное интернет соединение. К .onion ресурсам доступ из любого браузера как к обычным сайтам. В качестве бонуса, настроим блокировку рекламных доменов и доступ к условно заблокированным сайтам через тор (имеются в виду сайты, которые ограничивают функциональность для пользователей из РФ). Мой интернет провайдер
Идеи и способы реализации взял отсюда и отсюда. Авторам этих статей большое спасибо.
Итак поехали
Предполагается, что на начальном этапе у вас уже есть установленная ОС (в моем случае Ubuntu server 16.04) на компьютере с двумя сетевыми интерфейсами. Один из которых (у меня это ppp0) смотрит в сторону провайдера, а второй (у меня это enp7s0) в локалку. Внутренний IP шлюза 192.168.1.2. Локальная сеть 192.168.1.0/24.
Как подойти к этому этапу в данной статье не рассматривается, так как информации в сети более чем достаточно. Скажу только, что pppoe подключение к провайдеру удобно настраивать утилитой pppoeconf.
Подготовительный этап
Если вы, как и я, используете н{е|оу}тбук, то возможно вам захочется, чтобы он не засыпал при закрытии крышки.
sudo nano /etc/systemd/logind.conf
HandleLidSwitch=ignore
Разрешаем форвардинг в ядре. Я за одно отключил IPv6.
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
# IPv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
Применим изменения без перезагрузки.
sudo sysctl -p
Настройка DHCP
Мы хотим, чтобы клиенты настраивались автоматически, поэтому без DHCP сервера не обойтись.
$ sudo apt install isc-dhcp-server
$ sudo nano /etc/dhcp/dhcpd.conf
Приводим файл примерно к такому виду.
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.2;
option domain-name-servers 192.168.1.2, 8.8.8.8;
option broadcast-address 192.168.1.255;
}
range 192.168.1.100 192.168.1.200; — диапазон адресов, который будет выдаваться сервером,
option routers 192.168.1.2; — адрес шлюза
option domain-name-servers 192.168.1.2, 8.8.8.8; — адреса DN серверов
option broadcast-address 192.168.1.255; — широковещательный адрес.
Перезапустим сервер
sudo /etc/init.d/isc-dhcp-server restart
Настройка TOR
Устанавливаем и открываем настройки.
$ sudo apt install tor
$ sudo nano /etc/tor/torrc
Добавляем строки
#Определяем подсеть в которую тор будет разрешать имена onion
#такой диапазон достаточно жирный. Можно смело сокращать.
VirtualAddrNetworkIPv4 10.0.0.0/8
#Включаем DNS от луковицы
AutomapHostsOnResolve 1
#Определяем порты прозрачного прокси и DNS
TransPort 0.0.0.0:9040
DNSPort 0.0.0.0:5353
#Не пользуемся выходными узлами из этих стран
ExcludeExitNodes {RU}, {UA}, {BY}
Настройка DNS
Если вам не нужна блокировка рекламы, то данный пункт можно не выполнять. Если вы хотите просто пользоваться DNS от тора, добавьте в файл /etc/tor/torrc строку DNSPort 0.0.0.0:53 и всё.
Но я буду резать рекламу, а значит устанавливаем и открываем настройки
$ sudo apt install bind9
$ sudo nano /etc/bind/named.conf.options
Приводим файл к следующему виду
options {
directory "/var/cache/bind";
forwarders {
127.0.0.1 port 5353;
};
listen-on {
192.168.1.2;
127.0.0.1;
};
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { none; };
};
Если ваш провайдер не химичит с DNS запросами, можете направить трафик на другие днс серверы. Например на сервера гугла:
forwarders {
8.8.8.8;
8.8.4.4;
};
Теоретически должно работать по шустрее, чем через тор.
К дальнейшей настройке DNS вернемся чуть позже. Пока этого достаточно. А сейчас перезапустим службу.
sudo /etc/init.d/bind9 restart
Настройка iptables
Вся магия будет твориться именно здесь.
- Формируем список IP адресов на которые мы хотим ходить через тор.
- Заворачиваем запросы к этим адресам на прозрачный прокси тора.
- Заворачиваем DNS запросы к ресурсам .onion на DNS тора
- Тор при резольвинге имен из зоны .onion возвращает IP адрес из подсети 10.0.0.0/8 (которую мы указали при настройке ТОР). Разумеется, эта зона не маршрутизируется в интернете и нам нужно завернуть обращения на эту подсеть на прозрачный прокси тора.
forwarders {
127.0.0.1 port 5353;
};
Не приводит к желаемому результату, так же как выделение отдельной зоны ".onion" с forwarders на 127.0.0.1 port 5353.
Если кто-нибудь знает почему так происходит и как это исправить, напишите в комментариях.
Полагаю, что iptables уже установлен. Устанавливаем ipset. С помощью этой утилиты мы сможем управлять списком заблокированных адресов и заворачивать пакеты в прозрачный прокси тора.
sudo apt install ipset
Далее последовательно из под рута выполняем команды по настройке iptables. Разумеется вам нужно заменить имена интерфейсов и адреса на свои. Я поместил эти команды в /etc/rc.local перед exit 0 и они выполняются каждый раз после загрузки.
#Создаем ipset для списка блокировок
ipset -exist create blacklist hash:ip
#Редирект запросов DNS на TOR для доменов onion. Средствами bind9 такой редирект настроить не удалось
iptables -t nat -A PREROUTING -p udp --dport 53 -m string --hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-port 5353
iptables -t nat -A OUTPUT -p udp --dport 53 -m string --hex-string "|056f6e696f6e00|" --algo bm -j REDIRECT --to-port 5353
#Редирект на ТОР IP адресов из списка блокировок
iptables -t nat -A PREROUTING -p tcp -m set --match-set blacklist dst -j REDIRECT --to-port 9040
iptables -t nat -A OUTPUT -p tcp -m set --match-set blacklist dst -j REDIRECT --to-port 9040
#Редирект на тор для ресурсов разрезольвенных тором в локалку 10.0.0.0/8
#обычно это .onion
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.0/8 -j REDIRECT --to-port 9040
iptables -t nat -A OUTPUT -p tcp -d 10.0.0.0/8 -j REDIRECT --to-port 9040
###########################################
#Все что ниже относится к настройке самого шлюза, а не к обходу
#блокировок
###########################################
#Включаем NAT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Рзрешаем пинги
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Отбрасываем неопознанные пакеты
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
# Отбрасываем нулевые пакеты
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Закрываемся от syn-flood атак
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
#Разрешаем входящие из локалки и локальной петли, и все уже установленные соединения
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i enp7s0 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Остальные входящие запрещаем
iptables -P INPUT DROP
#Разрешаем форвардинг изнутри локалки.
iptables -A FORWARD -i enp7s0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#Остальной форвардинг запрещаем
iptables -P FORWARD DROP
После перезагрузки мы должны получить шлюз, который:
- Выдает IP адреса и настройки сети клиентам.
- Раздает интернет.
- Резольвит имена через тор DNS.
- Резольвит имена .onion и позволяет посещать эти ресурсы через обычный браузер.
- Закрывает нас от входящих подключений.
Обхода блокировок пока нет, так как несмотря на то, что мы создали blacklist и настроили маршрутизацию, сам blacklist пока пустой. Настало время это исправить.
Заполняем blacklist
Создаем каталог в котором будет лежать скрипт.
# mkdir -p /var/local/blacklist
Создаем скрипт
# nano /var/local/blacklist/blacklist-update.sh
#! /bin/bash
#Переходим в каталог скрипта
cd $(dirname $0)
#Скачиваем с github репозиторий со списком заблокированных ресурсов
git pull -q || git clone https://github.com/zapret-info/z-i.git .
#Обрабатываем dump.csv так чтобы получился файл blacklist.txt с IP адресами заблокированных ресурсов
cat dump.csv | cut -f1 -d\; | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sort | uniq > blacklist.txt
#Обрабатываем файл my-blacklist c именами доменов, которые не под блокировкой
#но на которые мы хотим ходить через тор. Дополняем blacklist.txt
dig +short -f my-blacklist >> blacklist.txt
#Очищаем ipset
ipset flush blacklist
#Запиcываем новые данные
cat blacklist.txt | xargs -n1 ipset add blacklist
Делаем скрипт исполняемым
# chmod +x /var/local/blacklist/blacklist-update.sh
создаем файл my-blacklist, который в дальнейшем будем наполнять вручную теми ресурсами, на которые хотим ходить через тор.
# echo lostfilm.tv > /var/local/blacklist/my-blacklist
Выполняем скрипт
# /var/local/blacklist/blacklist-update.sh
Скрипт работает долго,
#Ждем минуту чтобы тор полностью загрузился, подключился,
#заработал тор DNS
sleep 60
#Заполняем список запрещенных сайтов. Длительная операция.
/var/local/blacklist/blacklist-update.sh
Настраиваем фильтр рекламы
- Устанавливаем и запускаем микро HTTP сервер, который слушает 80 порт и на любой запрос возвращает картинку png с одним прозрачным пикселем.
- Получаем список рекламных доменов.
- Настраиваем bind как авторитативный сервер для них.
- Заворачиваем все запросы на рекламные домены на наш HTTP сервер с чудесной картинкой.
Приступим. Займемся севером. Создаем файл
# nano /usr/local/bin/pixelserv
#! /usr/bin/perl -Tw
use IO::Socket::INET;
$crlf="\015\012";
$pixel=pack("C*",qw(71 73 70 56 57 97 1 0 1 0 128 0 0 255 255 255 0 0 0 33 249 4 1 0 0 0 0 44 0 0 0 0 1 0 1 0 0 2 2 68 1 0 59));
$sock = new IO::Socket::INET ( LocalHost => '0.0.0.0',
LocalPort => '80',
Proto => 'tcp',
Listen => 30,
Reuse => 1);
if (!defined($sock)) {
print "error : cannot bind : $! exit\n";
exit(1);
}
while ($new_sock = $sock->accept()) {
while (<$new_sock>) {
chop;chop;
# print "$_\n";
if ($_ eq '') { last; }
}
print $new_sock "HTTP/1.1 200 OK$crlf";
print $new_sock "Content-type: image/gif$crlf";
print $new_sock "Accept-ranges: bytes$crlf";
print $new_sock "Content-length: 43$crlf$crlf";
print $new_sock $pixel;
shutdown($new_sock,2);
undef($new_sock);
}
close($sock);
exit(0);
делаем его исполняемым
# chmod +x /usr/local/bin/pixelserv
Создаем файл инициализации сервера
# nano /etc/init.d/pixelserv
#! /bin/sh
# /etc/init.d/pixelserv
#
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting pixelserv "
/usr/local/bin/pixelserv &
;;
stop)
echo "Stopping script pixelserv"
killall pixelserv
;;
*)
echo "Usage: /etc/init.d/pixelserv {start|stop}"
exit 1
;;
esac
exit 0
Делаем его исполняемым, регистрируем сервис, запускаем http сервер
# chmod +x /etc/init.d/pixelserv
# update-rc.d pixelserv defaults
# /etc/init.d/pixelserv start
Теперь создаем скрипт обновления рекламных доменов
# nano var/local/blacklist/ad-update.sh
с содержимым
#! /bin/bash
cd /etc/bind/
curl "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext" | sed 's/null.zone.file/\/etc\/bind\/db.adzone/g' > named.ad.conf
rndc reload
Делаем его исполняемым
# chmod +x /var/local/blacklist/ad-update.sh
и выполняем
# /var/local/blacklist/ad-update.sh
Создаем файл зоны
# nano /etc/bind/db.adzone
со следующим содержимымсервис
$TTL 86400 ; one day
@ IN SOA ads.example.com. hostmaster.example.com. (
2014090102
28800
7200
864000
86400 )
NS my.dns.server.org
A 192.168.1.2
@ IN A 192.168.1.2
* IN A 192.168.1.2
Добавляем в файл
# nano /etc/bind/named.conf
строку
include "/etc/bind/named.ad.conf";
Применяем изменения
rndc reload
Настраиваем обновление списка доменов при загрузке. Для этого открываем файл /etc/rc.local и добавляем после sleep 60
/var/local/blacklist/ad-update.sh
Последние штрихи
Для периодического обновления списков, создадим файл
# nano /etc/cron.daily/blacklist-update
Со следующим содержимым
#!/bin/bash
#Загружаем свежий список рекламных доменов для фильтрации
/var/local/blacklist/ad-update.sh
#Заполняем список запрещенных сайтов. Длительная операция.
/var/local/blacklist/blacklist-update.sh
Делаем его исполняемым
# chmod +x /etc/cron.daily/blacklist-update
.Замечание для пользователей десктопных версий Ubuntu
Несмотря на то, что целью было создать шлюз, который не требует настроек клиентов, в моем случае получилось не совсем так. В качестве рабочей операционной системы я использую десктопную Ubuntu 16.04. Для настройки сети в ней используется утилита NetworkManager, которая по умолчанию настроена таким образом, что адрес DN сервера берется не с DHCP сервера, а устанавливается как 127.0.1.1:53. На этом порту висит dnsmasq и только по ему известным правилам резольвит имена. В обычной жизни это никак не мешает, а в нашем случае делает совершенно неработоспособной зону .onion
Чтобы это исправить нужно в файле /etc/NetworkManager/NetworkManager.conf закоментировать строку
dns=dnsmasq
вот так
#dns=dnsmasq
После перезагрузки все работает.
Заключение лишь бы не под стражу
Клиенты на андроид работают нормально без дополнительных настроек.
Windows не проверял, так как не использую, но думаю, проблем возникнуть не должно.
Ограничения для firefox и iOs описаны здесь
Прошу прощения за сумбурное изложение. Дополнения, исправления, замечания приветствуются.
Спасибо за внимание.
Настройки даны как справочная информация. Из коробки они вам не подойдут с вероятностью близкой к 100%. Требуется подгонка под себя.
Комментарии (90)
stork_teadfort
02.09.2017 17:57+1А зачем все зоны резолвить в торе, есл от перехватывающих DNS-запросы провайдеров помогает dnscrypt? Думаю, побыстрее будет.
JohnnySmart
02.09.2017 17:57Очень интересно это будет применить на Raspberry Pi 3, (ethernet — USB ethernet), 100 мегабит должна потянуть…
omgiafs
02.09.2017 19:11+7Зачем вам роутер на плате с одной сетевухой? Троллейбус_буханка.jpg
Можно гораздо проще (но не дешевле). Купить современный роутер с 4 Gigabit LAN портами и двухдиапазонным WiFi, поставить на него OpenWRT (LEDE, по-моему, сыроват, это как Дебиан и Убунта) и все те пакеты, которые перечислил автор поста. У меня на нём крутится веб-сервер (статика, для дома для семьи), BIND9 (несколько доменов), сервер времени, adblock, dnscrypt-proxy, igmpproxy, miniupnpd, OpenVPN-server, QoS.
При этом:
Load average: 0.15 0.26 0.23;
Mem: 77576K used, 48096K free, 1820K shrd, 5004K buff, 16756K cached
Т.е. железяка не напрягается, и это хорошо. Потому что до этого у меня был TP-Link TL-WR1043ND, и он это всё не вытягивал — не хватало оперативной памяти, всё дико свопало и тормозило. Хедшот он получал от BIND9.
Роутер этот стоит денег, но я уже с дешевыми железяками себе нервы испортил на 2 жизни вперёд. Во всей полноте осознал смысл народной мудрости «я не настолько богат, чтобы покупать дешевые вещи».MattLe
02.09.2017 20:40+3Вам бы статью этому посветить, как минимум интересно, и я с вами полностью согласен что подобные вещи надо делать на роутерах.
4aba
02.09.2017 23:12+1Я похожее сделал на TP-Link TL-WR1043ND v1 openwrt 12.09, отличие в блокировке рекламы, через списки adfree, и доступ на заблокированные сайты через vpn, благо у нас блокируются подсети
4aba
02.09.2017 23:19Так же доступ к некоторым ресурсам с мобильного, как например для почтового клиента чтоб получать мылорушную почту настроил imap myrouter.ddns.net:999 и для флибусты myrouter.ddns.net:777. Не понимаю людей которые для роутинга используют компы или полностью рабочие ноуты. Хотя хотел поставить ноут вместо 1043, старый без экрана уже, но на нем можно хоть файлохранилище с dnla поднять, и не так чтоб жалко, красная цена на продажу 20-25$, роутеры дороже...
DistortNeo
02.09.2017 23:19> Зачем вам роутер на плате с одной сетевухой?
А какая разница, какое количество портов? IP-трафику без разницы, гоняют ли его через один физический интерфейс или через разные, если ничего не упирается в пропускную способность интерфейса.
Дело тут, скорее, в выделении целой железки для выполнения отдельных задач. Если в домашней сети уже есть сервер, то можно сервисы настроить и на нём. Если же домашнего сервера нет, то незачем его заводить только ради этих сервисов, когда всё можно настроить и на роутере.
Dreyk
02.09.2017 23:20оо крутяк, я все думал, на что бы с 1043 спрыгнуть, спасибо
dmitry_dvm
03.09.2017 22:19+1Ubiquity EdgeRouterX. Вайфая нет, но железка рвёт в лоскуты весь SOHO. Аппаратное управление пакетами, на 800мбитах загрузка процессора 0%. Купил и не нарадуюсь. Скоро куплю к ней точку доступа той же конторы и заживу. Сейчас в роли точки старый тплинк 743 и это печаль.
Firz
03.09.2017 22:53Поставьте на нее прошивку Падавана и тогда вообще идеальной станет (p.s. если что, обратно на родной загрузчик(и соответственно прошивку) откатиться уже не получится)
dmitry_dvm
04.09.2017 12:37А зачем? Там и на родной всё хорошо. Практически полноценный линукс. Обновления выходят регулярно, причем при участии комьюнити.
Firz
04.09.2017 12:50Не скажу как сейчас обстоят дела(не осталось ни одного устройства с родной прошивкой), но у них очень долгое время были недоработки с аппаратным ускорением(точно были у ERX(MT7621)) и в целом прошивка была очень сырой.
VitalKoshalew
03.09.2017 00:28+1Как часто вы его перепрошиваете? Обновления безопасности выходят чуть ли не каждый день. На x86 можно без проблем довериться UnattendedUpgrades. Как вы на OpenWRT эту проблему решаете?
omgiafs
03.09.2017 07:20Прошиваю по мере необходимости, а она бывает редко.
Сейчас набор софта устоялся, поэтому в следующий раз прошиваться буду после выхода обновления стабильной версии OpenWRT, ну или после обнаружения критического бага.
Обновления безопасности на роутере, ИМХО, это не то, из-за чего его надо шить каждый день. Ломать меня никто никогда не пытался, это я знаю благодаря скрипту, который даже неудачные (не говоря уж об удачных) попытки логина мне на мыло шлёт. За 5+ лет не было НИ ОДНОЙ ПОПЫТКИ взлома. Просто ssh на нестандартном порту висит. Если бы были попытки, ну хоть одна, я бы еще port-knocking прикрутил. Веб-сервер мне не сломают, потому что ломать там нечего — это тупо статика. OpenVPN поднимаю по мере надобности доступа в домашнюю сеть извне, а это бывает крайне редко.
Так что это не проблема, поверьте.VitalKoshalew
03.09.2017 07:59+3Стоит об этом упоминать, рекомендуя решения на OpenWRT. Вы сделали свой сознательный выбор: отказаться от обновлений и стать «Неуловимым Джо», а кто-то прочитает вашу рекомендацию и просто решит сэкономить, не отдавая себе отчёт во всех последствиях, а потом уже поздно будет — железо-то куплено.
shushu
03.09.2017 11:01Я себе взял Asus eee mini pc (на атоме) как домашний сервачок / (маленький NAS)
Asus eee mini pcomgiafs
03.09.2017 16:19-1А вы порт ssh выберите из диапазона 50000..65535
Lennonenko
05.09.2017 14:15+1не помогает, рано или поздно насканивают и начинают долбить
alexkbs
06.09.2017 06:14+1И правильно. Не пускайте с паролем, пускайте только с ключами. Пусть долбятся сколько хотят. Кстати, смотрю по логам что после двух-трех попыток пробиться большинство отваливается. Протокол ведь явно говорит что пароли не принимаются!
dikkini
03.09.2017 01:28Нет роутера в продаже. Подскажите еще модель, чтобы все это реализовать и осталось мощи в запасе?
omgiafs
03.09.2017 08:14Затрудняюсь ответить. На момент покупки я прошерстил форумы, обзоры и не прогадал — эта железяка «реально тащит».
На сегодняшний день желательно наличие следующих характеристик:
- Возможность установки альтернативной прошивки OpenWRT/LEDE/etc.
Список устройств, официально поддерживающих OpenWRT.
Необходимо знать, что некоторые вендоры (и TP-Link с недавних пор) блокируют загрузчик или проверяют подпись файла прошивки, что затрудняет установку альтернативной прошивки. На Archer C7 эту проблему обошли. На других — надо смотреть индивидуально. - Двухдиапазонный WiFi n/ac
- Гигабитные LAN-порты. Если инет от провайдера гигабитный, то и WAN-порт тоже должен быть гигабитным
- RAM >=128 МБ
- ROM (внутр. память) не менее 16 МБ
- Процессор чем больше МГЦ, тем лучше. Меньше 500 лучше не брать, если собираетесь делать что-то сверх возможностей заводской прошивки. Есть двухъядерные, что еще лучше
- Наличие USB. Может понадобиться для USB-модема, флешки, принтера, да хоть для чего :) Есть практически на всех моделях дороже 2к рублей
- Это уже для замороченных. Съемные антенны (желательно на оба диапазона частот). Вместо штатных можно будет установить направленные антенны, тем самым «добить» до недосягаемых ранее мест. Хотя один роутер (Archer C7) 4-комнатную квартиру с ж/б стенами накрывает на 70% номинальной мощности сигнала на штатных антеннах
- Возможность установки альтернативной прошивки OpenWRT/LEDE/etc.
Konachan700
03.09.2017 12:12+1Вот такая штука существует. Есть варианты с wifi, есть дешевле… Не нужен роутер армовый, он слишком слабый и у него проблемы с обновлением.
grumbler66rus
06.09.2017 00:50Mikrotik RouterBoard RB951Ui-2HnD и другие. Смотрите в разделе совместимых устройств на openwrt.org маршрутизаторы с большим объёмом ОЗУ и флешпамятью 8 и больше мегабайт.
qwertyk06
03.09.2017 07:11+1Напишите пожалуйста статью аналогичную авторской. Как раз передо мной вскоре встанет эта проблема с удовольствием изучу и ваш опыт.
ne_kotin
03.09.2017 07:20+1>Зачем вам роутер на плате с одной сетевухой?
Раздавать вайфай, а трафик с вайфая заворачивать в Tor через кабельный интернет, например? Я себе именно такой anonybox и сделал.
При том, что под RPi пакеты свежего тора есть, а под OpenWRT — не факт, придется ставить кросскомпилятор, маяться со сборкой, инжектить пакет в прошивку.
Sykoku
04.09.2017 10:51Прошу прощения за 5 копеек, но изначально вопрос стоял в том, что есть старый и бесполезный по современным меркам ноут/планшет/нетбук (например, треснувший экран или 1-2 ядра с частотой 0.9-1.2 ГГц и SSD на 20 ГБ ) и его можно использовать для дела.
Сам так делал еще 5-7 лет назад. Ставится либо готовое решение (например, Kerio Control) и забывается про него (антивирусные базы само обновляет, как и черные списки), либо самодельное (но тогда все тоже самое ручками).
Ваш вариант — мощная коробка и самодельная настройка — имеют место. Но если вопрос не в деньгах, как Вы выразились, то покупаем готовую коробку — хоть от McAfee — и пользуемся. Ни перепрошивок, ни та полдня на поиск форума с решением похожей проблемы. Так что определитесь: или сам все настраиваешь, или покупаешь готовое.
musuk
03.09.2017 10:14+2У Raspberry Pi очень большие проблемы с производительностью портов. Там всё на USB2.0 висит. Tor/VPN-box можно сделать, но ютубчики смотреть/торренты качать через него довольно уныло.
CHNB128
02.09.2017 19:37+2Автор, можно вас попрсить выложить конфиги или установочный скрипт на вашш репозиторий в гите?
Я понимаю, что это типа вариант для ленивых, мол все в статье описанно, однако сейчас такое время, что писать что-то самому слишьком долго и затратно, гораздо продуктивней редактировать готовый код под свои нужды.
Спасибо.UrsusMaritimus Автор
02.09.2017 19:47+1В принципе можно, но установочный скрипт я не писал (и вряд ли стану), а настройки все равно нужно просматривать и приводить к своему окружению. Возьмем хоть те же настройки iptables. Я настроил так, а кто-нибудь посмотрит, и пальцем у виска покрутит. Тут все индивидуально.
Если будут плюсовать ваш комент, выложу, хоть и не считаю это целесообразным.
konchok
02.09.2017 20:15+2Слать весь DNS через TOR это мощный изврат, который увеличит время отклика в разы. Куда более интересным было бы решение отсеивать DNS запросы по regexp (через iptables или как ещё) и перенаправлять их куда надо.
UrsusMaritimus Автор
02.09.2017 20:23Не совсем понял идею. Можно поподробней?
И не все так страшно. Bind кеширует запросы. Задержка только при первом обращении. Да и задержка не такая уж большая. По крайней мере она никак не ощущается.konchok
02.09.2017 20:26+1У большинства сайтов TTL стоит 5-10 минут, с такой же периодичностью будет протухать и кеш в bind.
omgiafs
02.09.2017 20:28+1DNScrypt решает все вопросы с резолвингом адресов, включая заблокированные сайты.
Не надо плодить сущности.UrsusMaritimus Автор
02.09.2017 20:39Ну строго говоря, для этой схемы именно DNScrypt будет дополнительной сущностью. Так как без него схема работает. А если его добавить, то исключить все равно ничего не получится.
Но идея c dnscrypt хорошая.
crower
05.09.2017 11:57Можно для избранных доменов использовать тот-же механизм, что предлагается в статье для отсеивания рекламы, только прописать другой тип зоны. Например:
zone "protected.domain" in { type forward; forward only; forwarders { 127.0.0.1 port 8053; // dnscrypt-proxy 127.0.0.1 port 9053; // tor } }
konchok
05.09.2017 12:35Ну то есть можно сделать так? Если да то это отличное решение.
zone "onion" in {
type forward;
forward only;
forwarders {
127.0.0.1 port 9053; // tor
}
}UrsusMaritimus Автор
05.09.2017 13:20Так не работает. ХЗ почему.
crower
06.09.2017 19:24Попробовал — и правда почему-то не работает.
Вообще тип forward работает. У меня несколько таких зон, но только второго уровня.
Записи для зоны первого уровня тоже работают. У меня их тоже несколько, но только типа master и slave.
А тут… Какие-нибудь ограничения? В дока пока не нашёл ничего, чтобы это объясняло.
F0iL
02.09.2017 22:20+5#Не пользуемся выходными узлами из этих стран ExcludeExitNodes {RU}, {UA}, {BY}
Стоит добавить еще {KZ} и {UZ}
AllexIn
02.09.2017 22:37У меня такой необычный идей есть…
А что, если собрать вирус, который будет заражать компы и делать две простые вещи:
1) Устанавливать расширения для обхода блокировок
2) Создать и запустить Tor Exit ноду.
Таким образом, большая часть наслеения
1) Будет иметь доступ везде, как будто блокировок не было
2) Сажать за Тор ноду и за обход будет не вариантом, т.к. очевидно что все население попадет под действие.
Волнует этичность сего, безусловно. Сложность реализации не волнует, т.к. вполне очевидна уязвимость ПК большинства технически не граммотных пользователей.slovak
02.09.2017 23:21+3Грег Иган Моральный вирусолог (The Moral Virologist) Рассказ, 1990 год
Религиозный фанатик, возомнив себя орудием в руках Господа, создает и распространяет по планете вирус, который убивает гомосексуалистов и прелюбодеев. Однако всё ли он учел в своих расчетах?
4aba
02.09.2017 23:25+1Надо еще чтоб вирусяка определяла лимитность по мегабайтам интернета и скорость ноды в % от скорости нета, динамический, также чтоб чтоб заблокированные в этой стране сайты автоматом шли на следующую ноду
Ivan_83
03.09.2017 03:101. Выкидываем нахрен продукты ISC: DHCP и DNS Bind — dnsmasq рулит когда по быстрому.
Но лучше всего ставить сразу unbound для DNS рекурсера и кеша.
Ну и да, они оба могут и умеют отдельные форвадеры для зон, как и бинд.
2. Очередной идиотский совет использовать чьи то (а особенно гугля, яндекса, опенднс) днс сервера.
Вы же сливаете все свои похождения гуглю. Идиотизм полнейший.
3. Идея с прозрачным пикселем порочна.
а) есть nginx, у него есть такая картинка потому нахер перл.
б) я просто поставил чтобы unbound адреса не резолвил, потому что есть всякие хттпС и они будут парить моск.
При этом у меня на сайтах просто чисто, никакой рекламы, никаких пустых мест с красными крестами что типа не загрузилась картинка.
Но список заблоченных рекламных и далеко не только рекламных хреней я веду сам. После бана первых 50-100 мусорок что то новое редко попадается — те иногда туда что то добавлять не напрягает.
omgiafs
Ламер!
Покупается управляемый свич с вланами и внезапно у сервера с одной сетевухой оказывается 7/15/23/27/47 интерфейсов.
А там хочешь группируй их, хочешь они будут у тебя как отдельные изолированные друг от друга — дело твоё.
LEDE не может быть сырее опенврт, они форкнулись из него потому что опен окаменел и они там нихера не брали патчи а только катали вату и думали как сострич бабла с вендоров.
Ну и ИМХО, если есть возможность (время, деньги, мозги) то лучше не парить мозги с дурацкими китайскими роутерами и всякими хренотиками, а брать нормальный управляемый свич (начиная с вебсмартов), и какую то х86 железку и сетапить всё на них.
Можно готовыми дистрами типа пфсенсе и фринаса, а можно и фрю/линух накатить и дальше ручками.
Тут тебе и памяти и проца на выбор, и возможность апгрейда и лёгкая смена железа (переткнул винт, чуток настройки покрутил и через 10 минут взлетел).
Ну и естессно по деньгам оно дешевле выходит когда требования есть, потому что несчастный роутер с гигом памяти стоит уже как приличный свич или х86, притом роутер с гигом — всё равно тормозной кусок говна, а память для х86 оч дешёвая, как и производительность проца.
Разумеется на х86 всё обновляется много проще, чем на всяких недороутерах.
AllexIn
Тут всем плевать откуда у тебя оружие/вещества/тор, даже если их подбросили при задержании то ты всё равно попал.omgiafs
03.09.2017 07:38+1Это называется профдеформация. В некоторой степени она и у меня присутствует, но явно не в такой запущенной, как у вас.
По VLAN'ам. Если я ничего не путаю, то на RPi ставится linux, а в нём самом VLAN-ами обложиться — как два байта об компилятор. И создавайте сколько влезет VLAN-ов на сетевухе, настраивайте роутинг и прочие ништяки.
В этом только одно «но»: это надо только гикам, хипстерам и прочим сущностям, описываемым новомодными словами из соответствующего им множества. А простым людям это не надо. Им надо «включил, немного погуглил, работает годами, при этом имея удовлетворительный уровень безопасности от всяких васянов».
И если бы вы знали, как тяжело простому человеку разбираться в этих ваших виртуальных приблудах, когда ему понятно в основном только то, что он может увидеть.
В роутере он видит 5 дырок, одна — провайдеру, 4 — его. Если мало 4 дырки, то купит еще приблуду с 16 дырками. Всё.
Не забывайте, что вокруг вас простые люди, которые не угробили полжизни, чтобы разобраться во всём этом околокомпьютерном геморрое. Это не значит, что они тупые. Они в чем-то другом лучше вас. И потребности у всех разные.
Вам — построить дома высокоэффективную инфраструктуру с прозрачным проксированием в различные типы сетей с автоматическим бэкапом каждой железяки друг на друга и Амазон впридачу, покрыв это всё GPG, а им — посмотреть Ютубу на телевизоре и скачать на ПК/планшете книжку с Флибусты.engine9
03.09.2017 09:57+1Опухание ЧСВ же. И ведь информация полезная, ценная, но подана как «вы все дебилы тупоголовые, сейчас покажу как надо».
Ivan_83
05.09.2017 00:09Если делать по нормальному и хата больше однушки или работаешь дома у нужно всякие стенды собирать то управляемый коммутатор просто мастхэв.
Рулить вланами в вебсмарте можно научить даже макаку, ничего сложного там нет.
Домохозяйкам тут не место, к слову о проф деформации.
Для них есть зухел. Ну можно и асус, тплинк.
Либо муж на час с ночёвкой/мастер по вызову, который разберётся и сделает как надо.
Если у вас есть вопросы или вам чото нифига не понятно — спрашивайте, не стесняйтесь, я опускаться на уровень домохозяек и расжовывать в бытовых терминах терминах не стану, пока не попросят, как бы не в курянике.
Ну и последнее.
Чел спросил про рпи.
рпи может быть роутером, но ему нужен свич с вланами.
Свич с вланами — это годная инвестиция, в отличии от очередного недороутера которые вы тут советуете. Управляемый свич он и через 15 лет будет управляемым свичём, вполне годным. Роутеры же даже 5 летней давности почти все или сдохли или унылое говно, а уж про те которым 10 лет, типа DI-604 лучше вообще не воспоминать.
engine9
Это всё пройденный этап, не нравится — шагайте по граблям дальше, собственный опыт запоминается лучше :)
Alexeyslav
Стереотипы.
У меня есть х86 который работает от БП на 24 Ватта. Если дополнительные 10 Ватт для тебя так много, то наверное нужно что то менять.
Оно эти самые 24 Ватта не жрёт постоянно, это только если там чем то занять оба ядра да ещё и встроенную видюху нагрузить по полной.
А если задрачиватся то там можно ещё частоту опустить и оно совсем близко припрёт недороутеры с крутыми арм. Только вот ядра у него сильнее, кеша больше, памяти до 8Гб влёгкую, 6 сата, PCI, PCI-E несколько, куча юзби, ком, и видюха встройка.
Это AMD Zacate E-350, мать от асуса.
Сейчас есть на АМ1, там где то в 5-7к руб можно уложится без корпуса, но с PICO PSU.
На выбор камни 2 и 4 ядра, правда всего 2 сата. Но это всё равно на два больше чем в недороутерах за такие же и более деньги.
Ну и да, меня эти несчастные 10-20 Ватт не парят, у меня десктоп сутками не выключается ради моего удобства, и ещё два таких у домашних. И домашний сервер с пачкой дисков и свич… ужасайся %)
Пока я в городе на проводном электричестве — вообще не вижу смысла думать о таких мелочах.
Мы больше денег теряем на кучи других мелочей, начиная от хавки и развлечений заканчивая непонятными налогами и поборами.
Я на лекарства от расстройства больше потрачу чем сэкономлю на электричестве от роутера %)
И потом, эта же болезнь прогрессировать начнёт. Я начну бегать по квартире и выключать вообще всё. Начнутся скандалы с домашними, которые точно не будут разделять такую особенность использования вещей.
Да, я понимаю что есть те кому это актуально и вообще в стране песец, но не надо всех парить своими проблемами, полагаю даже люди с малым достатком больше электричества потребляют лампочками накаливания потому что так привычнее и дешевле. Да и кинескопные телеки у них поди тоже жрут не мало…
Короче, любители экономить электричество юзая дешман роутеры, — вы фрики. :)Alexeyslav
05.09.2017 09:11Есть один такой неттоп… ужасно тормозной и прогибается уже даже при одной активной веб-камере, хоть и памяти дофига. И тоже по-моему на C350. А ещё этот ужаснейший шум вентиляторов. И ладно если девайс в доме один, но нет — копейка к копейке и уже растёт слон. А ещё проблема куда пихать эту кучу железа ДОМА.
И главное ЗАЧЕМ это всё? Только чтобы получить очередное сомнительное удобство за счёт засорения жилого пространства…
Точно говорят — профдеформация.
А вот лампочкам накаливания пока ещё полной альтернативы не найдено — только целый ворох компромиссных решений, каждое из которых в чём-то ущербно да ещё и дорого.
Alexeyslav
04.09.2017 09:37А потом счета за электричество оплачивать на работу x86 системы которая избыточна для данных целей.
VitalKoshalew
04.09.2017 23:11Кому-то лишние 25W не так критичны, как потраченное время на сборку OpenWRT и потенциальное участие своего роутера в ботнете из-за отсутствия обновлений.
Что касается избыточности x86, тут всё зависит от целей. Захотелось, например, красивую статистику генерировать, или какую-нибудь ещё задачу добавить, тут и упрёмся в убогий процессор.Alexeyslav
05.09.2017 08:53Вообще-то не 25Вт а все 100Вт. Красивую статистику разве нельзя сгенерировать на ARM? Нет, дело не в процессорах… дело в софте! Чертовски неэффективные решения… система в сотню раз быстрее той на котором бегал DOOM и нельзя генерировать красивые картинки в реальном времени? Вот ни за что не поверю! За лень расплачиваемся энергонеэффективностью…
myxo
05.09.2017 11:46При нагрузке может и 100. У меня дома стоит старый ноут, единственная цель которого — хост пары телеграмм ботов. Основную часть времени простаивает. Смотрел по счетчику, примерно 25 Вт и выходит.
VitalKoshalew
05.09.2017 19:45Почему уж сразу не 100кВт? Выше приводили пример x86 маршрутизатора, у него блок питания 36-ваттный, в описании написано «power at 26W~36W».
Претензии к эффективности бесплатного софта с открытым исходным кодом, мне кажется, высказывать вообще смысла особого нет: можете лучше — исправьте. С x86 проблемы такой просто нет. Пример из жизни: у меня старый ARM-процессор не справлялся со статистикой, на x86 средняя загрузка процессора — 8%.Alexeyslav
06.09.2017 01:19Если за каждого исправлять — жизни не хватит. Очевидно, под ARM статистическую программу портировали не глядя, вот и выполняется с перерасходом ресурсов. Там ведь не адская математика, с такими вычислительными задачами справлялся и в десятки раз более медленный процессор. Но такое дело — те кто могут им не надо исправлять эти косяки, а тем кому надо… вот и получается забивание гвоздей микроскопом. *як-*як и в продакшн.
rogoz
03.09.2017 14:30Использую ODROIC-C1 на арче в качестве роутера. И мне попроще — провайдерская блокировка режется несколькими строчками iptables.
Lordbl4
03.09.2017 19:34ещё есть вариант — пк с Pfsense на борту. вышеупомянутые китайские поделки поддерживают Pfsense из коробки
Amet13
04.09.2017 09:24#dns=dnsmasq
Вроде как с Ubuntu 17.04 уже перешли на systemd-resolved, и проблемы с dnsmasq уже возникать не должно, но я не проверял.
grumbler66rus
06.09.2017 01:14+1В описанной ситуации bind излишен, dnsmasq вполне достаточен. Чтобы он ресолвил зону orion, в dnsmasq.conf нужна одна строка:
server=/orion/127.0.0.1#5353
У меня он подобным же образом ресолвит TLD lib, coin,… — работает кошелёк emercoin с включенным EMCDNS:
server=/lib/192.168.90.8#5335
Плюс через emercoind ресолвится i2p, но там всё сложнее.
Зря отключили ipv6. Я давным-давно настроил 6to4 и gai.conf, в результате этого блокировки noname и многих других сайтов я просто не заметил. Правда для HDvideo в youtube скорости не хватает, это пришлось регулировать в том же gai.conf.
Ныне 6to4 имеет статус устаревшей технологии и лучше настраивать IPv6 через туннельного брокера, но от этого изменятся только вариант собственно туннеля. маршрутизация IPv6 настраивается точно так же в gai.conf.
Вместо прозрачного прокси стоило отдать по DHCP ссылку с proxy.pac и тогда в нормальных ОС браузинг через сервер прокси HTTP/HTTPS будет настроен автоматически.
imildar
06.09.2017 13:56-1Как дописать print, чтоб в консоль запуска фейк веб-сервера писал доменное имя, на которое постучались?
neu3y
Автор статьи делает благое дело да?
Пока статьи про обход были технически сложными — массово неприемлимыми — никого они не трогали.
Как только больше будет общедоступных методов, как больше будет статей про них — так раньше на работу Тора обратят внимание и примут меры для затруднения.
Roman_Cherkasov
Простите что? Обход блокировки технически сложный? Мы в разных интернетах живем с вами? Все кто хотел обходить блокировки и не париться — уже давно скачали Opera или расширения для Chrome/FF/etc. И сделали это на всех устройствах… И чет ни кто особых «мер для затруднения» работы не принимает. А это альтернативный(универсальный) метод и нет ничего в этом плохого. Так что считай что благое дело.
neu3y
Считаете себя самым умным? Это временное явление. Или сударь не слышал про Великий Китайский Файрвол?
Roman_Cherkasov
Великий Китайский Файрвол. Открою вам секрет — его тоже обходят. Только не рассказывайте ни кому!
Alexeyslav
Проблема в том что даже скачать расширение для браузера(именно найти нужное, без риска подхватить трояна и т.п.) уже задача посильная не для всех, и даже не для большинства. Да и сами эти расширения так себе — работают через пень-колоду из-за популярности.
waverunner
frigate для Хрома меня еще ни разу не подводил за 2,5 года. Расширение скачано из хром вебстора. А на Мяу стоит VPN Master, приложение из гуглплей. Видимо, у вас провайдер суёт трояны во все пакеты))))
Alexeyslav
Зачем сразу провайдер. Сами разработчики и суют в фейковые приложениями коими заполнен тот же гугл-плей. И хорошо когда вы знаете как должно выглядеть и называться оригинальное приложение, но большинство людей столкнувшиеся с этим впервые этого не знают. На чем, собственно, фишинг и работает.
r-moiseev
Законодательный запрет это уже обратили внимание или еще не совсем?