Как пользоваться заблокированными для России онлайн-сервисами

Этот пост навеян грустными обстоятельствами, в новостях сообщили, что очередной полезный сервис перестанет предоставлять услуги на территории России — это Notion. К сожалению, не всегда удается найти достойную альтернативу нужному сервису, или миграция из одного сервиса в другой чрезмерно сложна и трудоемка, а то и вообще невозможна.

Хочу поделиться опытом, как вернуть себе доступ и продолжать пользоваться любимыми сервисами вопреки запретам.

Необходимые средства и инструменты

Во-первых, нам понадобится устройство, на которое мы установим sing-box, это может быть старый ноутбук, мини-компьютер или виртуальная машина с минимальными ресурсами. Я опробовал два варианта: виртуальная машина с Debian 12 в Proxmox и Rapsberry pi 4, оба варианта работают отлично, можно выбирать любой из понравившихся.

Во-вторых, нужен арендованный VPS сервер в Европе с установленным proxy. Сам пользуюсь услугами хостера HSHP, из плюсов выделю низкую стоимость аренды и стабильную работу сервиса.

В-третьих, нужен любой терминал.

Подготовительные работы

Предполагаю, что у тебя уже установлен Debian 12 (Ubuntu тоже подойдет). Обновим установленную ОС.

apt update
apt upgrade

На сервере необходимо включить IP Forwarding, иначе сервер не сможет раздавать интернет. Откроем файл /etc/sysctl.conf в любом текстовом редакторе и в конец вставим строку, а после — перезапустим службу для применения изменений.

sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
sudo sysctl -p

Теперь настроим работу межсетевого экрана и сохранения внесенных правил в iptables.

sudo iptables -t nat -A PREROUTING -s IP_ПК/32 -p tcp -j REDIRECT --to-port 100
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo systemctl enable netfilter-persistent
sudo systemctl start netfilter-persistent

Последним шагом выполним перезагрузку. На этом предварительная настройка будет завершена и можно переходить к следующему шагу.

Установка и настройка Sing - box

Приступим к установке proxy по официальной инструкции от разработчиков.

sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
sudo chmod a+r /etc/apt/keyrings/sagernet.asc
echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/sagernet.asc] https://deb.sagernet.org/ * *" | \
  sudo tee /etc/apt/sources.list.d/sagernet.list > /dev/null
sudo apt-get update
sudo apt-get install sing-box # or sing-box-beta
💡
Конфиг собирал из разных статей и формумов, он не является тем идеальным вариантом, но надеюсь, что у тебя заработает без проблем.

Пару слов о конфиге.

На входе мы слушаем 100 порт и перенаправляем его на наш proxy, это правило мы прописывали в iptables, также создаем виртуальное сетевое устройство (TUN).

{
  "type": "tun",
  "interface_name": "tun0",
  "domain_strategy": "ipv4_only",
  "inet4_address": "172.16.250.1/30",
  "mtu": 1500,
  "auto_route": true,
  "strict_route": false,
  "sniff": true,
  "sniff_override_destination": true
},
{
  "type": "redirect",
  "tag": "redirect-in",
  "listen": "0.0.0.0",
  "listen_port": 100,
  "domain_strategy": "ipv4_only",
  "sniff": true,
  "sniff_override_destination": true
}

На выходе будем использовать транспорт vless, но ты можешь взять любой другой из поддерживаемых протоколов (Shadowsocks, WireGuard, Hysteria и многих других).

{
      "type": "vless",
      "tag": "vless-out",
      "server": "",
      "server_port": ,
      "uuid": "",
      "flow": "xtls-rprx-vision",
      "network": "tcp",
      "tls": {
          "enabled": true,
          "insecure": false,
          "server_name": "google.com",
          "utls": {
              "enabled": true,
              "fingerprint": "random"
          },
          "reality": {
              "enabled": true,
              "public_key": "",
              "short_id": ""
          }
      }
  }

В конце используем блок правил, который позволит нам ходить на недоступные из РФ ресурсы через наш VPS, а на российские сервисы — напрямую.

Также на время отладки рекомендую включить логирование, это нужно для понимания, с каких устройств на какие адреса идет подключение.

"log": {
    "disabled": false,
    "level": "trace",
    "output": "/etc/sing-box/sing-box.log",
    "timestamp": true
  }

Полный конфиг будет выглядеть так.

{
  "log": {
    "disabled": true,
    "level": "trace",
    "output": "/etc/sing-box/sing-box.log",
    "timestamp": true
  },
  "dns": {
    "servers": [
      {
        "tag": "google",
        "address": "https://8.8.8.8/dns-query"
      },
      {
        "tag": "local",
        "address": "192.168.1.1",
        "detour": "direct"
      },
      {
        "tag": "block",
        "address": "rcode://success"
      }
    ],
    "strategy": "ipv4_only"
  },
  "inbounds": [
    {
			"type": "tun",
			"interface_name": "tun0",
			"domain_strategy": "ipv4_only",
			"inet4_address": "172.16.250.1/30",
			"mtu": 1500,
			"auto_route": true,
			"strict_route": false,
			"sniff": true,
			"sniff_override_destination": true
		},
		{
			"type": "redirect",
			"tag": "redirect-in",
			"listen": "0.0.0.0",
			"listen_port": 100,
			"domain_strategy": "ipv4_only",
			"sniff": true,
			"sniff_override_destination": true
		}
  ],
  "outbounds": [
    {
      "type": "vless",
      "tag": "vless-out",
      "server": "",
      "server_port": ,
      "uuid": "",
      "flow": "xtls-rprx-vision",
      "network": "tcp",
      "tls": {
          "enabled": true,
          "insecure": false,
          "server_name": "google.com",
          "utls": {
              "enabled": true,
              "fingerprint": "random"
          },
          "reality": {
              "enabled": true,
              "public_key": "",
              "short_id": ""
          }
      }
  },
		{
			"type": "direct",
			"tag": "direct"
		},
		{
			"type": "block",
			"tag": "block"
		},
    {
			"type": "dns",
			"tag": "dns-out"
		}
  ],
  "route": {
    "rules": [
      {
        "protocol": "dns",
        "outbound": "dns-out"
      },
      {
        "ip_is_private": true,
        "outbound": "direct"
      },
      {
        "domain_suffix": ".chatgpt.com",
        "outbound": "vless-out"
      },
      {
        "rule_set": [
          "geoip-ru",
          "geosite-ru"
        ],
        "outbound": "direct"
      }
    ],
    "rule_set": [
      {
        "type": "remote",
        "tag": "geoip-ru",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/Chocolate4U/Iran-sing-box-rules/rule-set/geoip-ru.srs"
      },
      {
        "type": "remote",
        "tag": "geosite-ru",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/Chocolate4U/Iran-sing-box-rules/rule-set/geosite-category-ru.srs"
      }
    ],
    "final": "vless-out",
    "auto_detect_interface": true
  }
}

В конце сделаем автозапуск сервиса sing-box и запустим сервис.

sudo systemctl enable sing-box
sudo systemctl start sing-box

Настройка оборудования

Sing - box мы настроили, он готов к работе. Теперь в настройках параметров сети твоего устройства (ПК, ТВ и т.д.) необходимо прописать статический ip адрес, а в качестве шлюза указать адрес устройства или виртуальной машины с установленным sing - box, после этого можно проверять скорость работы YouTube и других сайтов.

Также отмечу важный момент, все государственные порталы и российские сайты будут работать в штатном режиме без необходимости изменения настроек сети.

Заключение

Спасибо, что дочитал статью до конца, надеюсь, было полезно! P.S. Поделись с друзьями и знакомыми, тогда я буду понимать, что такие материалы интересны людям.