Обходим блокировки сайтов: или как я развёртывал прямой proxy на базе nginx / Хабр

А почему бы не использовать nginx?

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

С чего всё начиналось

Ты как специалист в области IT, после февральских событий скорее всего столкнулся с проблемой недоступности некоторых ресурсов и наверняка подумал о том, как это дело обойти. Но использовать “бесплатный” или сторонний сервис кажется небезопасным или не даёт нужную ширину канала.

Скорее всего ты посмотришь в сторону SOCKS5 сервера и даже запустишь его в контейнере, всё будет работать, но при этом если ты используешь Windows любой браузер с расширением для прокси (я использую Switchy Omega), ты столкнёшься с двумя вариантами:

  1. Ты будешь поднимать SOCKS5 без аутентификации. Следовательно наш прокси будет открыт для всего света и нашедшие его люди могут использовать его по своему усмотрению;

  2. Как умный инженер, ты сделаешь это с аутентификацией. Но тут есть проблема – Windows не умеет в SOCKS5 с аутентификацией. Я пытался найти решение этой проблемы, но у меня не получилось найти информацию, как это сделать. Как вариант использовать Tor Browser, но мне лично его использование не кажется удобным.

Основные способы и особенности аутентификации прокси

С развитием интернета появились основные виды прокси: http, https, socks – каждый из них имеет особенности в сети. Вводя имя, ключи пользователя и т.д. на сайтах, каждый раз происходит аутентификация прокси. Владея собственным блогом или интернет-магазином, можно вносить изменения и менять proxy на собственных серверах.

Похожее:  GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server

Аутентификация прокси-сервера

  1. По IP адресу. Настройка по ip-адресу уместна в ситуациях, где устройством пользуются постоянно. Прокси фиксирует пользователя компьютера, определяет трафик через уникальный адрес ПК. Такая аутентификация не подойдет для общественных и многопользовательских режимов, на работе с большим количеством людей.
  2. По логину и паролю. Прокси-сервер требует аутентификации через логин и пароль в случае с собственником одного компьютера. В данном режиме можно взаимодействовать с любыми сайтами, компьютерами и выходить во всемирную интернет сеть. Минус способа в удобствах пользования: везде приходится добавлять код в виде адреса прокси-сервера.
  3. Требуется прокси аутентификация в способе пользовательского агента. Выбирая конкретные браузеры для работы,обеспечьте расширенный доступ. Соответственно, сможете влиять на расстоянии на использование тех или иных программ, ставить условия пользования.
  4. По MAC-направлению сетевого адаптера. Существует функция защиты сети с динамическим адресом, который постоянно меняет номер.
  5. Можно воспользоваться малоизвестным, но надежным способом аутентификации посредством учетной записи Windows Server (Active Directory).

Forwarding through tor

Edit your /etc/privoxy/config file and add this line at the end (be sure to include the . at the end

forward-socks5 / localhost:9050 .

This example uses the default port used by Tor. If you changed the port number modify the example accordingly. The same basic example is valid for other targets. If you plan on chaining to another proxy specify the method (here SOCKS5) and the port to suit your needs. Refer to section 5 of the manual inside /etc/privoxy/config for a complete list of options and examples.

The above will forward all browser traffic through Tor. To only forward .onion sites through Tor, use this instead:

forward-socks4a .onion localhost:9050 .

Installation and setup

Install the privoxy package.

When Privoxy is used in conjunction with Tor the two applications need to exchange information through a chain, which requires the specification of forwarding rules.

Finally, if you plan to make Privoxy available to other computers in your network, just add the following to /etc/privoxy/config:

listen-address [SERVER-IP]:[PORT]

For example:

listen-address 192.168.1.1:8118

Usage

Start and enableprivoxy.service.

Configure your program to use Privoxy. The default address is:

localhost:8118

For Firefox, go to:

Preferences > General > Network Settings > Settings

For Chromium you can use:

$ chromium --proxy-server="localhost:8118"

За работу!

Я буду производить настройку на Ubuntu 20.04, вы же вольны использовать всё, что вам душе угодно, но там могут быть свои нюансы. Если вы пойдёте этим путём, то полагаю, вы сами сможете применить эту инструкцию в другом дистрибутиве.

Заблаговременно установим в систему необходимые для сборки пакеты:

apt install -y make build-essential apache2-utils libpcre -dev libssl-dev zlib1g-dev

Создам директорию для “сборки” проекта, в которой будут храниться все временные файлы.

mkdir build && cd build

Теперь отправная точка для каждого шага именно эта директория.

Настройка nginx

Для упрощения инструкции все действия буду производится под пользователем root, в частности запуск демона и создание директорий.

Настройка браузера

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

  1. Надо установить расширение Switchy Omega из любого удобного магазина расширений;

  2. Зайти в его настройки и создать новый прокси сервер. Как на скриншоте ниже, не забыв указать данные пользователя в “замочке” справа.

    Обходим блокировки сайтов: или как я развёртывал прямой proxy на базе nginx / Хабр
  3. Осталось перейти в профиль switch и сопоставить необходимый сайт с прокси сервером и радоваться жизни. Расширение автоматически будет ходить на указанные сайты через прокси. Естественно в расширении немало возможностей по кастомизации поведения.

Подготовка

Нам потребуется:

  1. Linux сервер за пределами необъятной. Ubuntu, Centos или что вам там нравится. Без разницы;

  2. Доменное имя, которое будет ссылаться на наш сервер;

  3. TLS сертификат (очень желательно, но можно без него). Его получение выходит за рамки данной статьи. Лично я использую acme.sh.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *