|
|
| Строка 113: |
Строка 113: |
|
| |
|
| == Обход блокировок РКН == | | == Обход блокировок РКН == |
| К сожалению я не могу хорошо рассказать каким образом работает интернет, и как происходят все процессы. Но это работает.
| |
|
| |
| Начинается все с поиска сервера е Европе или Америке. Многие крупные IT конторы позволяют создавать VPS на различных условиях. Amazon, Google, Oracle. Я попробовал все. К сожалению просто так без танцев поставит VPN сервер не получится. Так как эти VPS лежат сильно далеко внутри сети этих контор. Вот именно про это я и говорил, я не могу понять каким образом это работает. Поэтому я не могу понять как это настроить в таких сервисах. Установка в ручную, скачав из репозиториев WireGuard не получается. При подключении к серверу, VPN работает, но сайты не открываются. Мой скудный ум приходит к выводу, что VPN сервер не может достучатся до интернета, хотя сам сервер может.
| |
|
| |
| Базироваться наш VPN будет на WireGuard. О нем многие говорят. Но мне не очень понятно, почему. Скорее всего я снова не знаю чего то.
| |
|
| |
| Теперь о саамом подходе, я приложил ниже ссылку о методе, он подробно описан в статье на HABR.
| |
|
| |
| Суть в том что когда я пытаюсь зайти на сайт, предположим это rutracker.org, мой вопрос о сайте летит DNS серверу. На каком адресе находится оный? Провайдеры на данный момент видят это, и перехватывают твой запрос, подсовывая свою заглушку по типу РТ, или попросту не дают открыть сайт. Простым решением, раньше, была смена DNS, мы его можем сменить на 8.8.8.8, и после этого запросы идут не через провайдера, сайт прилетает без помех. Сейчас такового провайдера сложно найти. А как оказалось недавно, DNS 8.8.8.8 и подобные вообще могут быть заблокированы в нашей стране.
| |
|
| |
| Чтобы знать какой адрес заблокирован, а какой нет нужно иметь список таких адресов. Он есть на сайте https://antifilter.download/ и постоянно обновляется.
| |
|
| |
| По идеи автора, не меня, опираясь на этот список и будет происходить фильтрация трафика.
| |
|
| |
| ----Статьи которые помогли в запуске и установке. Снова пришлось по крупицам выискивать информацию.
| |
|
| |
| - ''Статья на хабре "Т[https://habr.com/ru/post/440030/ очечный обход блокировок PKH на роутере с OpenWrt]", задала основной курс действий (обязательно смотреть комментарии, так как с момента выхода поменялся синтаксис OpenWrt, одна из причин помучится)''
| |
|
| |
| - ''Еще одна [https://habr.com/ru/post/449234/#_2-2-3-ip-address-overview статья, рассказывающая как запустить все на]'' [https://habr.com/ru/post/449234/#_2-2-3-ip-address-overview '''Amazon'''''овских облаках.''] Тут я узнал, что пишут скрипты для установки на подобных VPS.
| |
|
| |
| - ''Сайт с [https://docs.pi-hole.net/guides/vpn/wireguard/server/ описанием установки WireGuard и настройке сервера].''
| |
|
| |
| - ''Еще один [https://pswalia2u.medium.com/setting-up-personal-wireguard-vpn-on-oracle-cloud-compute-instance-1d90d56d4b8b мануал по развертыванию через ansible WG] и настройке сервера, подходит для Oracle.''
| |
|
| |
| - [https://habr.com/ru/post/541466/ Рассказ о том как настроить сеть в ''Oracle Cloud'']''.''
| |
| ----Почему есть акцент на Oracle? Так получается, что у Amazon, Google и подобных условия хорошие, но не бесконечно. Есть ограничение на бесплатный период, у кого то год, у кого то меньше. А потом плати, да немного, но 150 - 300 рублей в месяц тарантить не хочется. Причем просто подумать, ты тратишь деньги другой стране на то, чтобы заходить на сайты, которые блокирует твоя. Вот почему я принципиально не хочу чтобы такого рода вещи чего то стоили. Я и так плачу Ростелекому, за доступ в ограниченный интернет.
| |
|
| |
| Oracle - дается бесплатно VPS и потом не потребует заплатить за него через год. Но как оказалось с ним больше всего проблем с настройкой. Но возможно дело не в том что они пытаются урезать все, а в довольно высоком пороге вхождения. Подразумевается что пользователь очень хорошо эрудирован в сетях, и четко понимает, как работает сеть у Oracle, на основе этого знает как настроить Файрвол.
| |
| ----
| |
|
| |
| === VPS Oracle Cloud ===
| |
| Как я раньше указывал, именно эти ребята дают виртуальный сервер и постоянный ip навсегда, бесплатно.
| |
|
| |
| [[Oracle Cloud|Установка и настройка Oracle Cloud]] описывается на данной странице.
| |
|
| |
| После завершения установки у нас имеется файл конфигурации, из котого мы и будем брать данные для настройки WG в Openwrt.
| |
| ----
| |
|
| |
| === Авто загрузка листов ===
| |
| Проверим обновления и установим wireguard-tools. Именно версию "tools". Все мануалы, как один говорят об установке "wireguard", без постфиксов, но такого пакета попросту нет. Я не понимаю почему все инструкции такие.
| |
| opkg update
| |
|
| |
| opkg install wireguard-tools
| |
| Теперь нужно создать исполняемый bash файл, который будет нам подгружать базы заблокированных IP.
| |
| nano /etc/init.d/hirkn
| |
| Вставим в него следующий код:<syntaxhighlight lang="bash">
| |
| #!/bin/sh
| |
|
| |
| START=99
| |
|
| |
| dir=/tmp/lst
| |
|
| |
| mkdir -p $dir
| |
|
| |
| echo "Run download lists"
| |
| curl -z $dir/subnet.lst https://antifilter.download/list/subnet.lst --output $dir/subnet.lst
| |
|
| |
| curl -z $dir/ipsum.lst https://antifilter.download/list/ipsum.lst --output $dir/ipsum.lst
| |
|
| |
| echo "Firewall restart"
| |
| /etc/init.d/firewall restart
| |
| </syntaxhighlight>Скрипт делаем исполняемым.
| |
| chmod +x /etc/init.d/hirkn
| |
| Нужно сделать симлинк (ярлык).
| |
| ln -s /etc/init.d/hirkn /etc/rc.d/S99hirkn
| |
| Добавим в планировщик задачу на исполнение скрипта, каждый день.
| |
| crontab -e
| |
|
| |
| 0 4 * * * /etc/init.d/hirkn
| |
| Чтобы выйти из vim, нажмем Esc, затем введем ":wq" ,без кавычек.
| |
| /etc/init.d/cron enable
| |
|
| |
| /etc/init.d/cron start
| |
| ----
| |
|
| |
| === Конфигурация таблицы маршрутизации ===
| |
| Отредактировать файл /etc/iproute2/rt_tables добавив в него 99 vpn:
| |
| nano /etc/iproute2/rt_tables
| |
| Должно выглядеть так:<syntaxhighlight lang="bash">
| |
| #
| |
| # reserved values
| |
| #
| |
| 99 vpn
| |
| 128 prelocal
| |
| ...
| |
| </syntaxhighlight>Создать дефолтный маршрут для таблицы "vpn" через wg интерфейс можно командой:
| |
| ip route add table vpn default dev wg0
| |
| Создадим скрип для создания этого маршрута.
| |
| nano /etc/hotplug.d/iface/30-rknroute
| |
| Содержимое будет таким:<syntaxhighlight lang="bash">
| |
| #!/bin/sh
| |
|
| |
| ip route add table vpn default dev wg0
| |
| </syntaxhighlight>
| |
| ----
| |
|
| |
| === Конфигурация сети ===
| |
| Настроить WG на для работы с прописанными правилами.
| |
|
| |
| Отредактируем файл /etc/config/network
| |
| nano /etc/config/network
| |
| в конце добавляем:<syntaxhighlight>
| |
| config interface 'wg0'
| |
| option private_key 'privatekey-client'
| |
| list addresses '10.49.0.2/24'
| |
| option listen_port '54321'
| |
| option proto 'wireguard'
| |
| </syntaxhighlight>'''private_key''' — это privatekey-client, который мы генерировали при настройке сервера
| |
|
| |
| '''list addresses''' — адрес wg интерфейса
| |
|
| |
| '''listen_port''' — порт на котором WireGuard принимает соединения. Но соединение будет происходить через порт на сервере, поэтому здесь мы не будем открывать для него порт на firewall
| |
|
| |
| '''proto''' — указываем протокол, что бы openwrt понимало что это конфигурация WireGuard<syntaxhighlight>
| |
| config wireguard_wg0
| |
| option public_key 'publickey-server'
| |
| option preshared_key 'preshared_key'
| |
| option allowed_ips '0.0.0.0/0'
| |
| option route_allowed_ips '0'
| |
| option endpoint_host 'wg-server-ip'
| |
| option persistent_keepalive '25'
| |
| option endpoint_port '54321'
| |
| </syntaxhighlight>'''public_key''' — ключ publickey-server
| |
|
| |
| '''preshared_key''' - дополнительный ключ, для большей сикюрности.
| |
|
| |
| '''allowed_ips''' — подсети, в которые может ходить трафик через тунель, в нашем случае никаких ограничей не требуется, поэтому 0.0.0.0/0
| |
|
| |
| '''route_allowed_ips''' — флаг, который делает роут через wg интерфейс для перечисленных сетей из параметра allowed_ips. В нашем случае это не нужно, эту работу выполняет iptables
| |
|
| |
| '''endpoint_host''' — ip/url нашего wg сервера
| |
|
| |
| '''persistent_keepalive''' — интервал времени, через который отправляются пакеты для поддержки соединения
| |
|
| |
| '''endpoint_port''' — порт wireguard на сервере
| |
|
| |
| Ещё в конфигурацию network добавим правило, которое будет отправлять весь трафик, помеченный 0x1, в таблицу маршрутизации "vpn":<syntaxhighlight>
| |
| config rule
| |
| option priority '100'
| |
| option lookup 'vpn'
| |
| option mark '0x1'
| |
| </syntaxhighlight>
| |
| ----
| |
|
| |
| === Конфигурация firewall ===
| |
| Конфигурация фаервола находится в /etc/config/firewall
| |
| nano /etc/config/firewall
| |
| Добавим в конце следующее:<syntaxhighlight>
| |
| config zone
| |
| option name 'wg'
| |
| option family 'ipv4'
| |
| option masq '1'
| |
| option output 'ACCEPT'
| |
| option forward 'REJECT'
| |
| option input 'REJECT'
| |
| option mtu_fix '1'
| |
| option network 'wg0'
| |
| </syntaxhighlight>Мы разрешаем только выход трафика из интерфейса и включаем маскарадинг.
| |
|
| |
| Теперь нужно разрешить переадресацию с lan зоны на wg зону:<syntaxhighlight>
| |
| config forwarding
| |
| option src 'lan'
| |
| option dest 'wg'
| |
| </syntaxhighlight>Формирование списков в iptables с помощью ipset:<syntaxhighlight>
| |
| config ipset
| |
| option name 'vpn_subnets'
| |
| option storage 'hash'
| |
| option loadfile '/tmp/lst/subnet.lst'
| |
| option match 'dst_net'
| |
| option hashsize '1000000'
| |
| option maxelem '1000000'
| |
|
| |
| config ipset
| |
| option name 'vpn_ipsum'
| |
| option storage 'hash'
| |
| option loadfile '/tmp/lst/ipsum.lst'
| |
| option match 'dst_net'
| |
| option hashsize '1000000'
| |
| option maxelem '1000000'
| |
| </syntaxhighlight>'''loadfile''' — файл из которого берем список
| |
|
| |
| '''name''' — имя для нашего списка
| |
|
| |
| '''storage, match''' — здесь указываем как хранить и какой тип данных. Будем хранить тип "подсеть"
| |
|
| |
| Добавим два правила маркировки пакетов<syntaxhighlight>
| |
| config rule
| |
| option name 'mark_subnet'
| |
| option src 'lan'
| |
| option dest '*'
| |
| option proto 'all'
| |
| option ipset 'vpn_subnets'
| |
| option set_mark '0x1'
| |
| option target 'MARK'
| |
|
| |
| config rule
| |
| option name 'mark_ipsum'
| |
| option src 'lan'
| |
| option dest '*'
| |
| option proto 'all'
| |
| option ipset 'vpn_ipsum'
| |
| option set_mark '0x1'
| |
| option target 'MARK'
| |
| </syntaxhighlight>Эти правила подразумевают под собой, что все пакеты идущие в подсети из списков vpn_subnets и vpn_ipsum необходимо помечать маркером 0x1.
| |
|
| |
| После этого перезапускаем сеть:
| |
| /etc/init.d/network restart
| |
| и запускаем скрипт:
| |
| /etc/init.d/hirkn
| |
| После отработки скрипта у вас должно всё заработать. Проверьте маршрут на клиенте роутера:
| |
| ----
| |
|
| |
| === DNSCrypt ===
| |
| Цитирую создателя статьи на хабре, так мне слишком мало известно о том как это работает.
| |
|
| |
| "Зачем? Ваш провайдер может заботливо подменять ip-адрес заблокированного ресурса, таким образом перенаправляя вас на свой ip с заглушкой, ну и наш обход по ip в данном случае не поможет. Для подмены не всегда даже нужно использовать dns сервер провайдера, ваши запросы могут перехватываться и ответы подменяться. Ну и к слову, это может делать не только провайдер."
| |
|
| |
| Установим пакет:
| |
| opkg install dnscrypt-proxy
| |
| Настраиваем конфиг '''/etc/config/dnscrypt-proxy''' примерно так:<syntaxhighlight>
| |
| config dnscrypt-proxy ns1
| |
| option address '127.0.0.1'
| |
| option port '5353'
| |
| option resolver 'cpunks-ru'
| |
| </syntaxhighlight>Таким образом у нас есть сервис dnscrypt на порту 5353 доступный на localhost.
| |
|
| |
| Resolver — это dns, сервер поддерживающий шифрование. На роутере в файле /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv содержится список доступных, на момент выпуска установленной версии dnscrypt, серверов.
| |
|
| |
| Настраиваем dnsmasq на работу с dnscrypt. В '''/etc/config/dhcp''' комментируем строчку:
| |
| nano '''/etc/config/dhcp'''
| |
| Добавляем так:<syntaxhighlight>
| |
| ...
| |
| #option resolvfile '/tmp/resolv.conf.auto'
| |
| list server '/pool.ntp.org/208.67.222.222'
| |
| list server '/antifilter.download/208.67.222.222'
| |
| list server '127.0.0.1#5353'
| |
| ...
| |
| </syntaxhighlight>Отключаем использование провайдерских DNS для интерфейса wan
| |
|
| |
| В /etc/config/network добавляем строку
| |
| nano /etc/config/network
| |
| Добавить: option peerdns '0', у меня это выглядит так<syntaxhighlight>
| |
| ...
| |
| config interface 'pppoe'
| |
| option proto 'pppoe'
| |
| option device 'wan'
| |
| option username '#####'
| |
| option password '#####'
| |
| option ipv6 '0'
| |
| option peerdns '0'
| |
| ...
| |
| </syntaxhighlight>После этого перезапускаем сеть:
| |
| /etc/init.d/network restart
| |
| Добавляем в автозагрузку и стартуем dnscrypt:
| |
| /etc/init.d/dnscrypt-proxy enable
| |
|
| |
| /etc/init.d/dnscrypt-proxy start
| |
| Перезапускаем dnsmasq:
| |
| /etc/init.d/dnsmasq restart
| |
| ---- | | ---- |
Тут я опишу все то что нужно знать по части настройки роутеров на OpenWrt.
Скажем по простому это линукс на роутере. А значит полная свобода по настройке. Остается только знать как и для чего - можно применить.
Очень большой процент роутеров способны работать с OpenWrt. Качество работы зависит от производительности ЦП устройства. Так же версия прошивки.
В данном описании всё касается версии OpenWrt 21.02 - на 13.09.21. Устройство Xiaomi Mi Router 3 Pro. Устройство достаточно производительное чтобы переваривать множество задач.
Начну с базовых вещей:
Первая настройка
Нужно понимать - это линукс, есть в настройках бекап, но это всего лишь некий список конфигов которые роутер сохранит в файле. Установленное ПО не будет удалено. Сделать полный сброс можно только хардресетом.
Сброс настроек
Долгое удержание кнопки reset до тех пор пока не замигает красным индикатор. После чего произойдет сброс настроек. Но не до заводских, это просто отчистка ОС.
ssh
При первом запуске OpenWrt попросит пароль, но его вводить не нужно, его нет.
Его нужно задать в sytem/Admin Password
там придумываем пароль для root
он же будет паролем для ssh
так же можно приложить ключ ssh для доступа по ключу, это удобнее.
Русификация
Для OpenWrt существует оболочка luci, веб морда если по-другому. Мы и видим её в браузере. Для этой оболочки есть скины и языковые пакеты. Устанавливаются они как пакеты.
Есть два способа установить пакет:
Используя оболочку:
Идем в system/Software, далее нажимаем Update lists..., перед нами список пакетов доступных для установки.
Найдем luci-i18n-base-ru, это и есть русификатор интерфейса для luci.
Так же можно установить luci-i18n-firewall-ru, это русификатор для модуля firewall, он считается отдельным.
Используя командную строку по ssh.
Подключаемся к роутеру по адресу 192.168.1.1:
ssh root@192.168.1.1.
Выполняем обновление списка пакетов:
opkg update && opkg install luci-i18n-base-ru luci-i18n-firewall-ru
Готово
Первоначальная русификация есть. Остальные русификаторы устанавливаются по мере установки других пакетов.
Настройка pppoe
В моём случае это pppoe от Ростелекома;
Настраивать его нужно в интерфейсе WAN;
Идем в Сеть/Интерфейсы;
На против WAN нажимаем изменить;
Протокол выбираем pppoe;
Появляются поля для заполнения;
В разделе Дополнительные настройки, Получение IPv6-адреса отключаю IPv6, почему то нормально не работает у меня с ним.
После этого Сохраняем и применяем.
Интернет должен появится.
Настройка беспроводных сетей
На роутере предусмотрено два диапазона 2.4 и 5 гигагерц.
Перехожу Сеть/Беспроводная.
Выбираю нужную сеть и нажимаю изменить.
Ввожу название сети, в вкладке Безопасность, выбираю WAPA2/WAPA3, задаю пароль, сохраняю. Тоже самое для второго диапазона.
Выполняю сохранение и применение.
После чего на против каждой нажимаю включить.
Готово WiFi есть.
Проброс портов
Для работы сервисов требуется перенаправление запросов по портам.
Это настраивается в Сеть/Межсетевой экран/Перенаправление портов.
Нажимаем добавить, даем имя перенаправление (может быть любым), выбираем протокол TCP, UDP или оба, Выбираем внешний порт (80, 443), выбираем внутренний порт (80, 443), и ip адрес машины на которую будет происходить перенаправление.
Я делаю перенаправление для портов: 80 и 443 на машину с NGINX. Для работы сайтов.
Постоянные аренды
Можно привязать к машинам постоянные ip адреса, это нужно во многих случаях.
Настраивается это в Сеть/DHCP и DNS/Постоянные аренды.
Нажимаем добавить, даем имя, можно выбрать машины по MAC (обычно если в сети есть машина то роутер о ней уже знает, так что можно выбрать из списка), нажимаем сохранить.
Так делаем для всех машин на которых нужно сохранить постоянный IP.
На этом можно закончить базовую настройку роутера на OpenWRT.
Обход блокировок РКН