У гэтым артыкуле мы пакажам канфігурацыю 3proxy на выдзеленым серверы пад кіраваннем аперацыйнай сістэмы ArchLinux/CentOS. 3proxy - адзін з самых актуальных і функцыянальных інструментаў. Ён падтрымлівае розныя тыпы пратаколаў: HTTP, HTTPS, FTP, SOCKS і іншыя. Гэта дапаможа вам наладзіць уласны проксі-сервер за лічаныя хвіліны.
У артыкуле змяшчаецца пакрокавая інструкцыя па ўсталёўцы ўтыліты і яе далейшай наладзе. Разгледжаны такія пытанні, як ўстаноўка з афіцыйнага крыніцы, налада канфігурацыйных файлаў, адкрыццё нестандартных партоў, а таксама апісаны тыповыя памылкі і дадзены практычныя рэкамендацыі па іх вырашэнню. Перад запускам неабходна замовіць a VPS or Выдзелены сервер на базе аперацыйнай сістэмы CentOS або ArchLinux. Усе дзеянні ў прыкладзе будуць выконвацца на выдзеленым серверы пад кіраваннем аперацыйнай сістэмы CentOS7 з адным вылучаным статычным публічным IP-адрасам.
ўстаноўка
Крок 1
3proxy усталёўваецца непасрэдна з зыходнікаў. НКУ будзе выкарыстоўвацца ў якасці кампілятара. Падключаемся да сервера як root (суперпользователь) і ўсталёўваем кампілятар.
yum install gcc
Крок 2
Цяпер неабходна загрузіць зыходныя файлы 3proxy. Вы можаце зрабіць гэта, перайшоўшы ў Афіцыйны сайт і капіраванне спасылкі на бягучую версію:
Калі патрэбна архіўная версія, вы таксама можаце загрузіць спасылку непасрэдна з GitHub:
На момант напісання гэтага артыкула бягучая версія - 0.9.3. Спампуйце яго і неадкладна распакуйце:
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
tar -xvzf 0.9.3.tar.gz
Крок 3
Перайдзіце ў каталог з распакаваным праектам і скампілюйце:
cd 3proxy-0.9.3/
make -f Makefile.Linux
Крок 4
Мы ствараем каталогі і капіюем файл 3proxy у /usr/bin:
mkdir -p /var/log/3proxy
mkdir /etc/3proxy
cp bin/3proxy /usr/bin/
Крок 5
Ствараем карыстальніка для працы з каталогам. У гэтым выпадку імя карыстальніка 3proxyuser:
useradd -s /usr/sbin/nologin -U -M -r 3proxyuser
Мы даем правы на працу з каталогамі створанаму карыстальніку:
chown -R 3proxyuser:3proxyuser /etc/3proxy
chown -R 3proxyuser:3proxyuser /var/log/3proxy
chown -R 3proxyuser:3proxyuser /usr/bin/3proxy
Зараз давайце створым файл канфігурацыі з дапамогай каманды:
touch /etc/3proxy/3proxy.cfg
Пры неабходнасці вы можаце ўсталяваць правы доступу да файла канфігурацыі для каранёвага карыстальніка. Гэты крок не абавязковы, але дадасць абарону:
chmod 600 /etc/3proxy/3proxy.cfg
Канфігурацыя 3 проксі
Крок 6
Неабходна правільна запоўніць канфігурацыйны файл, які быў створаны раней. Спачатку даведайцеся uid і gid карыстальніка з дапамогай каманды:
id 3proxyuser
У нашым выпадку гэта наступныя значэнні:
Каб запоўніць канфігурацыйны файл, вы можаце ўзяць гатовыя канфігурацыі або выкарыстоўваць дакументацыя на афіцыйным сайце. Таксама файл з прыкладам ужо прадусталяваны па змаўчанні; вы можаце знайсці яго па шляху: /cfg/3proxy.cfg.sample
У якасці прыкладу мы разгледзім 2 тыпу канфігурацыі: з высечкай і без. Кожны радок будзе суправаджацца каментарамі (яны пазначаны сімвалам «#»).
Гэта прыклад гатовай канфігурацыі без высечкі:
# We specify the user's data that we found out in the previous command
setgid 995
setuid 997
# Type the NS-servers. It is possible to clarify your own servers at /etc/resolv.conf
nserver 1.1.1.1
nserver 8.8.8.8
# Cache size
nscache 65536
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Authorization of users by login/password (if required). You may not to use it or specify the path to the file in which authorization data is stored, for example, users $/etc/3proxy/.authfile
# If you insert a password in md5 format, replace “CL” with “CR”, as indicated in the example. You can use 2 methods at the same time.
auth cache strong
users "userproxy:CL:passwordproxy"
users "userproxy2:CR:b89097a7ad0b94f13b3c313ae76699d4 "
# Launch mode. Daemon only.
Daemon
# We write the port through which the http connection will take place. The example shows the standard one. To establish a socks connection, use the command specified in the second line, the port is also standard.
proxy -p3128
socks -p1080
Мы разглядалі варыянт канфігурацыйнага файла без рэгістрацыі. Зараз мы створым канфігурацыйны файл з рэгістрацыя і аўтарызацыя карыстальнікаў; ён будзе выкарыстоўвацца пазней падчас наладкі сервера.
Пераканайцеся, што вы даяце інфармацыю для аўтарызацыі, так як сервер можа быць выяўлены нават на нестандартных партах.
# Configuring the server to launch from the userproxy user and the passwordproxy password.
users userproxy:CL:passwordproxy
# Specify the user's uid and gid
setgid 995
setuid 997
# Nameservers (NS-servers)
nserver 1.1.1.1
nserver 8.8.8.8
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Cache size (standard)
nscache 65536
# Indicate the launch mode
daemon
# We install http proxy on a non-standard 50001 port. If there are several IP addresses on the server, be sure to specify a specific address for connecting the network. For example, "-e91.150.32.146". The argument "i" is a local address.
proxy –p50001
# In a same way as socks proxy, we conduct the installation on a 50002 port.
socks –p50002
# Path to the directory with logs, logs format and proxy rotation
Log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
На гэтым наладжванне асноўнага файла канфігурацыі завершана. Пераходзім да фінальнай стадыі і запуску.
Крок 7
Стварыце файл ініцыялізацыі для systemd:
touch /etc/systemd/system/3proxy.service
Выдаць неабходныя правы:
chmod 664 /etc/systemd/system/3proxy.service
Скапіруйце і ўстаўце наступныя значэнні ў файл і захавайце:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep 3proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target»
Калі ласка, звярніце ўвагу: у значэнні «ExecStop» неабходна пазначыць імя карыстальніка, створанае на этапе № 5.
Пасля чаго вам трэба абнавіць канфігурацыю Daemon камандай:
systemctl daemon-reload
Крок 8
Адзінае, што нам трэба, гэта запусціць наладжаны 3proxy, дадаць яго ў аўтазагрузку, а таксама адкрыць парты ў брандмаўэры.
Дадайце яго ў аўтазапуск, запуск і праверку стану:
systemctl enable 3proxy
systemctl start 3proxy
systemctl status 3proxy
Пасля праверкі статусу мы бачым інфармацыю аб тым, што 3proxy паспяхова запушчаны:
Засталося толькі адкрыць парты:
firewall-cmd --zone=public --add-port=50001/tcp
firewall-cmd --zone=public --add-port=50002/tcp
firewall-cmd –reload
Пры неабходнасці перазагрузіце сервер. Праверыць, ці адкрыты парты, можна з дапамогай каманды:
firewall-cmd --list-all
Што павінна быць:
Як бачым, абодва порта паспяхова адкрыты і праслухоўваюцца. HTTP-злучэнне - на першым порце, socks - на другім.
Праверце злучэнне праз любы зручны сэрвіс:
Усё працуе. Са свайго боку, не рэкамендуем выкарыстоўваць неабароненае злучэнне без аўтарызацыі лагіна/пароля, а таксама са стандартным наборам партоў. Падчас наладжвання файла канфігурацыі, абавязкова пакажыце лагін і стварыце складаны пароль, а таксама зменіце парты на нестандартныя. У выключных выпадках можна выкарыстоўваць аўтарызацыю па IP-адрасе
агульныя праблемы
Штосьці пайшло не так і проксі не працуе? Магчыма, канфігурацыя 3proxy была зроблена няправільна. Разгледзім найбольш распаўсюджаныя праблемы і шляхі іх вырашэння пры ўсталёўцы і наладзе ўтыліты.
Няма сувязі
Найбольш частай праблемай для многіх карыстальнікаў з'яўляецца недаступнае злучэнне, калі канфігурацыйныя файлы, здаецца, настроены правільна. Калі вы ўпэўнены, што ўсе налады настроены правільна, хостынг-правайдэр не абмяжоўвае абраны порт і ўсе дадзеныя сведчаць аб працы службы, праблема можа быць у брандмаўэры, а дакладней, у яго няправільнай наладзе. Напрыклад, у сістэме можа быць усталявана больш за дзве праграмы, якія будуць канфліктаваць адна з адной. Каб вырашыць праблему, дастаткова выкарыстоўваць адзін пэўны брандмаўэр. Мы раім вам выбіраць толькі iptables або firewall-cmd.
Сэрвіс не запускаецца
Служба не запускаецца пасля наладжвання ўсіх неабходных канфігурацыйных файлаў. Гэта адбываецца, калі прапушчаны крок канфігурацыі, не дадзены адпаведныя правы або зроблена нязначная памылка ў файлах канфігурацыі. Рэкамендуем яшчэ раз уважліва вывучыць інструкцыю пакрокава, магчыма, вы прапусцілі адзін з крокаў. Калі нічога не дапамагае, нядрэнна было б пераўсталяваць АС і выконваць усе крокі з самага пачатку. Рэкамендуем выкарыстоўваць ўзор размешчаны ў /cfg/3proxy.cfg.sample, у якасці тэставай канфігурацыі і папярэдне ўсталяванай брандмаўэр-cmd як брандмаўэр.
Запіс
Апошняе, але не менш важнае пытанне - гэта захоўванне файлаў. 3proxy займае некалькі мб падчас усталявання, але з цягам часу памер можа быць значна павялічаны толькі праз рэгістрацыю. Справа ў тым, што многія карыстальнікі ўключаюць запіс логі ў асобны файл, але не наладжваюць ратацыю і не выдаляюць неактуальныя логі. Для вырашэння гэтай праблемы можна выкарыстоўваць тры варыянты:
- Уключыць вядзенне часопіса;
- Перыядычна выдаляйце недарэчныя часопісы;
- Уключыце кручэнне, як было зроблена ў канфігурацыі вышэй. Напрыклад, «rotate 30» у канфігурацыйным файле азначае, што 3proxy будзе захоўваць толькі апошнія 30 файлаў.
Conclusion
Ўстаноўка і настройка 3proxy ў аперацыйных сістэмах CentOS і ArchLinux - даволі простая, але ў той жа час эфектыўная задача. У артыкуле разглядаліся этапы ўстаноўкі неабходных пакетаў, канфігурацыі файлаў канфігурацыі і запуску службы. Атрыманыя веды дазволяць вам без асаблівых цяжкасцяў самастойна ўсталяваць і наладзіць проксі-сервер.