Задача: в последнее время мой провайдер (а я уверен что это именно он) начал блокировать доступ к такому ресурсу, как lostfilm.tv – но такое положение дел меня не устраивает, во общем принял решение на одной из подконтрольных удаленных машин поднять socks прокси на базе 3proxy преимущественно на Ubuntu 12.04.5 Server amd64. Позже выяснил, что ресурс выше успешно откликается и без использования этой заметки если вместо http указать https.
Первым делом обновляю систему до актуального состояния:
ekzorchik@srv-serv:~$ sudo apt-get update && sudo apt-get upgrade -y
Теперь что же есть такое 3proxy, это многофункциональный прокси-сервер с поддержкой https & ftp, socks (4 и 5), более подробную информацию что еще и как умеет эта утилита прошу в google. А сейчас перехожу к практической части:
На момент написания заметки версия рассматриваемой утилиты 0.7.1.1
Сперва устанавливаю зависимые пакеты необходимые для корректной последующей инсталляции пакета 3proxy в систему:
ekzorchik@srv-serv:~$ sudo apt-get install build-essential libevent-dev libssl-dev -y
Теперь скачиваю последнюю на момент написания данной заметки версию:
ekzorchik@srv-serv:~$ sudo mkdir -p /opt/proxy
ekzorchik@srv-serv:~$ cd /opt/proxy
ekzorchik@srv-serv:/opt/proxy$ sudo wget http://3proxy.ru/0.7.1.1/3proxy-0.7.1.1.tgz
Распаковываю скачанный архив:
ekzorchik@srv-serv:/opt/proxy$ sudo tar zxvf 3proxy-0.7.1.1.tgz
Перехожу в полученный после распаковки каталог для сборки программы:
ekzorchik@srv-serv:/opt/proxy$ cd 3proxy/
Далее, для того чтобы наш сервер был полностью анонимен добавляю строку в файл заголовка перед тем как начать сборку программы:
ekzorchik@srv-serv:/opt/proxy/3proxy$ sudo nano +29 src/proxy.h
#define ANONYMOUS 1
Сохраняю полученные изменения.
Теперь собираю программу:
ekzorchik@srv-serv:/opt/proxy/3proxy$ sudo make -f Makefile.Linux
make[2]: Leaving directory `/opt/proxy/3proxy/src/plugins/TransparentPlugin’
make[1]: Leaving directory `/opt/proxy/3proxy/src’
отлично ошибок нет.
Теперь устанавливаю в систему:
ekzorchik@srv-serv:/opt/proxy/3proxy$ sudo make -f Makefile.Linux install
/usr/bin/install -m 755 -d /usr/local/bin
/usr/bin/install -m 755 -s src/3proxy src/countersutil src/dighosts src/ftppr src/mycrypt src/pop3p src/proxy src/socks src/tcppm src/udppm /usr/local/bin
/usr/bin/install -m 755 -d /usr/local/etc/3proxy
for file in passwd counters bandlimiters; \
do \
touch /usr/local/etc/3proxy/$file; chmod 0600 /usr/local/etc/3proxy/$file; \
done;
/usr/bin/install -m 755 -d /usr/local/share/man/man3
/usr/bin/install -m 755 -d /usr/local/share/man/man8
/usr/bin/install -m 644 man/*.3 /usr/local/share/man/man3
/usr/bin/install -m 644 man/*.8 /usr/local/share/man/man8
ekzorchik@srv-serv:/opt/proxy/3proxy$ cd ~/
Отобразить местонахождение утилиты 3proxy в системе:
ekzorchik@srv-serv:~$ whereis 3proxy
3proxy: /usr/local/bin/3proxy /usr/local/etc/3proxy
Теперь понадобится создать специальную директорию под конфигурационный файл и файлы логов:
ekzorchik@srv-serv:~$ mkdir -p ~/proxy/logs
Создаю конфигурационный файл:
ekzorchik@srv-serv:~$ nano ~/proxy/3proxy.conf
# запуск в режиме демона
daemon
pidfile /home/ekzorchik/proxy/3proxy.pid
# указываем IP адреса шлюза (посмотреть который можно из вывода: cat /etc/resolv.conf)
nserver 192.168.1.9
nscache 65536
timeouts 1 5 30 60 180 1800 16 60
log /home/ekzorchik/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
flush
# не использовать авторизацию на socks прокси сервере
auth none
# указываем порт на котором будет работать socks прокси сервер
socks -p8888
# указываем ftp прокси на любом порту выше 1024 дабы не задействовать порт используемый привилегированными службами, по такому же принципу и с web
# ftppr -p3127
# proxy -p3128
# Если нужно то поднимаем Web-интерфейс по управлению службой 3proxy в системе, но учтите — что на входе нет никакой защиты хотя бы в виде связки логин и пароль.
admin -p8081
Сохраняю внесенные изменения.
А теперь запускаю процесс с созданным выше конфигурационным файлом:
ekzorchik@srv-serv:~$ 3proxy ~/proxy/3proxy.conf
После проверяю, что процесс работает:
ekzorchik@srv-serv:~$ ps ax | grep proxy | head -n 1
16794 ? Ssl 0:00 3proxy /home/ekzorchik/proxy/3proxy.conf
Теперь в настройках браузера прописываю настройки socks сервера, где IP socks сервера указывающий на данную систему где развернули выше приложение socks и указываем порт 8888. После чего происходит отображение результатов как будто Вы ходите без socks прокси сервера, убедиться в этом помогут логи, смотрите:
ekzorchik@srv-serv:~$ tail -f proxy/logs/3proxy.log.2015.01.26
1422289473.655 SOCK4.8888 00000 – 192.168.1.53:52257 93.158.134.119:80 9492 1944 0 CONNECT_93.158.134.119:80
1422289508.674 SOCK4.8888 00000 ekzorchik 192.168.1.53:52263 173.194.32.183:443 2100 38721 0 CONNECT_173.194.32.183:443
1422289538.879 SOCK4.8888 00000 – 192.168.1.53:52284 93.158.134.119:80 1770 486 0 CONNECT_93.158.134.119:80
Когда нужно отменить использование прокси, то выключаем сервис на подконтрольном сервере:
ekzorchik@srv-serv:~$ sudo killall 3proxy
и браузере снимаем возможность использования socks прокси.
IE – Сервис — Свойства обозревателя — Подключения — Настройка сети — снимаем галочку:
- Использовать прокси-сервер для локальных подключений
Теперь задействовав функционал данной заметки я получаю обход ограничений при посещении ресурсов всемирной паутины. Что мне и требовалось в последствии я буду Вас знакомить со многими интересными вещами посредством практичного использования в виде пошаговых инструкций.
Если же нужно ограничить использование socks прокси, то можно добавить в конфигурационный файл специализированного пользователя и назначить ему сложный пароль, чтобы никто не смог через Ваши системы лазать по всемирной паутине без Вашего ведома, делается это так, останавливаем все процессы 3proxy в системе:
ekzorchik@srv-serv:~$ sudo killall 3proxy
ekzorchik@srv-serv:~$ nano ~/proxy/3proxy.conf
users ekzorchik:CL:712mbddr@
auth strong
Сохраняем внесенные изменения.
Запускаем процесс:
ekzorchik@srv-serv:~$ 3proxy ~/proxy/3proxy.conf
Чтобы проверить, Вам понадобиться приложение имеющие возможность подключаться через socks с использование аутентификационных данных, к примеру Yandex–диск:
Ниже это пример, здесь в место 192.168.1.53 нужно указывать IP&DNS подконтрольного сервере где развертываете утилиту 3proxy
Настройки — вкладка «Прокси» – Ручные настройки прокси-сервера
Тип: SOCKS5
Сервер: 192.168.1.53
Порт: 8888
Пароль на сервер: отмечаем галочкой:
Логин: ekzorchik
Пароль: 712mbddr@
На заметку: если там где вы настраиваете используется корпоративный фаервол, к примеру Kerio, то потребуется настроить соответствующее правило которое при обращении на внешний IP адрес будет перенаправлять на внутренний с указанием порта на котором работает службу 3proxy.
Это все конечно но же хорошо, но вот как заставить работать браузеры IE,Google Chrome с использованием авторизации на socks это загадка и посредством внутренних средств самой системы это невозможно придется что-то до установить. Показывать здесь, ну даже и не знаю, а на до ли, возможно прочитав в интернете соответствующие материалы Вы расширите свой кругозор в использовании специализированных инструментов или лучше почитайте мой блог воспользовавшись поиском по тегу «прокси».
Что еще остается — это попрощаться и до новых встреч, с уважением автор блога — ekzorchik.