Надо было мне разобраться получше с iptables и ansible, а для этого нужна задачка. Задачка была выбрана такая: поднять свой VPN сервер с возможностью резки рекламы и прочего spyware.

Суть происходящего при резке рекламы с помощью DNS сервера состоит в том, что когда клиент спрашивает сервер какой IP адрес сопоставлен имени хоста, то DNS сервер отвечает ему 0.0.0.0 В итоге клиент ходит сам к себе и быстро получает отказ, так что не пользуется для этого модемом связи в случае с телефоном. Что экономит батарейку не просто на процент, а при моем режиме использования телефона время автономной работы выросло с 8-10 часов до 23.5. Специально засекал и был мягко говоря удивлен. Как показала практика 85% запросов от телефона это spyware.

Ansible был выбран потому, что для настройки всего даже на настраиваемый сервер заходить не надо, просто нужен доступ по ssh к нему. После настройки конфиги для подключения к VPN будут лежать в папке с плейбуком. Да и сам запуск это одна команда. Не люблю я запоминать, что я там пять лет назад настроил и Ansible для того что бы этого не делать идеален, не говоря уже о прочих его достоинствах. Запустил у себя на ноуте плейбук, он все тебе на сервере настроил, потом отсканил QR код на телефоне, работает. Конечно подключить можно не только телефон, конфиги делаются и просто текстовые для любого клиента.

В качестве DNS сервера с возможностью резать телеметрию и прочую гадость был выбран Pi-hole DNS. Просто потому, что он очень не требователен к ресурсам и мне хватает на амазоне t3.nano ноды, которую мне дали бесплатно на год. При этом я видел на DigitalOcean готовый дрополет Pi-hole VPN, но он прибит к этому провадйеру, а мой плейбук я пробовал уже на двух разных и он просто пашет, плюс там видно все, что он делает. Плюс ко всему при установке он закачивает более 5млн бан записей в DNS что бы не искать их потом.

VPN же был выбран Wireguard, так как он прост как палка и настраивается соответственно очень просто.

В итоге порядок действий:

  1. Сделать себе VPS где-то с ubuntu 22.04. Может и на другом заработает деб дистре, не проверял.

  2. Сделать доступ на нем по ssh.

  3. Открыть нужные порты на брандмауре провайдера.

  4. Запустить плейбук задав пару настроек (на гите все описано). Я это с ubuntu делаю, не знаю где еще будет работать.

  5. Подрубить телефон по QR коду.

  6. Наслаждаться.

Сам плейбук опубликован тут

Я в очередной раз экспериментами сломал VPN, так как у меня есть возможные планы по развитию плейбука небольшому. Перед поездкой на выходные надо было поднять снова. Минута времени и все готово. Старый VPS я просто прибил и поднял пустой, задал в настройках новый адрес и все. В поездке очень полезно было то, что телефон не садится пока в кармане лежит. Может кому пригодится. Ну и в целом личный VPN сервер штука не бесполезная ;)

P.S. от статистики же в 85% запросов в блоке я просто был в шоке небольшом. Это не сразу так будет, а постепенно, потому, что spyware долбит все время, а вы нет. Особо злобный в этом плане branch.io Когда же мне надо что то разблочить, то захожу в админку и добавляю в вайтлист домен. Таких у меня пока пять штук всего, которые были заблокированы, а мне не надо их блочить.

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


  1. atrost
    22.08.2023 19:36

    Для себя выбрал вариант автоматизации - tasker

    Разблокировка устройства - запуск VPN, отключён экран более 10 минут - остановка.

    Через 4 часа остановка синхронизации, её включение при включении экрана. При этом, push будут работать через google push service. Получаем почти iPhone по живучести :)


    1. 3draven Автор
      22.08.2023 19:36

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


      1. atrost
        22.08.2023 19:36

        Я долго экспериментировал с adguard, могу заверить, что в режиме VPN (это не совсем VPN) телефон расходует заряд сильно больше*. А некоторые приложения, не получив ответ от сервера, начинают яростно долбиться не раз в час (когда был интернет), а раз в 5 минут, попутно пробуждая систему.

        При этом они отслеживает два флага в системе: включена ли синхронизация и есть ли сеть. Если какого то нет, то они замирают.

        *у меня установлено 500 приложений.


        1. 3draven Автор
          22.08.2023 19:36

          Мне кажется вы не знаете как работает эта схема. Я кратко описал как мне кажется понятно. Но спорить не стану, лень мне.


          1. atrost
            22.08.2023 19:36

            В adguard есть штатный dns фильтр

            только эта фильтрация работает локально на устройстве


  1. Grey83
    22.08.2023 19:36
    +1

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

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


  1. nikkadim
    22.08.2023 19:36

    странно что в самой статье про pihole ни слова, только в github


    1. 3draven Автор
      22.08.2023 19:36
      +1

      Как так? :) Вы ее не читали?

      В качестве DNS сервера с возможностью резать телеметрию и прочую гадость был выбран Pi-hole DNS.


      1. nikkadim
        22.08.2023 19:36
        +1

        Виноват, не читал т.к. сам использую такую связку давно, искал в тексте pinhole , я не pi-hole


  1. anonym0use
    22.08.2023 19:36

    P.S. от статистики же в 85% запросов в блоке я просто был в шоке небольшом. Это не сразу так будет, а постепенно, потому, что spyware долбит все время, а вы нет. Особо злобный в этом плане branch.io Когда же мне надо что то разблочить, то захожу в админку и добавляю в вайтлист домен. Таких у меня пока пять штук всего, которые были заблокированы, а мне не надо их блочить.

    Поздравляем с принятием красной пилюли, продолжайте в том же духе :) Чтобы улучшить ситуацию, самый лучший способ для телефона это поставить на него кастомноую ОС, лучше GrapheneOS, также можно CalyxOS, на крайняк какой нибудь LineageOS или вообще упороться и поставить какой нибудь линукс, но к этим ОС нужно и телефон покупать на котором они могут работать.


    1. Grey83
      22.08.2023 19:36

      Ну не обязательно именно линейку: можно и AOSP или модификацию на их основе, главное чтобы были прошивки FOSS или vanilla (то есть без встроенного гугломусора).


  1. anzay911
    22.08.2023 19:36
    +1

    А Настройка -> Подключение и общий доступ -> Частный DNS сервер: dns.adguard.com чем хуже?


    1. 3draven Автор
      22.08.2023 19:36

      Тем, что в телефоне у меня ее нет, тем, что я описал полноценный впн, который можно одной командой поставить, тем, что я имею контроль над своим сервером, вайтлисты и прочее и если у меня например что то заблочено, а не надо могу отключить, тем, что если какой то спайварь пойдет напрямую на 8.8.8.8 настройка не поможет, а с впн он все равно попадет на мой резак ну и еще много чем ;)


  1. hullaballoo
    22.08.2023 19:36

    Я дополнительно рядом сажаю контейнер unbound c практически дефолтными настройками (qname-minimisation: yes), в который мапится файл конфигурации из примера отсюда: https://docs.pi-hole.net/guides/dns/unbound/


    1. 3draven Автор
      22.08.2023 19:36

      Бэком я сделал quad9 dns, он малварь опознает и режет.


      1. hullaballoo
        22.08.2023 19:36

        У вас в списках уже есть anti-malware, если не полагаться на дефолтное обновление PiHole раз в неделю, а гонять его кроном почаще - будет, как мне кажется, не хуже quad9, но quad9 тогда не будет знать про ваши запросы.

        Кстати, SNAFU в моём случае достаточно много всего ломает, так что его из всей когорты списков имеет смысл использовать осторожно.


  1. 3ycb
    22.08.2023 19:36

    3draven, у Вас опечатка в таге user_cration. Так и использовать?


  1. Zempik
    22.08.2023 19:36
    +1

    Уточните, пожалуйста, про расход батареи от постоянного подключения к vpn.