Home.md - crazytypewriter/rd15tool GitHub Wiki

Общая информация

Цель этого проекта - быстрая установка sing-box на роутер xiaomi be 3600 или be 6500/6500 pro, гибкий роутинг и значительное ускорение работы некоторых сайтов в интернете. Под капотом у этих роутеров стоит OpenWrt, так что вполне можно делать все что умеет линукс, а мой тул позволяет это сделать быстро.

Быстрый старт

предполагается, что у вас свежесброшенный роутер, с отключенным ipv6 (у меня на МТС работает ipv6 в режиме passthrough, firewall enabled), роутер имеет ip 192.168.31.1, вы сделали первоначальную настройку и помните свой пароль.

Шаг 0: Включаем SSH сервер, если он еще не включен например через xmir, если включен - можно перейти к шагу 1.

Качаем последний диструбутив rdtool, запускаем его. После запуска rdtool постарается сам найти роутер, если нет, нужно ввести ip адрес роутера руками в поле IP Address, в поле сток нужно ввести пароль от первоначальной настройки роутера, это нужно чтобы получить stok и включить SSH. После ввода пароля и IP адреса если нужно, жмем Get STOK, в окошке вывода лога видим подтверждение: STOK obtained successfully! Жмем Enabele SSH, ждем пока стартанет dropbear, в первый раз это секунд 15, в логе выводится: SSH successfully enabled! Если хотите чтобы SSH запускался после рестарта, нужно нажать Enable SSH permanently.

Шаг 1:Установка sing-box

Жмем install singbox, ждем пока закончится процесс копирования бинарника и инит файлов на роутер, после чего запускаем (start singbox) и проверяем, что sing-box запустился. По умолчанию ставится такой конфиг sing-box, который позволит ему запустится, в логе tail -f /tmp/messages :

INFO[0000] sing-box started (0.22s)

Но работать он не будет, потому что пока нет сервера, на который он должен подключиться, чтобы это исправить нужно перейти к шагу 2.

Шаг 2: Настройка конфига sing-box

Дальше нужна учетка под какой-то протокол, который поддерживает сингбокс (если у вас ее нет, и вы не можете ее купить, попробуйте поискать в телеграмме по vless, за одну минуту нашел бесплатный ключ, как раз подойдет чтобы попробовать), в нашем случае это vless, так как это достаточно простой и безопасный на данный момент протокол. Берем вашу ссылку типа vless://t54erd... копмруем в буфер обмена и вставляем как на скрине ScreenshotConfig.png жмем Check Outbounds correctly потом Apply Outbounds to config, Restart Sing-box, после можно идти к шагу 3 проверять броузером, опционально можно перейти к шагу 2.1, если хорошо понимаете что делаете. Таким образом можно добавить несколько ключей (один сломал, второй потерял), и Sing-box автоматически выберет из них рабочий.

Шаг 2.1: Настройка конфига sing-box вручную

Пример пересборки конфига sing-box с vless, в нашем конфиге сейчас так:

  "outbounds": [
    {
      "type": "vless",
      "tag": "freedom",
      "server": "YOURSERVERIP",
      "server_port": 443,
      "uuid": "UUID",
      "flow": "xtls-rprx-vision",
      "tls": {
        "enabled": true,
        "insecure": false,
        "server_name": "google.com",
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        },
        "reality": {
          "enabled": true,
          "public_key": "PUBLICKEY",
          "short_id": "SHORTID"
        }
      }
    },

Должно получиться примерно так:

  "outbounds": [
    {
      "type": "vless",
      "tag": "freedom-vk",
      "server": "5345345345345.vpn-3534553545-vless.com",
      "server_port": 443,
      "uuid": "id7748900293444234",
      "flow": "xtls-rprx-vision",
      "tls": {
        "enabled": true,
        "server_name": "vk.com",
        "utls": {
          "enabled": true,
          "fingerprint": "edge"
        },
        "reality": {
          "enabled": true,
          "public_key": "t4xj72RwiT_AEeK0uzQZy4ixzkkPBfttu_SSCmJGbwg",
          "short_id": "f0be"
        }
      }
},

После настройки конфига, его нужно установить в роутер. В rdtool нажимаем Сhoose singbox config, выбираем исправленный в предыдущем шаге конфиг, после чего давим Install singbox config file и Restart singbox, если конфиг верный - переходим к шагу 3.

Шаг 3: Проверка sing-box

Здесь у нас уже появляется вариант настроить не основной браузер (или основной через SwitchyOmega) на работу через прокси (192.168.31.1:1080) тип socks5 (если пользуетесь SwitchyOmega - обязательно нужно сделать активным свеженастроенный прокси!) и проверить что открывается все что нужно через прокси, зайти на https://ifconfig.me/ и проверить ip (должен быть ip, вашего впн провайдера) если работает - жмем Install Sing-box permanently, будет установлен патч, который поможет Sing-box запускаться после перезагрузки роутера.

Шаг 4: Настройка DNS

Можно конечно роутить все через sing-box, но в таком режиме скорость будет очень невысокая, у меня получалось около 80 Мбит, поэтому мы пойдем другим путем, а именно настроим гибкий роутинг, для этого нужно установить DNS сервер, в нашем случае это dns-box, он умеет создавать при старте ipset с ttl, понимать что есть запрос dns на домены из конфиг файла и положить ip адреса с TTL из ответа DNS сервера в ipset c ttl, в следствии чего чего после того как ttl истечет, ip адрес будет удалялен из ipset, что гораздо более здоровая практика, позволяющая достичь высокой скоррости работы без сбоев, чем просто добавление ip адреса "навечно" в ipset, как это умеет делать например dnsmasq. Таким образом мы можем роутить только нужные нам домены через sing-box, остальные будут проходить через вашего провайдера, как было и до этого. Минимальный конфиг для dns-box уже готов, все что нужно - нажать последовательно "Install DNS box", "Start DNS box", "Install DNS box permanently"." При старте DNS box будет создавать ipset с именем vpn_domains и дообавлять туда домены из своего конфига, а также добавит в конфиг dnsmasq запись о том что все запросы нужно пересылать на dns-box.

Шаг 5: Настройка iptables

Для того чтобы sing-box мог роутить только нужные нам домены, нужно настроить iptables, чтобы он перенаправил все запросы на домены, которые находятся в ipset vpn_domains на интерфейс tun0, который поднялся при старте sing-box Все что нужно, нажать "Install Firewall Patch" На этом основная настройка завершена, можно пробовать открыть например youtube.com и убедиться, что все работает как нужно.

Шаг 6: Добавление / удаление доменов которые должны роутится в sing-box

Для добавления доменами, которые должны роутится через sing-box, нужно в конфиге dns-box добавить их в конфиг, сделать это можно 2 путями:

  1. В конфиге dns-box добавить домены в конфиг, например:
    "domain_suffix": [
      ".googlevideo.com",
      ".ytimg.com",
      ".play.google.com",
      ".youtubei.googleapis.com",
      ".ytimg.l.google.com",
      ".youtube.googleapis.com",
      ".youtube.com",
      ".youtube-nocookie.com",
      ".doubleclick.net",
      ".ggpht.com",
      ".www.youtube.com",
      ".youtubekids.com"
    ]

Добавлять нужно в секцию domain_suffix именно с точкой, тогда в ipset будут добавлены все ip адреса домена googlevideo.com и всех его поддоменов. Есть второй способ, у dns-box есть rest api, через который можно добавлять домены на лету, например добавить один домен:

curl --location 'http://192.168.31.1:8090/suffixes' --header 'Content-Type: application/json' --data '.sagernet.org'

или список

curl --location 'http://192.168.31.1:8090/suffixes' --header 'Content-Type: application/json' --data '.sagernet.org
.rutor.is
.googlevideo.com'

Удалить

curl --location --request DELETE 'http://192.168.31.1:8090/suffixes' --header 'Content-Type: application/json' --data '.googlevideo.com'

Также можно это делать через postman или другие подобные утилиты, Написал плагин к браузеру, лежит в репо https://github.com/crazytypewriter/rd15tool/tree/main/chrome_plugin максимально простой, ставится с диска.