У цій статті ми покажемо конфігурацію 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
Якщо необхідно, ви можете встановити дозволи на конфігураційний файл для користувача root. Цей крок не є обов'язковим, але додасть захист:
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 була виконана неправильно. Розглянемо найпоширеніші проблеми та способи їх вирішення під час встановлення та налаштування утиліти.
Немає з'єднання
Найпоширенішою проблемою для багатьох користувачів є недоступне підключення, коли файли конфігурації налаштовані правильно. Якщо ви впевнені, що всі параметри налаштовані правильно, хостинг-провайдер не обмежує вибраний порт і всі дані вказують на працюючу службу, проблема може бути в брандмауері, а точніше, в його неправильній конфігурації. Наприклад, у системі може бути встановлено більше двох програм, які конфліктуватимуть одна з одною. Щоб вирішити проблему, достатньо використовувати один конкретний Firewall. Радимо вибрати лише iptables або firewall-cmd.
Служба не запускається
Служба не запускається після налаштування всіх необхідних конфігураційних файлів. Це трапляється, коли пропущений крок конфігурації, не надано відповідних прав або зроблено незначну помилку у файлах конфігурації. Рекомендуємо ще раз уважно вивчити інструкцію покроково, можливо, ви пропустили один з кроків. Якщо нічого не допомагає, було б гарною ідеєю перевстановити ОС і виконати всі кроки з самого початку. Рекомендуємо використовувати зразок розташований у /cfg/3proxy.cfg.sample, як тестова конфігурація та попередньо встановлена firewall-cmd як брандмауер.
Запис
Останнє, але не менш важливе питання стосується зберігання файлів. 3proxy займає кілька Мб під час інсталяції, але розмір можна значно збільшити лише за допомогою журналювання з часом. Справа в тому, що багато користувачів включають запис логів в окремий файл, але не налаштовують ротацію і не видаляють неактуальні журнали. Для вирішення цієї проблеми можна використовувати три варіанти:
- Увімкнути журналювання;
- Періодично видаляйте невідповідні журнали;
- Увімкніть обертання, як було зроблено в налаштуваннях вище. Наприклад, «rotate 30» у файлі конфігурації означає, що 3proxy зберігатиме лише останні 30 файлів.
Висновок
Встановлення та налаштування 3proxy в операційних системах CentOS і ArchLinux - досить просте, але в той же час ефективне завдання. У статті описано кроки для встановлення необхідних пакетів, налаштування файлів конфігурації та запуску служби. Отримані знання дозволять вам самостійно без проблем встановити та налаштувати проксі-сервер.