В виду факта работы «Роскомнадзора» на территории Российской Федерации в сфере связи, информационных технологий и массовых коммуникаций все делается чтобы Мы обычные системные администраторы и пользователи испытывали трудности в получении информации: Привет torrent
популярного ресурса где я черпал книги и журналы для расширения своего кругозора и самообучения. Я же задался вопрос, как вернуть в целях только самообразования доступ к заблокируемому — и выходом из этой ситуации с блокировками стал сервис именуемый, как 3proxy
. С его помощью я получил то что как я думал ранее было для меня потерянным. И об его разворачивании на своем подконтрольном сервисе и пойдет речь в данной заметке, все действия ниже были и проделаны и успешно работают на Ubuntu 18.04 Server amd64
Цель: Настроить прокси для захода на определенный хост через определенный браузер.
Все действия будут проделываться на Ubuntu 18.04 Server amd64
ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject ekzorchik@srv-bionic:~$ sudo ./dproject/default ekzorchik@srv-bionic:~$ uname -a Linux srv-bionic 4.15.0-42-generic #45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux ekzorchik@srv-bionic:~$ cd /opt/ ekzorchik@srv-bionic:/opt$ sudo git clone https://github.com/z3APA3A/3proxy.git ekzorchik@srv-bionic:/opt$ cd 3proxy/
Читаем файл README
и в нем указаны шаги по инсталляции:
ekzorchik@srv-bionic:/opt/3proxy$ ln -s Makefile.Linux Makefile ln: failed to create symbolic link 'Makefile': Permission denied ekzorchik@srv-bionic:/opt/3proxy$ sudo ln -s Makefile.Linux Makefile ekzorchik@srv-bionic:/opt/3proxy$ sudo make ekzorchik@srv-bionic:/opt/3proxy$ sudo make install Proxy admin password: в рамках этой заметки путь будет 712mbddr@ 3proxy installed. use service 3proxy start to start proxy service 3proxy stop to stop proxy /etc/3proxy/conf/add3proxyuser.sh to add users Default config uses Google's DNS. It's recommended to uss provider supplied DNS or install local recursor, e.g. pdns-recursor. Configure preferred DNS in /etc/3proxy/conf/3proxy.cfg. ekzorchik@srv-bionic:/opt/3proxy$ cd ~
Проверяю, в какой место установилось приложение 3proxy:
ekzorchik@srv-bionic:~$ whereis 3proxy 3proxy: /bin/3proxy /etc/3proxy /usr/local/3proxy /opt/3proxy/bin/3proxy /usr/share/man/man8/3proxy.8
Отлично, ничего переносить никуда не нужно, как я видел во многих руководствах.
ekzorchik@srv-bionic:~$ sudo cp /etc/3proxy/3proxy.cfg /etc/3proxy/3proxy.cfg.backup
Сделаем ограничение на запуск сервиса 3proxy
от имени собственного пользователя:
ekzorchik@srv-bionic:~$ sudo useradd 3proxy ekzorchik@srv-bionic:~$ sudo passwd 3proxy Enter new UNIX password: 712mbddr@ Retype new UNIX password: 712mbddr@ passwd: password updated successfully ekzorchik@srv-bionic:~$ id 3proxy uid=1001(3proxy) gid=1001(3proxy) groups=1001(3proxy) ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/3proxy.cfg #!/bin/3proxy daemon pidfile /var/run/3proxy/3proxy.pid setgid 1001 setuid 1001 nserver 8.8.8.8 nserver 8.8.4.4 nscache 65536 timeouts 1 5 30 60 180 1800 15 60 daemon log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" allow * socks -p1080 -a
После не забываем сохранить внесенные изменения.
Строка logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
расшифровывается, как:
- _L — локальное время
- %t – Timstamp (in seconds since 01-Jan-1970)
- %. – milliseconds
- %N – service Name
- %p – service Port
- %E – Error code
- %U — Username
- %C – Client IP
- %c – Client port
- %R – Remote IP
- %r – Remote port
- %O – bytes Out
- %I – bytes In
- %h – Hops (redirections) count
ekzorchik@srv-bionic:~$ sudo rm -Rf /var/log/3proxy ekzorchik@srv-bionic:~$ sudo mkdir /var/log/3proxy ekzorchik@srv-bionic:~$ sudo chown 3proxy:3proxy /var/log/3proxy ekzorchik@srv-bionic:~$ sudo chown 3proxy:3proxy /etc/3proxy/3proxy.cfg ekzorchik@srv-bionic:~$ sudo killall 3proxy ekzorchik@srv-bionic:~$ sudo 3proxy /etc/3proxy/3proxy.cfg ekzorchik@srv-bionic:~$ sudo netstat -tulpn | grep 3proxy tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 12110/3proxy ekzorchik@srv-bionic:~$ sudo tail -f /var/log/3proxy/3proxy.log.2019.01.13 | head -n 1 1547382491.305 SOCKS.1080 00000 - 0.0.0.0:1080 0.0.0.0:0 0 0 0 bind():_Address_already_in_use
Если тестирование прошло успешно, можно остановить демон и создать сервис SystemD
для автоматического запуска при старте сервера:
ekzorchik@srv-bionic:~$ sudo killall 3proxy
Файл описания сервиса:
ekzorchik@srv-bionic:~$ sudo nano /lib/systemd/system/3proxy.service [Unit] Description=3Proxy SOCKS5 Daemon Wants=network-online.target After=network-online.target [Service] Type=forking ExecStart=/bin/3proxy /etc/3proxy/3proxy.cfg [Install] WantedBy=multi-user.target
На заметку: Не указывать путь до 3proxy
вида: /opt/3proxy/bin/3proxy
Активируем автозапуск и запускаем:
ekzorchik@srv-bionic:~$ sudo systemctl enable 3proxy Synchronizing state of 3proxy.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable 3proxy ekzorchik@srv-bionic:~$ sudo systemctl start 3proxy ekzorchik@srv-bionic:~$ sudo systemctl status 3proxy | head -n5 ● 3proxy.service - 3Proxy SOCKS5 Daemon Loaded: loaded (/lib/systemd/system/3proxy.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2019-01-13 15:18:12 MSK; 14min ago Tasks: 0 (limit: 2322) CGroup: /system.slice/3proxy.service
На заметку: Если после активации сервиса вносите в файл конфигурации изменения то нужно сделать:
ekzorchik@srv-bionic:~$ sudo systemctl daemon-reload
Проверяю от имени кого запущен сервис 3proxy:
ekzorchik@srv-bionic:~$ ps auxf | grep 3proxy 3proxy 12392 0.3 0.2 997648 5064 ? Ssl 15:46 0:00 /bin/3proxy /etc/3proxy/3proxy.cfg ekzorchik@srv-bionic:~$ ls /var/log/3proxy/3proxy.log.2019.01.13 -lh -rw-r--r-- 1 3proxy 3proxy 30K Jan 13 16:10 /var/log/3proxy/3proxy.log.2019.01.13
Все правильно, от созданной учетной записи 3proxy.
Теперь можно взять запустить браузер и прописать настройки на использование socks
сервиса:
Win — Firefox (на Ubuntu 18.04 Desktop amd64 version: 64.0 (64-бит) — Открыть меню — Настройки — Основные — (Параметры сети) Настроить…
– отмечаю «Ручная настройка прокси
» и прописываю:
- Узел SOCKS: 172.33.33.25
- Порт 1080
- отмечаю использование SOCKS 5
и нажимаю OK
Далее пробую открыть какой-либо сайт, к примеру http://www.ekzorchik.ru
и получаю его содержимое.
Если посмотреть на логи:
1547383565.868 SOCKS.1080 00000 - 0.0.0.0:1080 0.0.0.0:0 0 0 0 Accepting_connections_[12392/655701760] 1547383574.505 SOCK5.1080 00000 - 172.33.33.16:60190 173.194.221.104:443 0 0 0 CONNECT_173.194.221.104:443
то в них видно обращение браузера к URL
строке.
Дополнения к заметке.
Задача: Чтобы ограничить доступ к 3proxy
–серверу по IP
–адресу:
ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/3proxy.cfg allow * 172.33.33.16 ekzorchik@srv-bionic:~$ sudo systemctl restart 3proxy && sudo systemctl status 3proxy | head -n5 | grep active Active: active (running) since Sun 2019-01-13 15:52:53 MSK; 36ms ago
Задача: Добавить аутентификацию к использованию 3proxy
сервиса:
ekzorchik@srv-bionic:~$ sudo systemctl stop 3proxy ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/3proxy.cfg #!/bin/3proxy daemon pidfile /var/run/3proxy/3proxy.pid setgid 1001 setuid 1001 nserver 8.8.8.8 nserver 8.8.4.4 nscache 65536 timeouts 1 5 30 60 180 1800 15 60 daemon log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" allow * socks -p1080 -a users ekzorchik:CL:712mbddr@ auth strong ekzorchik@srv-bionic:~$ sudo systemctl restart 3proxy && sudo systemctl status 3proxy | head -n5 | grep active Active: active (running) since Sun 2019-01-13 15:57:46 MSK; 29ms ago
Проверяю, к примеру на Firefox
, ранее я указал только IP:PORT
при запуске браузера получаю уведомление, что я должен войти в эту сеть перед тем как получу доступ в интернет → нажимаю «Открыть страницу входа в сеть
»
вот только нет ни какой страницы входа, меня перекинуло на
что это? Это у меня в настройки прокси сервера была указан HTTP
прокси.
К примеру настройки работы через socks5
для OwnCloud Client
Создавая файлы на хранилище в логах 3proxy
получаю обращения:
1547384613.140 SOCK5.1080 00000 ekzorchik 172.33.33.16:35642 172.35.35.6:443 1397 1286 0 CONNECT_172.35.35.6:443
значит все работает.
Задача: Ограничить доступ к 3proxy
определенному списку IP
адресов. Читаю man 3proxy.cfg
и там есть синтаксис вида:
allow <userlist> <sourcelist> <targetlist> <targetportlist> <opera‐
tionlist> <weekdayslist> <timeperiodslist>
ekzorchik@srv-bionic:~$ sudo systemctl stop 3proxy ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/allow.txt 172.33.33.7 172.33.33.16 ekzorchik@srv-bionic:~$ sudo chown 3proxy:3proxy /etc/3proxy/allow.txt ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/3proxy.cfg #!/bin/3proxy daemon pidfile /var/run/3proxy/3proxy.pid setgid 1001 setuid 1001 nserver 8.8.8.8 nserver 8.8.4.4 nscache 65536 timeouts 1 5 30 60 180 1800 15 60 daemon log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" flush allow * $"/etc/3proxy/allow.txt" socks -p1080 -a users ekzorchik:CL:712mbddr@ auth strong ekzorchik@srv-bionic:~$ sudo systemctl restart 3proxy && sudo systemctl status 3proxy | head -n5 | grep active Active: active (running) since Sun 2019-01-13 16:25:19 MSK; 35ms ago
Задача: Ограничить доступ к 3proxy
определенному списку IP
адресов и аутентификационных данных. Читаю man 3proxy.cfg
или на официальном сайте справку на русском (https://3proxy.ru/howtor.asp
)
ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/users.txt alektest:CL:Aa1234567@! alektest1:CL:Aa1234567@!1 alektest2:CL:Aa1234567@!2 alektest3:CL:Aa1234567@!3 ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/allow.txt #только если адрес на мой системе, а это через Wifi 172.33.33.7 ekzorchik@srv-bionic:~$ sudo chown 3proxy:3proxy /etc/3proxy/users.txt ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/3proxy.cfg #!/bin/3proxy daemon pidfile /var/run/3proxy/3proxy.pid setgid 1001 setuid 1001 nserver 8.8.8.8 nserver 8.8.4.4 nscache 65536 timeouts 1 5 30 60 180 1800 15 60 daemon log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" flush allow * $"/etc/3proxy/allow.txt" socks -p1080 -a users $"/etc/3proxy/users.txt" auth strong ekzorchik@srv-bionic:~$ sudo systemctl restart 3proxy && sudo systemctl status 3proxy | head -n5 | grep active Active: active (running) since Sun 2019-01-13 16:30:00 MSK; 30ms ago
Ответ да, я смог подключиться через OwnCloud
клиент только тогда когда у меня IP
адрес 172.33.33.7
Задача выполнена.
Задача: Поднять два прокси сервиса на одной системе. Один порт 3128
только для определенных IP и связки логин+pass + все ресурсы, другой порт 3129
только для определенных IP и связки логин+пасс + действует правило запрета хождения на определенные ресурсы. См. Примеры:ekzorchik@srv-bionic:~$ sudo nano /opt/3proxy/cfg/3proxy.cfg.sample
Файл deny.txt
с перечнем ресурсов: ya.ru
flush auth strong allow * $"/etc/3proxy/allow3128.txt" socks -p3128 -a users $"/etc/3proxy/users3128.txt" #для 3129 не работает. socks -p3129 -a auth strong flush allow * $"/etc/3proxy/allow3129.txt" users $"/etc/3proxy/users3129.txt" deny $"/etc/3proxy/deny.txt" ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/allow3128.txt 172.33.33.16 ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/users3128.txt alektest:CL:Aa1234567 ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/allow3129.txt 172.33.33.16 ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/users3129.txt alektest:CL:Aa1234567 ekzorchik@srv-bionic:~$ sudo nano /etc/3proxy/deny.txt ekzorchik.ru ekzorchik@srv-bionic:~$ sudo chown 3proxy:3proxy /etc/3proxy/*.txt ekzorchik@srv-bionic:~$ sudo systemctl restart 3proxy && sudo systemctl status 3proxy | head -n5 | grep active Active: active (running) since Sun 2019-01-13 16:58:01 MSK; 73ms ago ekzorchik@srv-bionic:~$ sudo netstat -tulpn | grep 3proxy tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 21025/3proxy tcp 0 0 0.0.0.0:3129 0.0.0.0:* LISTEN 21025/3proxy
Проверим, если для порта 3129
закомментируем параметр users
и проверим на примере браузера: (это ниже работает, доступ только с адреса в файле)
flush auth iponly allow * $"/etc/3proxy/allow3129.txt" socks -p3129 -a
Проверим, если для порта 3128 — OwnCloud Client
успешно подключился.
На заметку: Порядок в конфигурационном файле настроек очень важен:
flush
auth
deny
allow
tcppm
socks
Вывод: Получаем я могу где-либо поднять свой собственный socks
сервис с доступом по логин и паролю и использовать его к примеру в Telegram если так не заходит. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.