Pull to refresh

Comments 38

Проще поднять SSH-тоннель и настроить его в браузере как socks-proxy. А ещё, если твой ssh-тоннель будет принимать подключения только с localhost, его ещё никто не сможет найти.

Век живи - век учись, надо попробовать.

Мне нужен был белый IP адрес для ноутбука. Я просто взял дешёвый VPS и поднял до него Wireguard. Но не стал в него загонять весь свой трафик, а использовал только для связи между ноутбуком и сервером. На сервере просто поднял socks сервер и теперь пользуюсь им, если нужно. Весь трафик идёт внутри туннеля.
И, да. Ничего не пришлось собирать из исходников. Да и при желании можно весь трафик запихать в туннель, просто создав другую конфигурацию на клиенте.

А вот тут я описал как настраивал Wireguard: https://tavda.net/wireguard

Уже есть подтверждение блокировок wg.

Пока это работает когда сервер за рубежом

Да понятное дело, что сервер нужен за периметром чебурнета. То, что внутри, то рано или поздно прикроют. Блокировка протокола? На каком основании? Скорее всего просто блокируют публичные серверы, т.е. блокировки идут не wg, а vpn как такового.

Да и где наша не пропадала. Первый раз что-ли пути обхода разных блокировок искал? Будет необходимость, буду искать новые способы.

а что не так со squid коль есть потребность именно в прокси?

Громоздкий, наверно. Я когда его увидел, в осадок выпал от возможностей и объемов необходимой конфигурации.

возможностей много да, минимальный конфиг будет строчек 10-15 а то и меньше. ИМХО существенно проще.

Есть ещё такая штука для прокси: https://github.com/qwj/python-proxy

Тут и протоколов больше (shadowsocks если кому нужно больше скрытности), и настраивать просто.

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

есть tinyproxy, конфиг которого обычно несколько строчек, например:


Timeout 600
DefaultErrorFile "/usr/share/tinyproxy/default.html"
LogLevel Info
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
Allow 10.0.0.0/8
DisableViaHeader Yes
Port 8888

Избыточно. Есть простенькие socks прокси с минимумом настроек. Для обхода багов сети самое то.

3proxy использую уже не один год. По сравнению со squid есть один недостаток- 3proxy не кэширующий прокси. Но можно ли считать это недостатком в эпоху HTTPS? В общем забыл про squid уже.

Просто посмотрите.

Полностью поддерживаю комментатора выше, 3proxy отличный выбор из категории "запустил и забыл" (написан на C).

Для его запуска в докере, пару лет назад создал образ с entrypoint скриптом, который заведует конфигом авторизации - никакой дополнительный конфиг даже пробрасывать внутрь контейнера не надо.

навыки работы с Linux и свой сервер где нибудь за бугром. Почему бы собственно говоря не сделать свой прямой прокси?

Тогда почему ты с такими навыками просто не поднял VPN и не завернул в него нужный трафик?

VPN безусловно есть и для меня было проще использовать именно такую схему. В первую очередь требовалось выборочно обозначить сайты, на которые нужно ходить через прокси. И это очень удобно делать через браузер.

Я тоже так сделал: поднял пару прокси серверов в РФ и в Европе и настроил proxy.pac скрипт, в котором описана маршрутизация.

Например, все домены *.ru выпускать через российский прокси, *.de - через европейский и т.д. Естественно, можно указать конкретные сайты.

Этот скрипт подключил как "автоконфигурация прокси" в браузере.

Просто. Быстро. Надёжно.

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

Указанное в статье расширение делает всё тоже самое и даже больше. Нет только бесплатных прокси-серверов.

А зачем красноглазить и собирать nginx когда можно установить его несколькими командами (не скажу за другие дистрибутивы, но в Debian тот же lua модуль добавляется apt install libnginx-mod-http-lua, думаю и в других это не проблема) или еще проще - запустить его из docker на базе openresty, где уже в наличии тот же lua модуль.

  1. Не уверен насчёт наличия пакета для модуля прокси;

  2. В образе openresty этого модуля по-моему нет.

П.С. всё это надо уточнять.

Интересно, есть ли какое-либо интегрированное решение (linux), которое бы по маскам для IP и по маскам (регекспам) для dns-имён заворачивало бы трафик в разные места (интерфейсы)? Например что-то прямиком к провайдеру, что-то в vpn-туннель. Эдакий NAT вместе с DNS, только умный.

Как я понимаю, колхозить надо. Поставить DNS-прокси (форвардер/кэш) который будет сверять DNS-запросы с регекспами, и обновлять таблицу маршрутизации, чтобы запрос к этому узлу улетал в VPN, если обмен данными с этим узлом настроено отправлять в VPN. При этом браузерный DoH/DoT придется отключить, иначе никакой магии не получится. Ну и вишенка на торте — что делать, если два разных имени ресолвятся в один IPv4, но одно в списке "только VPN" а второе в списке "только без VPN"?


Правда, сильно не исключаю, что на подобное как раз способен squid, как прокси выше уровнем, чем L3.

Это задача легко решается прямо на роутерах на "продвинутых" прошивках. Либо микротик в стоке.

Вот по совпадению - ровно вчера делал такое на микротике. Для заворота в туннель только нужного траффика

Тоже делал ни МТ такое. Заворачивал траффик на определённые айпишники в туннель. Из минусов:

  1. Не удобно обновлять адрес-листы. Можно конечно написать скрипт на баш/повершелл/питон/(что нравится), который бы это делал, или ходить в сам МТ и делать ручками. В браузере это сделать куда как удобнее и быстрее.

  2. Скорость работы. Вот тут я увидел ОЧЕНЬ медленную загрузку сайтов.

Чуть выше описал решение с автоконфигурацией прокси браузера.

Мне кажется проще Squid заюзать.

Или какой-нить OpenVPN.

В Сквид не умею.

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

Как опыт наверное пригодится таким заняться, но всё ж раз заморский сервак, то лучше начать с статьи как его оплачивать) пользовался hetzner, но была возможность оплачивать только через swift. Не знаю что это за услуга, но за оплату счёта в 16 евро надо было платить комиссию в 15... Да и раз пошёл такой разговор подскажите как барыги настраивают впн или куда смотреть в плане ограничения ресурсов/трафика? Я по неопытности дал свой впн товарищу, так это чудовище скачало какой-то тупой фильм и мне пришло письмо от MGM от чего я не плохо труханул

Есть масса реселлеров, продающих виртуалки вне РФ, которые принимают российские карточки, к примеру inferno.name, vdsina.ru, да десятки их

Спасибо, пошарился на инферно - похоже на барахолку, как буд-то в старом Питере на рынок юнона пришёл где можно найти/купить всё)) На инферно просят за хиленький vps в Германии 75$, когда в хетзнер аналогичный сервак 5-10€ если память не изменяет... Но всё равно спасибо

Выглядит да, привет из 90-ых, но вполне работает.

Не знаю, где Вы смотрите, но у них там как у всех, "одно ядро один гиг" стоит по 5 баксов в месяц. Из плюсов конкретно инферно - условно безлимитный траф (есть некоторые рамки) и абьюзоустойчивость (они очень лояльны к не сильно противозаконным запросам, типа "с вас качали торренты").

(Подозреваю, что Вы смотрите выделенные сервера, а в данном случае нужно смотреть в виртуальные)

Имхо nginx лучше поднимать через docker. Это быстрее, проще, и чище. С докером также в легком доступе множество преднастроенных проксей и VPN на любой вкус. И домен для всего этого не обязателен.

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

Был хороший цикл статей.
Иногда использую для синхронизации локальных реп Zabbix.
На Windows и Android не тестировал.
Работают отлично все три клиента.

https://habr.com/ru/post/555368/

Здравствуйте. Спасибо за статью)
Визуально инструкция выглядит рабочей, но по факту для Ubuntu 20.04.4 LTS не взлетело(
Например:
1)

/etc/nginx/modules/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch

Откуда автор взял патч в этой локации не понятно... ведь клон происходил в катклог /root/build
2) Опечатки в
--conf-path=/etc/nginx/nginx.conf\
--http-log-path=/var/log/nginx/access.log\

--pid-path=/var/run/nginx.pid\

отутсвует пробел перед слешом.

Лишний минус пере слешом:
--with-http_gunzip_module -\


3) После сборки Nginx ругается:
nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

Потому что библиотека устанавливается в /usr/local/lib/libluajit-5.1.so.2

4) Не понятно откуда автор берет файл:
# transfer Proxy-Authorization header to Authorization header
rewrite_by_lua_file /etc/nginx/auth/proxy_auth.lua;



proxy_auth.lua - что то типо этого:

if not ngx.var.http_proxy_authorization then
    ngx.header["Proxy-Authenticate"] = "Basic realm=\"Access to internal site\""
    ngx.exit(407)
end

ngx.req.set_header("Authorization", ngx.var.http_proxy_authorization)

Sign up to leave a comment.

Articles