Абыходзім лічбавы мур для хатняй лабараторыі

Абыходзім лічбавы мур для хатняй лабараторыі

У сучасным інтэрнэце геаграфічнае становішча часта вызначае ваш доступ да лічбавых паслуг. Тое, што яшчэ ўчора было даступна проста па спасылцы: папулярныя нейрасеткі (напрыклад, Gemini ці ChatGPT), некаторыя спартыўныя сэрвісы, праграмнае забеспячэнне, ці нават пэўныя антывірусныя прадукты — сёння могуць сустрэць вас халодным паведамленнем: "Недаступна ў вашым рэгіёне".

У гэтым артыкуле разгледзім просты спосаб для забеспячэння доступу да такіх сэрвісаў у вашай хатняй лабараторыі і за яе межамі для мабільных прылад.

Інструменты

Для здзяйснення плану нам патрэбны:

  1. VPS сервер у краіне, дзе няма абмежаванняў для большасці недаступных сэрвісаў; Мы ў прыкладзе выкарыстоўваем сэрвер на Ubuntu 22.04;
  2. Уласны DNS-сэрвер для хатняй інфраструктуры (напрыклад AdGuardHome); Але можна выкарыстоўваць любы метад атрымання IP па даменам, у тым ліку проста дадаць патрэбныя адрасы сэрвісаў якія не працуюць у hosts.

Увага!

Само сабою ваш VPS павінен прайсці стартавыя налады, на якіх мы не будзем спыняцца і адыходзіць ад тэмы. Нагадваем, што невыкананне патрабаванняў бяспекі можа прывесці да блакавання сэрвера ці да нанясення шкоды іншым.

Наладжваем nginx

Усталёўваем nginx з модулям ngx_stream_core_module, які дапаможа нам праксіраваць трафік на аснове SNI.

Выконваем каманды:

apt update

apt install nginx

Адкрываем канфігурацыйны файл:

nano /etc/nginx/nginx.conf

І дадаем пасля блока http наступную кафігурацыю:

stream { 
    log_format proxy '$remote_addr [$time_local] ' 
                     '$protocol $status $bytes_sent $bytes_received ' 
                     '$session_time "$ssl_preread_server_name"'; 
 
    access_log /var/log/nginx/stream-access.log proxy; 
    error_log /var/log/nginx/stream-error.log; 
 
    server { 
        resolver 1.1.1.1 ipv6=off; 
        listen 443; 
        ssl_preread on; 
        proxy_pass $ssl_preread_server_name:443; 
        proxy_connect_timeout 10s; 
        proxy_timeout 30s; 
    } 
}

nginx.conf

Замест 1.1.1.1 у дзясятым радку вы можаце пазначыць IP любога публічнага DNS-рэзолвера, які вам падабаецца. Мы будзем выкарыстоўваць для прыклада IP Cloudflare.

Захоўваем файл і правяраем што з ім няма праблем:

nginx -t
nginx -s reload

Калі ўсё запусцілася, то наш VPS ужо можна выкарыстоўваць праз даданне канфігурацыі ў файл hosts. На дадзены момант любы трафік які будзе прыходзіць на наш сэрвер будзе перанакіроўвацца на той сэрвіс, які нам патрэбны.

Наладжваем AdGuardHome

У вашым сэрверы трэба дадаць наладу якая будзе прымусова накіроўваць увесь трафік на заблакаваныя дамены праз наш VPS сэрвер.

У AdGuardHome трэба выбраць Фільтры>Карыстальніцкія правілы фільтрацыі і дадаць запісы з патрэбнай колькасцю даменаў (у прыкладзе пазначаны дамены для працы Gemini, ChatGPT і Strava):

||gemini.google.com^$dnsrewrite=NOERROR;A;192.168.1.1
||googleapis.com^$dnsrewrite=NOERROR;A;192.168.1.1
||apis.google.com^$dnsrewrite=NOERROR;A;192.168.1.1
||labs.google^$dnsrewrite=NOERROR;A;192.168.1.1
||openai.com^$dnsrewrite=NOERROR;A;192.168.1.1
||api.openai.com^$dnsrewrite=NOERROR;A;192.168.1.1
||auth0.openai.com^$dnsrewrite=NOERROR;A;192.168.1.1
||chat.openai.com^$dnsrewrite=NOERROR;A;192.168.1.1
||chatgpt.com^$dnsrewrite=NOERROR;A;192.168.1.1
||strava.com^$dnsrewrite=NOERROR;A;192.168.1.1

Дзе IP 192.168.1.1 трэба замяніць на IP вашага VPS сэрвера. Ну а з наладжаным шыфраваннем атрымаць доступ па DoT можна з мабільных прылад.

Вынікі

Такім чынам у нас атрымалася наладзіць доступ да сэрвісаў якія абмяжоўваюць доступ без неабходнасці ўсталявання дадатковых праграм. Такі метад зручна выкарыстоўваць на ўсіх хатніх прыладах адначасова, калі яны працуюць з DNS праз ваш роўтар, у якім пазначаны AdGuardHome як пераважны DNS-рэзолвер.

Прыклад працуючага сайта, на які атрымалася зайсці праз праксіраванне праз DNS