Loading
VPN сервер на роутере Xiaomi – это отличное современное решение для активного пользователя, который ценит удаленные сервисы и часто пользуется возможностями, которые они предоставляют. Мы также решили идти в «ногу со временем» и собрали подробный обзорный материал по настройке ВПН для популярных на сегодняшний день Mi устройств. Надеемся, информация будет вам полезна.
Начнем нашу статью с пояснений терминологии. VPN (Virtual Private Network) – частная виртуальная сеть, которая создана для удаленного подключения к ней поверх Интернета. Такая технология в последнее время стала мега-популярной не только из-за своих функциональных характеристик. Наше правительство все активнее блокирует сервисы, которыми пользуются тысячи (если не сказать – миллионы) людей. Специализированные приложения типа ВПН позволяют скрывать IP адреса и страну расположения клиентов, а значит, без проблем помогают открыть доступ к запрещенному контенту.
Если одни юзеры «заморачиваются» с инсталляцией и оплатой программы на определенный период (месяц, полгода, год) на 1-2 своих электронных девайса, мы предлагаем поступить проще – настроить VPN на роутере Xiaomi Mi Wi-Fi Router. Так вы экономите не только финансовые вложения, но и драгоценное время. Кроме того, девайсы, объединенные в одну сеть или SMART-систему Сяоми, могут обмениваться данными даже без подключения к глобальной сети (офлайн). Как видите, преимущества значительны, потому приступим к работе.
Как настроить VPN на роутере Xiaomi
Процедура конфигурации не займет много времени. Предлагаем выполнить следующие шаги:
- Заменяем динамический адрес на статический, процесс подобной регистрации описывать не будем (есть много мануалов в сети по теме «сервис DDNS», гуглите, знакомьтесь).
- После получения адреса, заходим в панель управления (в народе админка), раздел Advanced, вкладка VPN:
- Кликаем клавишу «Add Service»:
- Заполняем все графы, в строке Name указываем название будущего сервера, Protocol – оставляем протокол PPTP, Server — вписываем полученный вначале IP-адрес, Username, Password – задаем регистрационные данные (логин ∕ пароль).
- Завершаем настройку – кликаем кнопку «Save». Сервер создан, можно его использовать – жмем Connect.
При желании можно создать несколько таких рабочих серверов, такая опция в маршрутизаторе имеется.
Если вы заходили в админ. панель при помощи смартфона и мобильного приложения Mi WiFI, у вас есть возможность включать/отключать VPN, а также менять геолокации на другие страны из выпадающего списка (Германия, США, Канада) в личном кабинете.
Создание и применение ВПН-серверов на Mi роутерах – процедура полезная и несложная, с ней справятся даже новички! Вы наверняка в этом лично убедитесь, если воспользуетесь советами из этой статьи.
for KeepSolid VPN Unlimited users
This tutorial provides a detailed walkthrough on how to configure OpenVPN® and L2TP clients on your router flashed with Padavan firmware. To get more information about the OpenVPN® protocol, check out our detailed article What is OpenVPN® protocol. As well, we recommend you to check the article What is L2TP VPN protocol to learn more about its features and technical details.
Xiaomi Mi-3 router with Padavan firmware 3.4.3.9-099 was taken as an example. How to setup VPN Unlimited for Padavan firmware? How to configure OpenVPN for Padavan firmware? Let’s check it out!
I. How to configure OpenVPN® client for Padavan firmware
II. How to configure L2TP client on your Padavan router
III. Optional Kill Switch of our VPN for Padavan Firmware setup (for advanced users only)
I. How to configure OpenVPN® client for Padavan firmware
- Before setting up VPN on your Padavan firmware router, you need to generate manual configuration files. This guide outlines a few simple steps on how to do it.
- Then, login to your Padavan router control panel. If you don’t know how to access your router control panel, check out our instruction on how to find your router IP.
- Navigate to the VPN Client > Settings tab.
- Enable the VPN Client for Padavan firmware.
- Fill out the fields in the following way:
- VPN Client Protocol: OpenVPN®
- Remote VPN Server (IP or DNS host): Specify a server domain name from the configuration settings you’ve generated
- Port: 1194
- Transport: UDP
- Encapsulation Layer: L3 – TUN (IP)
- Authentication type: TLS: client.crt/client.key
- Authentication Algorithm: [SHA512] SHA-512, 512 bit
- Encryption Cipher Algorithm: [AES-256-CBC] AES, 256 bit
- Enable LZO for Data Compression: No (but pull from server)
- HMAC Signature Check (TLS-Auth)? — No
- Click OpenVPN® Extended Configuration and paste the below settings:
nice 0
auth-nocache
nobind
persist-tun
persist-key
remote-random
remote-cert-tls server
route-metric 1
tun-mtu 1500
- In the section Settings Depending on Remove VPN Server Role choose the following options:
- Restrict Access from VPN Server Site: No (Site-to-Site), using NAT translation
- Obtaining DNS from VPN Server: Replace all existing
- Route All Traffic through the VPN interface? — Yes
- Click Apply.
- Navigate to the OpenVPN® Certificates & Keys tab for Padavan firmware. Here, you’ll need to enter the key and certificates from the generated .ovpn configuration file:
- ca.crt (Root CA Certificate): paste the strings between <ca> and </ca>, including ——BEGIN CERTIFICATE—— and ——BEGIN CERTIFICATE——
- client.crt (Client Certificate): paste the strings between <cert> and </cert>, including ——BEGIN CERTIFICATE—— and ——BEGIN CERTIFICATE——
- client.key (Client Private Key) — secret: paste the strings between <key> and </key>, including ——BEGIN CERTIFICATE—— and ——BEGIN CERTIFICATE——
- Click Apply.
When the VPN connection for Padavan firmware is successfully established, you’ll see the Connected status on the Settings tab as shown below.
- After connecting to our service for Padavan firmware, you need to make your changes permanent. You can do this in three ways:
- In Administration > Console run the command mtd_storage.sh save.
- Go to Advanced Settings > Administration > Settings, navigate to Commit Internal Storage to Flash Memory Now at the bottom of the page and press Commit.
- Reboot your router by pressing Reboot to the right of Logout button.
II. How to configure L2TP client on your Padavan router
- Generate L2TP configurations in your KeepSolid User Office following this guide.
- Open the web interface of your router in a browser and login to the router control panel.
- In the side menu, go to VPN Client > Settings.
- Enable the VPN client for Padavan firmware and set up the L2TP connection filling out the fields in the following way:
- VPN Client Protocol: L2TP (w/o IPSec)
- Remote VPN Server (IP or DNS host): Paste the chosen server name from the manual configuration set you’ve generated in step 1
- Login: Enter the login from the configuration settings
- Password: Paste the password from the configuration settings
- Restrict Access from VPN Server Site: No (Site-to-Site), using NAT translation
- Obtaining DNS from VPN Server: Replace all existing
- Route All Traffic through the VPN interface? — Yes
- Click Apply.
The VPN connection will be established and you’ll see the status Connected on the same Settings tab.
That’s it! You’ve successfully completed your Padavan firmware VPN client setup and have a running VPN connection on your router.
III. Optional Kill Switch of our VPN for Padavan Firmware setup (for advanced users only)
NOTE: Please make sure to configure Kill Switch correctly, otherwise you will lose internet connection on your router.
To set up Kill Switch and prevent traffic leakage in case of a sudden drop of a VPN connection, navigate to Run the Script After Connected/Disconnected to VPN Server on the VPN Client interface and paste the following:
#!/bin/sh### Custom user script
### Called after internal VPN client connected/disconnected to remote VPN server
### $1 - action (up/down)
### $IFNAME - tunnel interface name (e.g. ppp5 or tun0)
### $IPLOCAL - tunnel local IP address
### $IPREMOTE - tunnel remote IP address
### $DNS1 - peer DNS1
### $DNS2 - peer DNS2
# private LAN subnet behind a remote server (example)
peer_lan="192.168.10.0"
peer_msk="255.255.255.0"
### example: add static route to private LAN subnet behind a remote server
func_ipup()
{
# route add -net $peer_lan netmask $peer_msk gw $IPREMOTE dev $IFNAME
if iptables -C FORWARD -j REJECT; then
iptables -D FORWARD -j REJECT
fi return 0
}
func_ipdown()
{
# route del -net $peer_lan netmask $peer_msk gw $IPREMOTE dev $IFNAME
if (! iptables -C FORWARD -j REJECT); then
iptables -I FORWARD -j REJECT
fi return 0
}
logger -t vpnc-script "$IFNAME $1"
case "$1" in
up)
func_ipup
;;
down)
func_ipdown
;;
esac
You should also block traffic until the tunnel is up. To do it, navigate to Advanced Settings > Customization > Scripts and paste the following lines in the Run After Firewall Rules Restarted field:
#!/bin/sh### Custom user script
### Called after internal iptables reconfig (firewall update)
iptables -A INPUT -j ACCEPT -s 62.205.132.12 -p icmp
if [ -z "$(ip a s tun0 | grep 'state UP')" ] && (! iptables -C FORWARD -j REJECT); then
iptables -I FORWARD -j REJECT
fi
Once filled out, click Apply at the bottom of the page.
Need to configure other devices? Check our Manuals page where you can find the relevant guides, or don’t hesitate to contact our 24/7 customer support via [email protected].
“OpenVPN” is a registered trademark of OpenVPN Inc.
Ready to give it a try?
Select your perfect subscription plan and get additional 7 days of use for absolutely free!
Инструкций с разными вариантами обхода блокировок Интернет-ресурсов опубликовано огромное количество. Но тема не теряет актуальности. Даже всё чаще звучат инициативы на законодательном уровне заблокировать статьи о методах обхода блокировок. И появились слухи, что Роскомнадзор получит ещё одну пачку денег налогоплательщиков на «более лучшие» блокировки. Опытные пользователи ничего нового и полезного из статьи не узнают. А вот другие получат готовые пошаговые инструкции для простого и эффективного выборочного обхода блокировок на популярных маршрутизаторах с прошивкой Padavan и Keenetic.
Содержание
- Введение
- Как вы будете управлять обходом блокировок после настройки?
- Принцип работы
- Настройка маршрутизатора с прошивкой Padavan
- Настройка маршрутизатора с Keenetic OS
- Основные методы диагностики ошибок после настройки
- Дополнительный обход фильтрации DNS-запросов провайдером
Введение
Я около двух лет использовал вариант обхода блокировок от Zolg. На нём основываются многие инструкций в сети. Моя в том числе.
Всё было хорошо, но «лучшее всегда враг хорошего». Во-первых, некоторые новые программы стали слишком «умными» и резолвят домены собственными методами, минуя DNS-сервер маршрутизатора. Это не позволяет dnsmasq на маршрутизаторе добавить адрес во множество ipset для разблокировки и приводит к закономерному результату — ресурс остаётся заблокированным. В Android 9 вообще появилась штатная поддержка DNS-over-TLS, т.е. этот метод обхода блокировки перестаёт работать (если другое устройство ранее не обращалось к dnsmasq). Во-вторых, обновление всего списка доменов из antizapret приводит к непредсказуемым результатам каждый раз. В список могут попасть домены, которые в реальности не заблокированы, и работа которых важна через основной канал. Нужно постоянно быть начеку и руками править сгенерированные файлы. В-третьих, надоело «таскать за собой» огромный список доменов с десятком тысяч казино и подобные, которые просто не нужны. Со временем я понял, что мне нужен лишь небольшой конкретный список заблокированных ресурсов.
Так что я год уже использую немного изменённый метод разблокировки, которым полностью удовлетворён:
- Простота и лёгкость управления (после настройки).
- Полный контроль над тем, какие ресурсы нужно разблокировать.
- Минимальные требования к ресурсам процессора и ОЗУ маршрутизатора.
- Широкий охват нюансов при обходе блокировок.
Важно отметить, что мой вариант не предназначен для случая, когда вам нужно разблокировать сотни и тысячи доменов. Потому что при старте маршрутизатора происходит резолвинг каждого домена из заданного списка. Чем больше доменов в списке, тем дольше будет происходить инициализация множества ipset для разблокировки.
Основа обхода блокировок та же — сеть Tor. Её использование обусловлено двумя простыми факторами— бесплатность, и вероятность того, что Tor будет заблокирован в России, близка к нолю, в отличие от любого VPN-сервиса. Tor является фундаментом наркотрафика в России от среднего звена до самых низов. Блокировка Tor приведёт к поиску новых инструментов для рынка и снижению уровню анонимности, что повлечёт за собой успешную активизацию работы локальных правоохранительных органов. В конечном итоге это, как вирус, начнёт негативно влиять на верхнее звено. Учитывая последние удивительные новости о связях высших должностных лиц государства с глобальным наркотрафиком в Россию, блокировка Tor в России — это просто табу, хоть она и тривиальная. Ни Роскомнадзор, какие бы миллиарды не выделялись этому ведомству, ни один суд в России не имеют разрешения «сверху» для блокировки Tor. И это уже даже никого не удивляет и не пугает, хоть Россия просто утопает в наркотиках (любой школьник знает, что такое «дакнет», и через 30 минут имеет фактическую возможность в любом городе с населением от 10 тыс. человек беспрепятственно получить любые наркотики практически в любых количествах — такая злая правда жизни). При текущем режиме вероятность блокировки сети Tor ниже, чем вероятность блокировки сайта музея Эрмитаж.
Приведённую инструкцию легко адаптировать для маршрутизаторов с OpenWrt. Также, небольшими изменениям легко заменить Tor на OpenVPN.
Как вы будете управлять обходом блокировок после настройки?
Всё очень просто. У вас есть файл /opt/etc/unblock.txt — простой список для разблокировки. Вы можете разблокировать домен, IP-адрес, диапазон адресов или CIDR. Одна строка — один элемент. Допускаются пустые строки, и можно использовать символ # в начале строки для игнорирования.
Вот пример моего личного файла
###Торрент-трекеры
rutracker.org
rutor.info
rutor.is
mega-tor.org
kinozal.tv
nnm-club.me
nnm-club.ws
tfile.me
tfile-home.org
tfile1.cc
megatfile.cc
megapeer.org
megapeer.ru
tapochek.net
tparser.org
tparser.me
rustorka.com
uniongang.tv
fast-torrent.ru
###Каталоги медиаконтента для программ
rezka.ag
hdrezka.ag
hdrezka.me
filmix.co
filmix.cc
seasonvar.ru
###Книги
lib.rus.ec
flibusta.is
flibs.me
flisland.net
flibusta.site
###Телеграм
telegram.org
tdesktop.com
tdesktop.org
tdesktop.info
tdesktop.net
telesco.pe
telegram.dog
telegram.me
t.me
telegra.ph
web.telegram.org
desktop.telegram.org
updates.tdesktop.com
venus.web.telegram.org
flora.web.telegram.org
vesta.web.telegram.org
pluto.web.telegram.org
aurora.web.telegram.org
149.154.160.0/20
91.108.4.0/22
91.108.8.0/22
91.108.12.0/22
91.108.16.0/22
91.108.56.0/22
109.239.140.0/24
67.198.55.0/24
###Разное
7-zip.org
edem.tv
4pna.com
2019.vote
###Проверка Tor
check.torproject.org
###Пример разблокировки по IP (убрать # в начале строки)
#195.82.146.214
###Пример разблокировки по CIDR (убрать # в начале строки)
#103.21.244.0/22
###Пример разблокировки по диапазону (убрать # в начале строки)
#100.100.100.200-100.100.100.210
После редактирования этого файла вы просто выполняете команду для применения новой конфигурации:
unblock_update.sh
Все ресурсы из unblock.txt разблокируются без необходимости перезагружать маршрутизатор.
Принцип работы
- При инициализации маршрутизатора создаётся пустое множество IP-адресов ipset с именем unblock.
- В брандмауэр добавляется правило перенаправления всех пакетов с адресатами из unblock в сервис Tor.
- Запускается сервис Tor в режиме прозрачного прокси.
- Запускается специальный скрипт unblock_ipset.sh, который резолвит все домены из unblock.txt и добавляет их IP-адреса в множество unblock. IP-адреса, диапазоны и CIDR из этого файла тоже добавляются в unblock.
- Запускается dnsmasq с дополнительным конфигурационным файлом unblock.dnsmasq, в котором указано добавление IP-адресов доменов из unblock.txt в множество unblock при резолвинге.
- cron с определенной периодичностью запускает unblock_ipset.sh, чтобы частично компенсировать возможные случаи с нюансами.
- При необходимости все домены из unblock.txt (и только они) резолвятся через dnscrypt-proxy, если провайдер фильтрует DNS.
Настройка маршрутизатора с прошивкой Padavan
У вас должен быть маршрутизатор с установленной прошивкой Padavan и уже настроенным менеджером пакетов Entware. В Windows для подключения подключения к маршрутизатору по SSH вы можете использовать клиент PuTTY.
Убедитесь, что у вас используется Entware, а не устаревший Entware-ng. Посмотрите содержимое папки /opt/var/opkg-lists. Там будет присутствовать файл entware или entware-ng. Во втором случае вам нужно обновить прошивку Padavan вашего маршрутизатора до последней версии и заново установить менеджер пакетов Entware. Только после этого приступайте к пошаговой инструкции.
Как показали отзывы, в основном проблемы возникают у тех, у кого Entware настроен неверно изначально (т.е. не загружаются скрипты из init.d) во внутренней памяти маршрутизатора. Если у вас Xiaomi Mi Router 3 или 3G, и вы не уверены, что Entware во внутренней памяти у вас работает корректно (автоматический запуск), то просто всё настройте заново. Берёте PROMETHEUS. Обновляет скрипт (1). Обновляете исходный код (2). Собираете и прошиваете самую актуальную прошивку (4). Сбрасываете настройки прошивки (NVRAM и хранилище файлов) — Дополнительно > Администрирование > Настройки. Настраиваете доступ в Интернет на маршрутизаторе и включаете SSH. Выполняете в PROMETHEUS Firmware > Форматирование RWFS. Выбираете Дополнительно > Администрирование > Настройки > Монтировать файловую систему в R/W раздел > UBIFS. Перезагрузите маршрутизатор. Все актуальные скрипты запускаа Entware из внутренней памяти будут прописаны автоматически, и всё будет работать как часы.
Для тестов я использовал популярный Xiaomi Mi Router 3G (Entware установлен во внутреннюю память) с самой свежей прошивкой — 32a93db. Всё будет работать даже на легендарном малыше WT3020 AD/F/H за 10$.
1. Установка необходимого ПО на маршрутизаторе
opkg update
opkg install mc tor tor-geoip bind-dig cron
mc — файловый менеджер Midnight Commander. Он нужен лишь из-за удобного редактора mcedit. Если вы привыкли пользоваться другим текстовым редактором, то mc можно не устанавливать.
tor — сервис Tor.
tor-geoip — база гео-IP для Tor.
bind-dig — DNS-клиент (аналог nslookup и host).
cron — планировщик заданий.
2. Инициализация ipset, создание множества IP-адресов unblock (start_script.sh)
Подключите необходимые модули и создайте пустое множество адресов с именем unblock при загрузке маршрутизатора. Для этого откройте в редакторе файл /etc/storage/start_script.sh:
mcedit /etc/storage/start_script.sh
Добавьте в конце:
modprobe ip_set
modprobe ip_set_hash_ip
modprobe ip_set_hash_net
modprobe ip_set_bitmap_ip
modprobe ip_set_list_set
modprobe xt_set
ipset create unblock hash:net
Чтобы вставить из буфера, используйте Shift+Insert, сохранить — F2, выйти — F10.
При желании вы можете отредактировать файл start_script.sh через веб-интерфейс маршрутизатора — «Дополнительно» > «Персонализация» > «Скрипты» > «Выполнить перед инициализацией маршрутизатора». После редактирования нажмите «Применить».
3. Настройка Tor
Удалите содержимое конфигурационного файла Tor:
cat /dev/null > /opt/etc/tor/torrc
Откройте файл конфигурации Tor:
mcedit /opt/etc/tor/torrc
Вставьте (Shift+Insert) содержимое:
User admin
PidFile /opt/var/run/tor.pid
ExcludeExitNodes {RU},{UA},{AM},{KG},{BY}
StrictNodes 1
TransPort 192.168.0.1:9141
ExitRelay 0
ExitPolicy reject *:*
ExitPolicy reject6 *:*
GeoIPFile /opt/share/tor/geoip
GeoIPv6File /opt/share/tor/geoip6
DataDirectory /opt/var/lib/tor
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN). Краткое описание конфигурации:
- Исключить выходные узлы: Россия, Украина, Армения Киргизия, Беларусь.
- Повесить «прозрачный» прокси на адрес 192.168.0.1, порт 9141.
- Запретить быть точкой выхода.
4. Список доменов (и не только) для обхода блокировки (unblock.txt)
unblock.txt — простой список для разблокировки. Вы можете разблокировать домен, IP-адрес, диапазон или CIDR. Одна строка — один элемент. Пустые строки (в том числе с пробелами и табуляциями) игнорируются. Можно использовать символ # в начале строки для игнорирования.
Создайте файл /opt/etc/unblock.txt:
mcedit /opt/etc/unblock.txt
Каждая строка может содержать доменное имя, IP-адрес, диапазон или CIDR. Можно использовать символ # для комментирования строк.
Вот пример моего личного файла
###Торрент-трекеры
rutracker.org
rutor.info
rutor.is
mega-tor.org
kinozal.tv
nnm-club.me
nnm-club.ws
tfile.me
tfile-home.org
tfile1.cc
megatfile.cc
megapeer.org
megapeer.ru
tapochek.net
tparser.org
tparser.me
rustorka.com
uniongang.tv
fast-torrent.ru
###Каталоги медиаконтента для программ
rezka.ag
hdrezka.ag
hdrezka.me
filmix.co
filmix.cc
seasonvar.ru
###Книги
lib.rus.ec
flibusta.is
flibs.me
flisland.net
flibusta.site
###Телеграм
telegram.org
tdesktop.com
tdesktop.org
tdesktop.info
tdesktop.net
telesco.pe
telegram.dog
telegram.me
t.me
telegra.ph
web.telegram.org
desktop.telegram.org
updates.tdesktop.com
venus.web.telegram.org
flora.web.telegram.org
vesta.web.telegram.org
pluto.web.telegram.org
aurora.web.telegram.org
149.154.160.0/20
91.108.4.0/22
91.108.8.0/22
91.108.12.0/22
91.108.16.0/22
91.108.56.0/22
109.239.140.0/24
67.198.55.0/24
###Разное
7-zip.org
edem.tv
4pna.com
2019.vote
###Проверка Tor
check.torproject.org
###Пример разблокировки по IP (убрать # в начале строки)
#195.82.146.214
###Пример разблокировки по CIDR (убрать # в начале строки)
#103.21.244.0/22
###Пример разблокировки по диапазону (убрать # в начале строки)
#100.100.100.200-100.100.100.210
5. Скрипт для заполнения множества unblock IP-адресами заданного списка доменов (unblock_ipset.sh)
Создайте скрипт /opt/bin/unblock_ipset.sh:
mcedit /opt/bin/unblock_ipset.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
until ADDRS=$(dig +short google.com @localhost) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done
while read line || [ -n "$line" ]; do
[ -z "$line" ] && continue
[ "${line:0:1}" = "#" ] && continue
cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}')
if [ ! -z "$cidr" ]; then
ipset -exist add unblock $cidr
continue
fi
range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ ! -z "$range" ]; then
ipset -exist add unblock $range
continue
fi
addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ ! -z "$addr" ]; then
ipset -exist add unblock $addr
continue
fi
dig +short $line @localhost | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{system("ipset -exist add unblock "$1)}'
done < /opt/etc/unblock.txt
Дайте права на исполнение:
chmod +x /opt/bin/unblock_ipset.sh
Скрипт достаточно простой, вот суть его работы… Ждём, когда заработает резолвинг домена google.com (если этого не сделать, то при загрузке маршрутизатора не будет заполнено множество unblock, т.к. маршрутизатор будет находиться ещё в процессе инициализации). Читаем строки в файле unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на символ #. Ищем в строке CIDR. Если CIDR найден, то добавляем его в unblock. Ищем в строке диапазон. Если он найден, то добавляем его в unblock. Ищем в строке IP-адрес. Если IP найден, то добавляем его в unblock. Резолвим строку через dig. Все IP-адреса результата добавляем в unblock.
6. Скрипт для формирования дополнительного конфигурационного файла dnsmasq из заданного списка доменов (unblock_dnsmasq.sh)
Создайте скрипт /opt/bin/unblock_dnsmasq.sh:
mcedit /opt/bin/unblock_dnsmasq.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
cat /dev/null > /opt/etc/unblock.dnsmasq
while read line || [ -n "$line" ]; do
[ -z "$line" ] && continue
[ "${line:0:1}" = "#" ] && continue
echo $line | grep -Eq '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' && continue
echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq
done < /opt/etc/unblock.txt
Дайте права на исполнение:
chmod +x /opt/bin/unblock_dnsmasq.sh
Скрипт достаточно простой, вот суть его работы… Последовательно читаем строки из /opt/etc/unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на #. Пропускаем строки, которые содержат IP-адрес (IP, диапазон, CIDR), т.е. нас интересуют только строки с именами доменов. В файл /opt/etc/unblock.dnsmasq вносим строки вида «ipset=/доменное_имя/unblock». Это означает, что после определения IP-адресов конкретного домена они будут автоматически добавлены во множество unblock.
Обязательно запустите скрипт для генерация файла unblock.dnsmasq:
unblock_dnsmasq.sh
Проверьте, что файл unblock.dnsmasq создался:
cat /opt/etc/unblock.dnsmasq
7. Скрипт ручного принудительного обновления системы после редактирования списка доменов (unblock_update.sh)
Создайте скрипт /opt/bin/unblock_update.sh:
mcedit /opt/bin/unblock_update.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
ipset flush unblock
/opt/bin/unblock_dnsmasq.sh
restart_dhcpd
sleep 3
/opt/bin/unblock_ipset.sh &
Дайте права на исполнение:
chmod +x /opt/bin/unblock_update.sh
8. Скрипт автоматического заполнения множества unblock при загрузке маршрутизатора (S99unblock)
Создайте скрипт /opt/etc/init.d/S99unblock:
mcedit /opt/etc/init.d/S99unblock
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
[ "$1" != "start" ] && exit 0
/opt/bin/unblock_ipset.sh &
Дайте права на исполнение:
chmod +x /opt/etc/init.d/S99unblock
9. Перенаправление пакетов с адресатами из unblock в Tor (post_iptables_script.sh)
Откройте в редакторе файл /etc/storage/post_iptables_script.sh:
mcedit /etc/storage/post_iptables_script.sh
Добавьте в конце:
iptables -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141
При желании вы можете отредактировать файл post_iptables_script.sh через веб-интерфейс маршрутизатора — «Дополнительно» > «Персонализация» > «Скрипты» > «Выполнить после перезапуска правил брандмауэра». После редактирования нажмите «Применить».
В этот же файл вы можете добавить (это необязательно) перенаправление всех запросов на внешний порт 53 на себя. Это нужно, чтобы клиенты в локальной сети не использовали сторонние DNS-сервисы. Запросы будут идти через штатный DNS-сервер.
iptables -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1
iptables -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN).
10. Подключение дополнительного конфигурационного файла к dnsmasq
Нам необходимо подключить созданный файл unblock.dnsmasq к dnsmasq. Для этого откройте в редакторе файл /etc/storage/dnsmasq/dnsmasq.conf:
mcedit /etc/storage/dnsmasq/dnsmasq.conf
Добавьте в конце:
conf-file=/opt/etc/unblock.dnsmasq
Если хотите (это необязательно), можете добавить дополнительный сервер для резолвинга и надёжности:
server=8.8.8.8
При желании вы можете отредактировать файл dnsmasq.conf через веб-интерфейс маршрутизатора — «Дополнительно» > «LAN» > «DHCP-сервер» > «Пользовательский файл конфигурации dnsmasq.conf». После редактирования нажмите «Применить».
11. Добавление задачи в cron для периодического обновления содержимого множества unblock
Это дополнительная страховка на тот случай, если программы/устройства используют свой собственный метод резолвинга, а IP-адрес домена изменился. Всё, что нужно сделать, это с желаемой периодичностью запускать скрипт unblock_ipset.sh. Для примера будем запускать каждый день в 6 утра.
Замените в файле конфигурации cron имя root на admin:
sed -i 's/root/admin/g' /opt/etc/crontab
Откройте в редакторе файл /opt/etc/crontab:
mcedit /opt/etc/crontab
Добавьте в конце:
00 06 * * * admin /opt/bin/unblock_ipset.sh
При желании вы можете закомментировать все остальные шаблонные задачи. Вот, как будет выглядеть ваш файл crontab:
12. Перезагрузка маршрутизатора
Выполните команду:
reboot
После перезагрузки откройте в браузере сайт check.torproject.org (он должен быть добавлен в unblock.txt). Если вы всё сделали верно, то вы увидите надпись «Congratulations. This browser is configured to use Tor.»:
Настройка маршрутизатора с Keenetic OS
У вас должен быть маршрутизатор Keenetic/Zyxel с уже настроенным менеджером пакетов Entware (OPKG). Например, вот список некоторых маршрутизаторов, которые поддерживают Entware: Keenetic II, Keenetic III, Extra, Extra II, Giga II, Giga III, Omni, Omni II, Viva, Ultra, Ultra II, Omni (KN-1410), Extra (KN-1710), Giga (KN-1010), Ultra (KN-1810), Viva (KN-1910), DSL (KN-2010), Duo (KN-2110). Инструкцию по настройке Entware можно посмотреть тут (до 10 пункта).
Если ранее (с прошивкой младше 2.07) вы уже добавляли поддержку Entware, то убедитесь, что у вас используется не устаревший Entware-ng.
Обязательно включите «Модули ядра подсистемы Netfilter» — Общие настройки > Изменить набор компонентов. Если его нет в списке доступных, то пробуйте установить сначала компонент «Протокол IPv6». Если после этого не появляется, то пробуйте без него, но высокая вероятность, что у вас не будет работать разблокировка по диапазону и CIDR (т.к. не будет поддержки множества hash:net).
Для тестов я использовал Keenetic Ultra (KN-1810) с самой свежей прошивкой — 2.14.C.0.0-4.
Важное замечание. Вам придётся отключить штатный DNS-сервер в системе, мы будем использовать dnsmasq вместо него. Вы потеряете возможность назначать DNS-сервисы (Яндекс.DNS/SkyDNS/AdGuard DNS) индивидуально для клиентов, но без проблем сможете использовать их глобально через настройки dnsmasq при необходимости.
1. Установка необходимого ПО на маршрутизаторе
opkg update
opkg install mc tor tor-geoip bind-dig cron dnsmasq-full ipset iptables
mc — файловый менеджер Midnight Commander. Он нужен лишь из-за удобного редактора mcedit. Если вы привыкли пользоваться другим текстовым редактором, то mc можно не устанавливать.
tor — сервис Tor.
tor-geoip — база гео-IP для Tor.
bind-dig — DNS-клиент (аналог nslookup и host).
cron — планировщик заданий.
dnsmasq-full — DNS-сервер.
ipset и iptables — консольные утилиты ipset и iptables (возможно, они уже есть в системе и не нужны, я добавил их для подстраховки).
2. Инициализация ipset, создание множества IP-адресов unblock (100-ipset.sh)
Проверьте, что в системе вашего маршрутизатора есть поддержка множества hash:net (как оказалась, не во всех маршрутизаторах Keenetic она есть):
ipset create test hash:net
Если команда никаких ошибок и сообщений не выдала, значит поддержка есть, и просто следуйте инструкции дальше. В противном случае (есть ошибка) в следующем скрипте вам нужно заменить hash:net на hash:ip. При этом вы потеряете возможность разблокировки по диапазону и CIDR.
Создайте пустое множество адресов с именем unblock при загрузке маршрутизатора. Для этого создайте файл /opt/etc/ndm/fs.d/100-ipset.sh:
mcedit /opt/etc/ndm/fs.d/100-ipset.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
[ "$1" != "start" ] && exit 0
ipset create unblock hash:net -exist
exit 0
Чтобы вставить из буфера, используйте Shift+Insert, сохранить — F2, выйти — F10.
Дайте права на исполнение:
chmod +x /opt/etc/ndm/fs.d/100-ipset.sh
3. Настройка Tor
Удалите содержимое конфигурационного файла Tor:
cat /dev/null > /opt/etc/tor/torrc
Откройте файл конфигурации Tor:
mcedit /opt/etc/tor/torrc
Вставьте (Shift+Insert) содержимое:
User root
PidFile /opt/var/run/tor.pid
ExcludeExitNodes {RU},{UA},{AM},{KG},{BY}
StrictNodes 1
TransPort 192.168.0.1:9141
ExitRelay 0
ExitPolicy reject *:*
ExitPolicy reject6 *:*
GeoIPFile /opt/share/tor/geoip
GeoIPv6File /opt/share/tor/geoip6
DataDirectory /opt/var/lib/tor
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN). Краткое описание конфигурации:
- Исключить выходные узлы: Россия, Украина, Армения Киргизия, Беларусь.
- Повесить «прозрачный» прокси на адрес 192.168.0.1, порт 9141.
- Запретить быть точкой выхода.
4. Список доменов (и не только) для обхода блокировки (unblock.txt)
unblock.txt — простой список для разблокировки. Вы можете разблокировать домен, IP-адрес, диапазон или CIDR. Одна строка — один элемент. Пустые строки (в том числе с пробелами и табуляциями) игнорируются. Можно использовать символ # в начале строки для игнорирования.
Создайте файл /opt/etc/unblock.txt:
mcedit /opt/etc/unblock.txt
Каждая строка может содержать доменное имя, IP-адрес, диапазон или CIDR. Можно использовать символ # для комментирования строк.
Вот пример моего личного файла
###Торрент-трекеры
rutracker.org
rutor.info
rutor.is
mega-tor.org
kinozal.tv
nnm-club.me
nnm-club.ws
tfile.me
tfile-home.org
tfile1.cc
megatfile.cc
megapeer.org
megapeer.ru
tapochek.net
tparser.org
tparser.me
rustorka.com
uniongang.tv
fast-torrent.ru
###Каталоги медиаконтента для программ
rezka.ag
hdrezka.ag
hdrezka.me
filmix.co
filmix.cc
seasonvar.ru
###Книги
lib.rus.ec
flibusta.is
flibs.me
flisland.net
flibusta.site
###Телеграм
telegram.org
tdesktop.com
tdesktop.org
tdesktop.info
tdesktop.net
telesco.pe
telegram.dog
telegram.me
t.me
telegra.ph
web.telegram.org
desktop.telegram.org
updates.tdesktop.com
venus.web.telegram.org
flora.web.telegram.org
vesta.web.telegram.org
pluto.web.telegram.org
aurora.web.telegram.org
149.154.160.0/20
91.108.4.0/22
91.108.8.0/22
91.108.12.0/22
91.108.16.0/22
91.108.56.0/22
109.239.140.0/24
67.198.55.0/24
###Разное
7-zip.org
edem.tv
4pna.com
2019.vote
###Проверка Tor
check.torproject.org
###Пример разблокировки по IP (убрать # в начале строки)
#195.82.146.214
###Пример разблокировки по CIDR (убрать # в начале строки)
#103.21.244.0/22
###Пример разблокировки по диапазону (убрать # в начале строки)
#100.100.100.200-100.100.100.210
5. Скрипт для заполнения множества unblock IP-адресами заданного списка доменов (unblock_ipset.sh)
Создайте скрипт /opt/bin/unblock_ipset.sh:
mcedit /opt/bin/unblock_ipset.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
until ADDRS=$(dig +short google.com @localhost) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done
while read line || [ -n "$line" ]; do
[ -z "$line" ] && continue
[ "${line:0:1}" = "#" ] && continue
cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}')
if [ ! -z "$cidr" ]; then
ipset -exist add unblock $cidr
continue
fi
range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ ! -z "$range" ]; then
ipset -exist add unblock $range
continue
fi
addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ ! -z "$addr" ]; then
ipset -exist add unblock $addr
continue
fi
dig +short $line @localhost | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{system("ipset -exist add unblock "$1)}'
done < /opt/etc/unblock.txt
Дайте права на исполнение:
chmod +x /opt/bin/unblock_ipset.sh
Скрипт достаточно простой, вот суть его работы… Ждём, когда заработает резолвинг домена google.com (если этого не сделать, то при загрузке маршрутизатора не будет заполнено множество unblock, т.к. маршрутизатор будет находиться ещё в процессе инициализации). Читаем строки в файле unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на символ #. Ищем в строке CIDR. Если CIDR найден, то добавляем его в unblock. Ищем в строке диапазон. Если он найден, то добавляем его в unblock. Ищем в строке IP-адрес. Если IP найден, то добавляем его в unblock. Резолвим строку через dig. Все IP-адреса результата добавляем в unblock.
6. Скрипт для формирования дополнительного конфигурационного файла dnsmasq из заданного списка доменов (unblock_dnsmasq.sh)
Создайте скрипт /opt/bin/unblock_dnsmasq.sh:
mcedit /opt/bin/unblock_dnsmasq.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
cat /dev/null > /opt/etc/unblock.dnsmasq
while read line || [ -n "$line" ]; do
[ -z "$line" ] && continue
[ "${line:0:1}" = "#" ] && continue
echo $line | grep -Eq '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' && continue
echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq
done < /opt/etc/unblock.txt
Дайте права на исполнение:
chmod +x /opt/bin/unblock_dnsmasq.sh
Скрипт достаточно простой. Последовательно читаем строки из /opt/etc/unblock.txt. У прочитанных строк автоматически удалены пробелы и табуляция в начале и в конце. Пропускаем пустые строки. Пропускаем строки, которые начинают на #. Пропускаем строки, которые содержат IP-адрес (IP или CIDR), т.е. нас интересуют только строки с именами доменов. В файл /opt/etc/unblock.dnsmasq вносим строки вида «ipset=/доменное_имя/unblock». Это означает, что после определения IP-адресов конкретного домена они будут автоматически добавлены во множество unblock.
Обязательно запустите скрипт для генерация файла unblock.dnsmasq:
unblock_dnsmasq.sh
Проверьте, что файл unblock.dnsmasq создался:
cat /opt/etc/unblock.dnsmasq
7. Скрипт ручного принудительного обновления системы после редактирования списка доменов (unblock_update.sh)
Создайте скрипт /opt/bin/unblock_update.sh:
mcedit /opt/bin/unblock_update.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
ipset flush unblock
/opt/bin/unblock_dnsmasq.sh
/opt/etc/init.d/S56dnsmasq restart
/opt/bin/unblock_ipset.sh &
Дайте права на исполнение:
chmod +x /opt/bin/unblock_update.sh
8. Скрипт автоматического заполнения множества unblock при загрузке маршрутизатора (S99unblock)
Создайте скрипт /opt/etc/init.d/S99unblock:
mcedit /opt/etc/init.d/S99unblock
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
[ "$1" != "start" ] && exit 0
/opt/bin/unblock_ipset.sh &
Дайте права на исполнение:
chmod +x /opt/etc/init.d/S99unblock
9. Перенаправление пакетов с адресатами из unblock в Tor (100-redirect.sh)
Для этого создайте файл /opt/etc/ndm/netfilter.d/100-redirect.sh:
mcedit /opt/etc/ndm/netfilter.d/100-redirect.sh
Вставьте (Shift+Insert) содержимое:
#!/bin/sh
[ "$type" == "ip6tables" ] && exit 0
if [ -z "$(iptables-save 2>/dev/null | grep unblock)" ]; then
ipset create unblock hash:net -exist
iptables -w -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141
fi
exit 0
Если вы в шаге 2 использовали hash:ip, а не hash:net, то замените hash:net на hash:ip. Фактически мы дополнительно дублируем функцию создания множества unblock из 2 шага. Это нужно для подстраховки, если скрипты из fs.d ещё не начали запускаться, а скрипты netfilter.d уже запускаются. Ничего страшного, если unblock уже было создано ранее, команда просто будет проигнорирована.
В этот же файл вы можете добавить (это необязательно) перенаправление всех запросов на внешний порт 53 на себя. Это нужно, чтобы клиенты в локальной сети не использовали сторонние DNS-сервисы. Запросы будут идти через штатный DNS-сервер. Перед последним exit добавьте:
if [ -z "$(iptables-save 2>/dev/null | grep "udp \-\-dport 53 \-j DNAT")" ]; then
iptables -w -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1
fi
if [ -z "$(iptables-save 2>/dev/null | grep "tcp \-\-dport 53 \-j DNAT")" ]; then
iptables -w -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1
fi
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN).
Дайте права на исполнение:
chmod +x /opt/etc/ndm/netfilter.d/100-redirect.sh
10. Настройка dnsmasq и подключение дополнительного конфигурационного файла к dnsmasq
Удалите содержимое конфигурационного файла dnsmasq:
cat /dev/null > /opt/etc/dnsmasq.conf
Откройте файл конфигурации dnsmasq:
mcedit /opt/etc/dnsmasq.conf
Вставьте (Shift+Insert) содержимое:
user=nobody
bogus-priv
no-negcache
clear-on-reload
bind-dynamic
listen-address=192.168.0.1
listen-address=127.0.0.1
min-port=4096
cache-size=1536
expand-hosts
log-async
conf-file=/opt/etc/unblock.dnsmasq
server=8.8.8.8
Замените при необходимости 192.168.0.1 на внутренний адрес вашего маршрутизатора (LAN).
11. Добавление задачи в cron для периодического обновления содержимого множества unblock
Это дополнительная страховка на тот случай, если программы/устройства используют свой собственный метод резолвинга, а IP-адрес домена изменился. Всё, что нужно сделать, это с желаемой периодичностью запускать скрипт unblock_ipset.sh. Для примера будем запускать каждый день в 6 утра.
Откройте в редакторе файл /opt/etc/crontab:
mcedit /opt/etc/crontab
Добавьте в конце:
00 06 * * * root /opt/bin/unblock_ipset.sh
При желании вы можете закомментировать все остальные шаблонные задачи. Вот, как будет выглядеть ваш файл crontab:
12. Отключение штатного DNS-сервера и перезагрузка маршрутизатора
Подключитесь к CLI маршрутизатора Keenetic (порт 23 для Telnet и 22 для SSH, если в системе добавлен компонент «Сервер SSH»).
Выполните команду:
opkg dns-override
system configuration save
system reboot
Встроенный в прошивку DNS-сервер будет выключен, и вместо него будет использоваться dnsmasq из состава Entware. Маршрутизатор при загрузке проверяет, подмонтирована ли папка opt (есть ли флешка/диск с Entware). Если есть, то штатный DNS-сервер не используется. Если нет, используется. Т.е. вынув флешку и перезагрузив маршрутизатор, у вас всё будет работать, как и раньше (перед настройкой).
После перезагрузки откройте в браузере сайт check.torproject.org (он должен быть добавлен в unblock.txt). Если вы всё сделали верно, то вы увидите надпись «Congratulations. This browser is configured to use Tor.»:
Основные методы диагностики ошибок после настройки
Если проверка с сайтом check.torproject.org (он должен быть добавлен в unblock.txt) проходит, но для других ресурсов продолжает открываться заглушка от провайдера (или не открываются), скорее всего, провайдер вмешивается в DNS-трафик, подменяя ответы — вам нужно сделать дополнительный обход фильтрации DNS-запросов.
Если после настройки что-то работает не так, как нужно, используйте простые команды для определения проблемного этапа.
Отобразите содержимое множества unblock:
ipset list unblock
Если система сообщит, что такого множества нет, то ошибка на этапе 2 или вы не включили модуль Netfilter в системе (в случае с Keenetic).
Если множество окажется пустым, то не отработал скрипт unblock_ipset.sh, который в свою очередь должен быть запущен стартовым скриптом S99unblock. Запустите этот скрипт unblock_ipset.sh вручную. Если множество заполнилось, то ошибка на этапе 8. Если скрипт не может выполниться (скорее всего, ожидает резолвинга google.com), то ошибка где-то на стороне DNS-сервера, возможно, на этапе 10 или 6.
Проверьте наличие редиректа в iptables:
iptables-save 2>/dev/null | grep unblock
Если его нет, то ошибка на этапе 9.
Если вообще все сайты не работают, т.е. не работает DNS, ошибка где-то в этапе 6 или 10. Возможно, на этапе 9.
Если все сайты из unblock.txt не работают (превышено время ожидания), но все другие работают, то проблема где-то на стороне Tor, ошибка на этапе 3.
Дополнительный обход фильтрации DNS-запросов провайдером
Если провайдер вмешивается в DNS-трафик, подменяя ответы для заблокированных ресурсов, это очень просто обойти. Для этого мы будем использовать dnscrypt-proxy. При желании и опыте вы легко можете заменить dnscrypt на stubby (DNS over TLS).
dnscrypt будет использоваться только для тех доменов, которые перечислены в unblock.txt. Все остальные запросы будут идти через штатные DNS-серверы.
Если вы уверены, что ваш провайдер не фильтрует DNS-запросы, то эту дополнительную настройку делать не нужно.
У вас уже должен быть настроен описанный выше обход блокировок. Нижеследующие настройки идентичны для Padavan и Keenetic OS.
Установите дополнительное ПО на маршрутизаторе:
opkg update
opkg install dnscrypt-proxy2
Откройте файл конфигурации dnscrypt-proxy:
mcedit /opt/etc/dnscrypt-proxy.toml
Найдите параметры listen_addresses, fallback_resolver, cache и измените их:
listen_addresses = ['127.0.0.1:9153']
fallback_resolver = '77.88.8.8:1253'
cache = false
77.88.8.8:1253 — это адрес DNS-сервера Яндекс с нестандартным портом. Он является резервным на тот случай, если у dnscrypt-proxy возникнут какие-то проблемы.
Запустите dnscrypt-proxy:
/opt/etc/init.d/S09dnscrypt-proxy2 start
Убедитесь, что dnscrypt-proxy работает (вы должны в ответ увидеть список IP-адресов):
dig +short google.com @localhost -p 9153
Откройте в редакторе скрипт /opt/bin/unblock_ipset.sh:
mcedit /opt/bin/unblock_ipset.sh
Замените содержимое на:
#!/bin/sh
until ADDRS=$(dig +short google.com @localhost -p 9153) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done
while read line || [ -n "$line" ]; do
[ -z "$line" ] && continue
[ "${line:0:1}" = "#" ] && continue
cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}')
if [ ! -z "$cidr" ]; then
ipset -exist add unblock $cidr
continue
fi
range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ ! -z "$range" ]; then
ipset -exist add unblock $range
continue
fi
addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')
if [ ! -z "$addr" ]; then
ipset -exist add unblock $addr
continue
fi
dig +short $line @localhost -p 9153 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{system("ipset -exist add unblock "$1)}'
done < /opt/etc/unblock.txt
Мы внесли небольшое изменение — теперь dig для резолвинга использует не штатный DNS-сервер, а dnscrypt-proxy с портом 9153.
Откройте в редакторе скрипт /opt/bin/unblock_dnsmasq.sh:
mcedit /opt/bin/unblock_dnsmasq.sh
Замените содержимое на:
#!/bin/sh
cat /dev/null > /opt/etc/unblock.dnsmasq
while read line || [ -n "$line" ]; do
[ -z "$line" ] && continue
[ "${line:0:1}" = "#" ] && continue
echo $line | grep -Eq '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' && continue
echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq
echo "server=/$line/127.0.0.1#9153" >> /opt/etc/unblock.dnsmasq
done < /opt/etc/unblock.txt
Мы внесли небольшое изменение — теперь при генерации файла unblock.dnsmasq дополнительно вносятся строки вида «server=/доменное_имя/127.0.0.1#9153». Это означает, что резолвинг доменов из списка будет происходить через dnscrypt-proxy.
Выполните unblock_update.sh:
unblock_update.sh
Готово. Все сложные настройки позади. Теперь вы будете только редактировать список unblock.txt при необходимости, добавляя или удаляя из него домены или IP-адреса для разблокировки, и командой unblock_update.sh активировать внесённые изменения.
UPDATE 01.04.2019. Часто приходят личные сообщения по статье с типовыми вопросами. Отвечу тут на самые распространённые.
Как сделать доступными сайты доменной зоны .onion?
В torrc добавить:
VirtualAddrNetwork 10.254.0.0/16
DNSPort 127.0.0.1:9053
AutomapHostsOnResolve 1
Для доступа ко всем доменам зоны onion добавьте в dnsmasq.conf:
server=/onion/127.0.0.1#9053
ipset=/onion/unblock
Если вы не хотите открывать доступ ко всем доменам зоны onion, а лишь к определённым, то в dnsmasq.conf добавьте записи следущего вида:
server=/rutorc6mqdinc4cz.onion/127.0.0.1#9053
ipset=/rutorc6mqdinc4cz.onion/unblock
server=/nnmclub5toro7u65.onion/127.0.0.1#9053
ipset=/nnmclub5toro7u65.onion/unblock
server=/flibustahezeous3.onion/127.0.0.1#9053
ipset=/flibustahezeous3.onion/unblock
Как сделать обход блокировок для клиентов VPN-сервера, запущенного на маршрутизаторе?
В torrc строку с TransPort замените на:
TransPort 0.0.0.0:9141
Добавьте дополнительный редирект с необходимымм интерфейсом (ИНТЕРФЕЙС — интерфейс VPN-сети):
iptables -t nat -A PREROUTING -i ИНТЕРФЕЙС -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141
Padavan — это популярная альтернативная прошивка для роутеров Xiaomi, которая предлагает дополнительные функции и улучшает производительность устройства. В этой статье мы расскажем вам, как установить прошивку padavan на ваш роутер Xiaomi и настроить ее для оптимального использования.
Перед установкой padavan рекомендуется сделать бэкап всех настроек вашего роутера Xiaomi, чтобы в случае неудачной прошивки можно было вернуться к прежней версии. Также убедитесь, что у вас есть последняя версия прошивки padavan для вашей модели роутера Xiaomi.
Для установки padavan вам потребуется обновить прошивку на вашем роутере. Сначала скачайте файл с прошивкой padavan с официального сайта разработчика. Затем подключите ваш роутер Xiaomi к компьютеру с помощью Ethernet-кабеля и войдите в настройки роутера через браузер, введя IP-адрес роутера в строку поиска.
В меню настроек выберите вкладку «Обновление прошивки» и нажмите кнопку «Выбрать файл». Выберите скачанный файл с прошивкой padavan на вашем компьютере и нажмите кнопку «Обновить». После установки прошивки ваш роутер Xiaomi будет перезагружен и готов к использованию с новой прошивкой padavan.
После установки padavan вы можете настроить различные дополнительные функции и опции в меню настроек. Например, вы можете настроить сеть Wi-Fi, настроить VPN-соединение, создать гостевую сеть и изменить пароль администратора.
Прошивка padavan для роутеров Xiaomi предлагает широкие возможности для настройки и улучшения производительности вашего роутера. Следуйте нашей подробной инструкции для установки и настройки padavan, чтобы получить максимальную отдачу от вашего роутера Xiaomi.
Прошивка padavan для роутеров Xiaomi
Процесс установки прошивки padavan на роутер Xiaomi достаточно простой и состоит из нескольких шагов:
- Скачайте последнюю версию прошивки padavan для вашей модели роутера Xiaomi с официального сайта.
- Подключите роутер к компьютеру с помощью сетевого кабеля и откройте веб-браузер.
- Введите IP-адрес роутера в адресную строку браузера и нажмите «Enter». Обычно IP-адрес роутера Xiaomi — 192.168.1.1.
- Войдите в настройки роутера, введя логин и пароль администратора.
- В настройках роутера найдите раздел «Обновление прошивки» или «Файлы».
- Выберите скачанную прошивку padavan и нажмите кнопку «Обновить».
- Дождитесь окончания процесса установки прошивки. При этом роутер должен оставаться подключенным к компьютеру.
- Перезагрузите роутер после завершения установки прошивки.
После установки прошивки padavan ваш роутер Xiaomi будет предлагать широкий набор возможностей для настройки сети, включая управление доступом, настройку VPN, настройку портов, контроль скорости и многое другое. Вы сможете настроить свой роутер таким образом, чтобы он оптимально работал в вашей сети и соответствовал вашим потребностям.
При установке прошивки padavan обязательно следуйте инструкциям и не прерывайте процесс установки. Неправильная прошивка или неправильные настройки могут привести к неработоспособности роутера.
Установка прошивки padavan для роутеров Xiaomi — отличный способ улучшить функциональность и стабильность вашего роутера. Следуйте инструкции, и вскоре вы сможете наслаждаться более быстрой и удобной работой вашего роутера.
Подробная инструкция
В этом разделе мы расскажем о процессе прошивки роутеров Xiaomi с помощью Padavan. Прошивка Padavan позволяет расширить возможности маршрутизатора и добавить дополнительные функции, которых нет в оригинальной прошивке.
Процесс прошивки несложный, но требует аккуратности и следования определенной последовательности действий. Ниже представлена подробная инструкция по прошивке роутеров Xiaomi с использованием Padavan.
Шаг 1: Подготовка
1. Убедитесь, что роутер Xiaomi и компьютер соединены через сетевой кабель.
2. Скачайте прошивку Padavan с официального сайта проекта.
3. Распакуйте скачанный архив в удобное для вас место на компьютере.
Шаг 2: Настройка роутера
1. В браузере на компьютере введите адрес роутера (например, 192.168.1.1) и нажмите Enter.
2. В появившемся окне введите логин и пароль от роутера. Если вы ранее не меняли эти данные, используйте логин admin и пароль admin.
3. Перейдите в раздел «Настройки» или «Settings» (название может отличаться в зависимости от версии прошивки).
4. В разделе «Обновление прошивки» или «Firmware Upgrade» найдите кнопку «Выбрать файл» или «Choose File».
5. Выберите файл прошивки Padavan, который вы распаковали на предыдущем шаге.
6. Нажмите кнопку «Обновить» или «Upgrade» и дождитесь окончания процесса прошивки. Это может занять несколько минут.
Шаг 3: Подключение к новой прошивке
1. После завершения прошивки роутер автоматически перезагрузится.
2. Подключитесь к новой прошивке, введя адрес роутера в браузере и ввести логин и пароль, которые вы использовали на предыдущем шаге.
3. Теперь вы можете настроить новые функции и возможности, предоставляемые прошивкой Padavan.
Обратите внимание, что процесс прошивки может незначительно отличаться в зависимости от модели и версии роутера Xiaomi.