Бывает, что YouTube без тормозов хочется посмотреть на телевизоре. И если это телевизор на Android (либо с Android-приставкой), то тут на помощь приходят ByeDPIAndroid или PowerTunnel. Но что делать, если в наличии какой-нибудь Smart TV не на Android (например, какой-нибудь LG или Samsung)?

Очевидным решением тут будет модификация трафика на роутере. Но при всех преимуществах такой вариант может не подойти по разным причинам:

  • не на каждый роутер можно установить zapret;

  • не каждый человек обладает для этого нужными навыками;

  • не у всех есть желание разбираться в том, как это делается и т. д.

Некоторые роутеры также прямо в родной прошивке поддерживают подключение через прокси или VPN. Но такая аппаратура есть далеко не у всех, а ютубчик смотреть всё равно хочется. А вот покупать новый роутер — не особо.

В итоге в цепочке ТВ → роутер → ПК в нашем распоряжении остаётся компьютер. Вот им мы и займёмся.

Статья ориентирована на обычных людей, не обладающих специальными техническими навыками, рассматривать буду именно компьютер на ОС Windows.

Сразу скажу, что если вас устроит вариант раздачи VPN с компьютера на телевизор, то это делается довольно просто.

Как раздать VPN с компьютера

Этот способ будет работать только в том случае, если у вас именно полноценный VPN (а не прокси, в названии которого есть «VPN»).

Чтобы поделиться им с телевизором:

  1. Нажимаете Пуск → пишете «Просмотр сетевых подключений» → Enter.

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

  3. На вкладке Доступ ставите галочку и выбираете ваше подключение к интернету.

  4. На телевизоре в качестве шлюза прописываете IP-адрес вашего компьютера.

Чтобы у телевизора был доступ в интернет и при отключённом VPN тоже, заходите в редактор реестра (Пуск → пишете regedit → Enter) и в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters в параметре IPEnableRouter ставите 1. После этого перезагружаете компьютер.

Если же вы хотите, чтобы на телевизор поступал трафик через GoodbyeDPI, то понадобится установка прокси-сервера. И если ваш телевизор поддерживает работу через прокси, то этого будет достаточно — просто запускаете прокси и прописываете в настройках телевизора в качестве прокси-сервера IP-адрес компьютера и порт сервера.

Но не каждый телевизор поддерживает работу через прокси, поэтому тут понадобится кое-что ещё.

Разработчик GoodbyeDPI предложил схему с поднятием на компе DNS-сервера + прокси со сниффингом. Это рабочее решение, и если оно вам подходит, можно воспользоваться им.

Но есть и альтернативный вариант без использования DNS-сервера.

Как и в предыдущем случае, нам понадобится установить прокси-сервер. Можно выбрать любой, в данном примере буду использовать 3proxy.

Разархивируете скачанный архив и в папке bin64 создаёте текстовый файл config.txt с таким содержимым:

auth iponly
allow * 127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12 * *
log
maxconn 1000
socks -e192.168.0.102

В данном случае 192.168.0.102 будет IP-адресом, через который ваш прокси будет отправлять трафик в роутер. Вы можете его изменить в соответствии с IP-адресацией вашего роутера, это должен быть просто свободный IP-адрес, который не используется другими устройствами. В моём случае:

  • 192.168.0.1 — это сам роутер.

  • 192.168.0.100 — это телевизор.

  • 192.168.0.101 — это компьютер.

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

Если вам повезло, и у вас есть 2 гнезда на сетевой карте (или 2 сетевых карты), то вы можете не городить огород, а просто соединить второе гнездо кабелем с роутером и прописать второму подключению этот свободный адрес. То же самое можно сделать, если есть Wi-Fi-адаптер.

Если же гнездо у вас всего одно, а Wi-Fi-адаптера нет, то придётся немного повозиться.

А зачем вообще нужно второе подключение?

Спрашивается, а зачем заводить какой-то новый IP-адрес? Почему бы не отправлять трафик от прокси на уже существующее подключение (в моём случае - на 192.168.0.101)?

Дело в том, что мы будем весь трафик с существующего подключения перехватывать и направлять в наш прокси внутри компьютера. И если этот трафик потом снова будет попадать в то же самое подключение, то получится петля, и в итоге наружу этот трафик попасть не сможет.

Но в Windows есть возможность прописать одному подключению сразу 2 IP-адреса. И тогда петли уже быть не должно. Казалось бы, дело в шляпе! Но есть нюанс…

Чтобы трафик от телевизора шёл через компьютер, нужно в телевизоре прописать IP-адрес компьютера в качестве шлюза. Для перехвата трафика и перенаправления его в прокси у подключения должно быть включено перенаправление. И включается оно сразу для всех IP-адресов, прописанных на этом подключении. Поэтому из прокси трафик, который должен был идти наружу, тоже будет перенаправляться… обратно в прокси. И мы снова получим петлю.

Значит, дополнительное подключение всё-таки нужно. К сожалению, в Windows нет возможности просто взять и создать дополнительное подключение для сетевой карты, у которой физически гнездо всего одно. Но можно сделать виртуальное (работает только в Windows 10 и 11, на семёрке можно использовать вышеупомянутый метод с DNS-сервером).

Делается это так:

  1. Пуск → пишете «Включение или отключение компонентов» → Enter. В открывшемся окне нажимаете на плюсик рядом с Hyper-V и ставите галочки напротив «Службы Hyper-V» и «Средства управления Hyper-V»:

Включаем Hyper-V
Включаем Hyper-V
  1. Нажимаете ОК и перезагружаете компьютер.

  2. Пуск → пишете Hyper → Enter. В открывшемся окне справа нажимаете «Диспетчер виртуальных коммутаторов»:

    Запускаем «Диспетчер виртуальных коммутаторов»
    Запускаем «Диспетчер виртуальных коммутаторов»

В первый раз открываться может пару минут…

  1. Когда новое окно загрузилось, нажимаете «Создать виртуальный коммутатор»:

Создаём виртуальный коммутатор
Создаём виртуальный коммутатор
  1. Придумываете имя новому подключению. В выпадающем меню выбираете вашу сетевую карту и ставите галочку:

Имя, сетевая карта, галочка
Имя, сетевая карта, галочка
  1. После нажатия ОК система вас предупредит, что компьютер на некоторое время может потерять доступ в интернет. Соглашаетесь.

  2. Теперь у вас в «Сетевых подключениях» должно появиться новое подключение с тем же IP-адресом, который раньше был у вашего физического интерфейса (в моём случае — 192.168.0.101). Меняете его вручную на новый, свободный (у меня — 192.168.0.102).

    У меня виртуальное подключение называется vEthernet (Twin), вместо «Twin» будет ваше название:

    Новое виртуальное подключение
    Новое виртуальное подключение

    Может ещё появиться Default Switch, но он нам не понадобится.

    Как поменять IP-адрес
    1. Нажимаете правой кнопкой на сетевое подключение, которому хотите поменять IP-адрес. Выбираете Свойства.

    2. Нажимаете двойным щелчком по строке «IP версии 4».

    3. Выбираете «Использовать следующий IP-адрес» и вписываете нужный адрес.

  3. Также заходите в свойства основного подключения (которое старое) и ставите там галочку «IP версии 4»:

    Включаем IP версии 4
    Включаем IP версии 4

Теперь можно запускать наш прокси-сервер. Открываете папку с 3proxy, переходите в bin64, в адресной строке проводника пишете cmd и нажимаете Enter:

Запускаете командную строку
Запускаете командную строку

В открывшейся командной строке запускаете команду:

3proxy config.txt

Если всё хорошо, то появится подобная строка:

240905153434.902 1080 00000 - 0.0.0.0:0 192.168.0.102:0 0 0 0 Accepting connections [8212/2864]

Это значит, что прокси-сервер запущен. Теперь надо как-то направить туда весь трафик. В этом нам поможет программа SSTap.

Устанавливаете её, запускаете. Читаете дисклеймер от автора и соглашаетесь взять на себя всю ответственность. После этого нажимаете на блеклый зелёный плюсик рядом с первым выпадающим списком и выбираете «Add a SOCKS5 proxy…»:

Добавляем SOCKS5-прокси
Добавляем SOCKS5-прокси

В качестве Server IP вписываете 127.0.0.1, в качестве порта - 1080.

Можно сразу и галочку поставить
Можно сразу и галочку поставить

После сохранения проверяете соединение — нажимаете на значок молнии. Если всё хорошо, то оба теста будут зелёными:

И TCP, и UDP работает
И TCP, и UDP работает

После нажатия на кнопку CONNECT весь трафик на компьютере пойдёт через SSTap в ваш 3proxy, а оттуда — наружу через виртуальное подключение. В первый раз соединение может занять некоторое время...

Осталось только сделать так, чтобы через SSTap шёл ещё и трафик нашего телевизора.

Если снова заглянуть в «Сетевые подключения», то там будет ещё одно новое соединение с названием SSTAP 1. Если трафик, поступающий на наш основной интерфейс, перенаправлять туда, то он попадёт в наш прокси.

Это делается так:

  1. Нажимаете правой кнопкой по соединению SSTAP 1, выбираете «Свойства», потом вкладку «Доступ».

  2. Там ставите галочку, в выпадающем списке выбираете ваше основное подключение к интернету и жмёте ОК.

    Разрешаем перенаправление из Ethernet в SSTAP 1
    Разрешаем перенаправление из Ethernet в SSTAP 1

После нажатия ОК система вас предупредит, что у основного подключения IP-адрес будет изменён на 192.168.137.1 — нам это не нужно, но всё равно соглашаемся (иначе перенаправление не включится). После этого заходите в свойства основного подключения и меняете IP-адрес на тот, который был изначально:

У меня изначально был 192.168.0.101 — его и вписываю
У меня изначально был 192.168.0.101 — его и вписываю

Теперь нужно прописать на телевизоре в качестве шлюза IP-адрес компьютера (в моём случае - 192.168.0.101) и… можно смотреть YouTube!

Ах да, чтобы YouTube не тормозил, на компьютере должен быть запущен GoodbyeDPI. Чтобы не запускать его постоянно вручную, можно его сделать службой — для этого надо в папке с программой нажать правой кнопкой на service_install_russia_blacklist.cmd и выбрать «Запуск от имени администратора».

То же самое можно проделать и с 3proxy — для этого нужно запустить его от имени администратора (в Windows 10 правой кнопкой на bin64 с зажатым Shift → «Открыть окно команд») такой командой:

3proxy --install config.txt

Только перед этим закройте его, если он у вас уже запущен. Если Windows SmartScreen выдал предупреждение, то надо нажать «Подробнее» и «Выполнить в любом случае».

В настройках SSTap тоже можно сделать автозагрузку при запуске компьютера и автоматическое подключение к прокси.

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

Если нужно, чтобы телевизор работал при отключённом SSTap

При отключении SSTap у телевизора будет пропадать доступ в интернет. Чтобы этого не происходило:

  1. Заходите в редактор реестра (Пуск → пишете regedit → Enter) и в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters в параметре IPEnableRouter ставите 1.

  2. В командной строке от имени администратора выполняете команду:
    netsh int ipv4 set int int="vEthernet (Twin)" forwarding=disabled

    Вместо «Twin» впишите название вашего виртуального подключения.

  3. Перезагружаете компьютер.

На этом всё! Если что-то не очень понятно, спрашивайте в комментариях. Также если у кого-то получилось добиться нужного результата более простыми способами — делитесь в комментах. Чем больше способов, тем лучше.

Комментарии (19)


  1. MAXH0
    06.09.2024 14:41

    Прецедент Алешандри ди Мораиса Вас не пугает? Догоним и перегоним Бразилию!


    1. Ingref Автор
      06.09.2024 14:41
      +4

      Я просто пытаюсь совладать с устаревающими кэширующими серверами всяких там гуглов заморских... А то всё нам палки в колёса вставляют, ироды!


      1. MAXH0
        06.09.2024 14:41

        Тогда не упоминайте слова из трех букв в суе!!!


    1. crawlingroof
      06.09.2024 14:41

      "когда заблокируют, тогда и приходите", а пока, мериемся скоростями (


  1. KiRa937
    06.09.2024 14:41

    А есть рецепт для NAS-сервера с Докером? У меня настроен VPS с VLESS и дома жужжит NAS от Synology с парой образов на Докере через докер-композ. Хотелось бы узнать надежный клиент, чтобы раздавал локально прокси. Ну и заодно как тот же телевизор через него подключить.


    1. Ingref Автор
      06.09.2024 14:41

      1. Создаёте tun-интерфейс, прописываете ему айпишник.

      2. Прописываете дефолтный маршрут через этот интерфейс с метрикой 1.

      3. Прописываете ещё один дефолтный маршрут через основной физический интерфейс (в интернет), но в отдельной таблице маршрутизации.

      4. Запускаете tun2socks и направляете весь трафик через tun-интерфейс в локальный прокси.

      5. С помощью uidrange прописываете правило, чтобы весь исходящий трафик от пользователя с определённым id шёл через физический интерфейс (через отдельную таблицу маршрутизации).

      6. Запускаете 3proxy от имени этого пользователя.

      Примерно так:

      #!/bin/bash
      sudo ip tuntap add mode tun dev tun0
      sudo ip addr add 10.10.10.10/24 dev tun0
      sudo ip link set dev tun0 up
      sudo ip route del default
      sudo ip route add default via 10.10.10.10 dev tun0 metric 1
      sudo ip route add default via 192.168.0.100 dev eth0 metric 1 table 110
      tun2socks -device tun0 -proxy socks5://127.0.0.1:1080
      sudo ip rule add uidrange 1001-1001 lookup 110 pref 29000
      pkexec --user 3proxy_user ./3proxy ./config.txt

      Алгоритм взял отсюда. В телевизоре просто прописывается шлюзом айпишник, который прописан у NAS на физическом интерфейсе.

      Альтернативный вариант - через поднятие DNS-сервера + XRay. Тогда в телевизоре надо будет айпишник NAS прописать в качестве DNS.


      1. KiRa937
        06.09.2024 14:41

        Не уверен, что первый вариант взлетит на Synology. Там нужно именно что-то на докере. А вот во втором вижу образ с Xray. Понял как его сделать для DNS, но можно ли через него и классический прокси сделать? Ряду моих приложений в настройках нужен именно прокси - HTTP или Socks.


        1. Ingref Автор
          06.09.2024 14:41

          Да, можно. Вот конфиг для Socks:

          {
            "inbounds": [
              {
                "listen": "192.168.0.100",
                "port": 1080,
                "protocol": "socks",
                "tag": "socks"
              },
                "sniffing": {
                  "enabled": false,
                }
            ],
            "outbounds": [
              {
                "protocol": "vless",
                "settings": {
                  ...
                }
              }
            ]
          }


          1. KiRa937
            06.09.2024 14:41

            Ага, понял. А если я в listen пропишу 192.168.0.0, то тогда к проксе смогут подключиться только устройства в моей локальной сети, верно?


            1. Ingref Автор
              06.09.2024 14:41

              В listen прописывается айпишник интерфейса, который будет прослушивать XRay. Если нужно ограничить устройствами внутри сети, то это прописывается в "routing" → "rules":

              {
                "inbounds": [
                    ...
                ]
                "outbounds": [
                    ...
                ]  
                "routing": {
                  "rules": [
                    {
                      "type": "field",
                      "port": "1080",
                      "outboundTag": "proxy",
                      "network": "tcp",
                      "source": [
                          "192.168.0.0/24",
                          "192.168.1.0/24"
                      ],
                      "inboundTag": [
                          "in"
                      ]
                    }
                  ],
                  "domainStrategy": "IPIfNonMatch"
                }
              }


              1. KiRa937
                06.09.2024 14:41

                Буду пробовать настраивать. Спасибо!


  1. NotSlow
    06.09.2024 14:41
    +2

    Статья ориентирована на обычных людей

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

    Обычным людям нужно просто воткнуть в розетку волшебную коробочку и чтоб все стало хорошо как прежде. И чтобы еще и недорого.

    Сейчас какраз занимаюсь подобным проектом. Суть в том чтобы подкинуть в домашнюю сеть самую дешевую "малинку". И она будет дирижировать траффик - основной шел как обычно через имеющийся домашний роутер, а какие захотят домены чтоб прогонялись через слово_из_3х_букв. Ну и конечно абсолютно любое устройство сможет этим пользоваться. Просто подключился к домашнему wifi (или кабелем) и больше ничего не нужно.

    По цене выйдет относительно приемлимо: ~2тыс за любую малинку на авито и плюс ~100р/мес за то самое окно в Париж.

    Уже все опробовано и отлично работает. Сложность лишь в том чтоб все это максимально упростить для конечного пользователя. Нужно максимально автоматизировать, чтоб пользователю как можно меньше пришлось вводить страшных комманд и всяких цифр непонятных (ip адресов).


    1. Ingref Автор
      06.09.2024 14:41

      Это отличный вариант! Сам размышлял на эту тему. Тут ещё на хабре недавно вышел цикл статей про ультрабюджетный Мурмулятор (Raspberry Pi Pico) - вот думал, можно ли на чём-то подобном такую штуку сделать... Желательно, чтобы оно и само могло трафик модифицировать, и отправлять нужные домены на три буквы.


      1. NotSlow
        06.09.2024 14:41

        Сделать можно все что угодно, вопрос лишь в UX

        Чтобы от пользователя нужно было минимум взаимодействия.

        К примеру что делать с vps? Допустим ткнуть пользователю пальцем в несколько подобранных вариантов, расписать кратко куда там жать, чтоб он только зашел, оплатил, получил данные vps и все. Дальше нужно за него все полностью там настроить от и до. Заставлять его вводить простыни комманд (и иметь огромный шанс, что он что-то запорет) не вариант.

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

        Сложностей вроде никаких, просто довольно много работы. И плюс оформлено все должно быть в конечном итоге красиво в виде сайта, а не тяп-ляп.

        Надеюсь сильно не затянется, позже что-нть да рожу тут в виде статьи.

        Еще сильно осложняется тем, что малин бывает много разных версий, могут быть и альтернативы (orange pi, tinker и т.д.). Домашних роутеров есть огромнейший зоопарк. От роутера желательно иметь доступ к его DHCP, чтоб не пришлось на каждом клиенте вручную вводить ip малины для шлюза и dns. И использовать wifi малины для подключения клиентов - тоже не вариант, т.к. он значительно хуже любого домашнего роутера.

        А сделать нужно максимально универсальное решение, чтоб работало почти у всех.


        1. Ingref Автор
          06.09.2024 14:41

          Как вариант, можно просто в каждом экземпляре прописывать данные отдельного (заранее настроенного) VPS, и включать этот отдельный VPS в цену устройства. Ну либо, если клиент не хочет, то продавать без данной функции, просто с модификатором трафика на борту, и всё. Тогда ему вообще ничего настраивать не надо будет.

          А вот с DHCP сложнее, конечно... Есть коробки с двумя Ethernet-портами, но они дороже.


          1. NotSlow
            06.09.2024 14:41
            +1

            Цели продавать что-то (софт или "коробки") не стоит. Можно проморгать момент когда это станет наказуемо (может даже уже).

            Полностью opensource, чтоб кто угодно смог купить себе любую raspbery, nuc, itx или использовать уже имеющееся что-угодно, хоть древний ПК любой. Взять любой какой захочет самый дешевый vps. Установить с github, настроить под себя и пользоваться.

            Потому как то что сейчас - это жесть...

            Кто-то осилит все эти анти-dpi и гордо пользуется. Но далеко не все могут. Кто-то просто платит за готовое решение из 3х букв на телефоне и... приходится постоянно включать/выключать его и нет возможности использовать на каких-то хитрых устройствах типа телевизора старенького.

            Цель сделать проще и гораздо удобней.


  1. AADogov
    06.09.2024 14:41

    Кто-нибудь напишите, такое же решение только на Ubuntu. 3 день уже мучаюсь.


    1. Ingref Автор
      06.09.2024 14:41

  1. anonymous
    06.09.2024 14:41

    НЛО прилетело и опубликовало эту надпись здесь