3proxy este un server proxy gratuit și open source care este utilizat în diverse scopuri, cum ar fi filtrarea traficului, cache și blocarea anumitor site-uri web. Acesta acceptă diverse protocoale, cum ar fi SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP și acceptă metode de autentificare, cum ar fi SOCKS5 nume de utilizator/parolă, NTLM, LDAP, Kerberos și SSO.
Serverul este foarte personalizabil, oferind o gestionare detaliată a utilizării lățimii de bandă și a parametrilor de conectare. 3proxy poate fi instalat pe platformele Windows, Linux și macOS. Este un server proxy ușor și ușor de utilizat, potrivit pentru rețele mici și mijlocii. Este posibil să închiriați un proxy vps.
Trebuie să aveți grijă, deoarece nu este de dorit să instalați serverul fără autorizație. Acest lucru poate duce la utilizarea neautorizată a serverului de către intruși pentru a organiza spam și trafic ridicat.
Pentru început, trebuie instalate mai multe pachete și dependențe.
Pentru AlmaLinux este necesară comanda:
yum -y install gcc wget tar
iar pentru Debian:
apt install -y build-essential wget tar
Apoi descărcați fișierele de pe site-ul oficial al proiectului 3proxy, despachetați arhiva și compilați fișierele descărcate.
Apoi, creați directoarele necesare pentru fișierele de configurare și jurnale, transferați executabilul 3proxy
și creați un nou utilizator"proxyuser
" și atribuiți-i drepturi asupra directoarelor. Pentru a crea un nou fișier de configurare, executați comanda:
touch /etc/3proxy/3proxy.cfg
Atribuiți permisiuni numai utilizatorului root cu chmod 600 /etc/3proxy/3proxy.cfg
.
După crearea unui nou fișier de configurare, este necesar să îl completați corect. Pentru a face acest lucru, notați uid
și gid ale
utilizatorului"proxyuser
", apoi utilizați un editor de text pentru a copia și lipi textul din fișierul de configurare de exemplu. Salvați modificările în fișierul de configurare și avem un 3proxy instalat cu suport http(s) și socks5-proxy.
Mai jos este prezentat un exemplu de fișier de configurare:
Configurarea serverului pentru a rula ca proxyuser
(introduceți uid
și gid ale
utilizatorului nostru pe care l-am învățat mai devreme). setgid 991
setuid 991
Specificați nameserverele corecte. Consultați /etc/resolv.conf
: nserver 8.8.8.8.8.8
nserver 8.8.4.4
Utilizați timeout-urile implicite și dimensiunea cache-ului pentru interogările DNS: timeouts 1 5 30 60 180 180 1800 1800 1800 15 60
nscache 65536
Specificați modul de pornire ca fiind daemon: daemon
Specificați adresa IP a interfeței externe a serverului: external 111.111.111.111.111.111
(sau ignorați linia dacă IP-ul este același).
Specificați adresa IP a interfeței interne a serverului: internal 192.168.0.1
(sau ignorați-l pentru ca proxy-ul să asculte toate IP-urile).
Configurați proxy-ul http pe portul standard 3128: proxy -p3128 -n -a
(specificați portul, asigurându-vă în prealabil că funcționează).
Configurați socks proxy pe portul standard 1080: socks -p1080
(specificați portul dvs., verificând dacă funcționează în prealabil).
Specificați calea către jurnale, formatul și rotația jurnalelor: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
În continuare, creați un fișier de inițializare pentru systemd
și configurați permisiunile corecte:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Următorul text trebuie introdus în acest fișier:
[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 proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Salvați și actualizați configurația systemd
:
# systemctl daemon-reload
Porniți 3proxy și adăugați-l la autoloader:
# systemctl start 3proxy
# systemctl enable 3proxy
Configurația este completă. Acum aveți http-proxy pe portul 3128 și socks-proxy
pe portul 1080.
Prima problemă este că există o șansă ca, după ce înregistrați un domeniu nou, acesta să nu vă fie disponibil din cauza memorării în cache a numelui de domeniu. Pentru a rezolva această problemă, trebuie să așteptați actualizarea înregistrărilor DNS sau să adăugați adresa IP a serverului dvs. și noul domeniu la fișierul hosts
. Acest lucru vă va permite să accesați noul domeniu până când înregistrările DNS sunt actualizate.
A doua problemă - dacă utilizați un server proxy cu porturi implicite, mai devreme sau mai târziu serverul poate fi detectat. Pentru a rezolva această problemă, este recomandat să modificați porturile.
De exemplu, puteți seta portul 7834 pe proxy http și 7835 pe Socks. Cu toate acestea, astfel de porturi pot fi, de asemenea, detectate, astfel încât puteți configura firewall-ul pentru a permite accesul la server numai de la anumite adrese, în timp ce altora le va fi refuzat accesul. Această soluție este destul de fiabilă, deși nu prea flexibilă, deoarece este posibil să nu aveți acces la o adresă IP statică.
A treia problemă este că, dacă utilizați un server proxy și păstrați jurnale ale tuturor conexiunilor, în timp acestea pot deveni destul de mari și pot ocupa cea mai mare parte a spațiului liber de pe disc. Pentru a evita această problemă, ar trebui să aveți grijă de rotația jurnalelor sau să nu păstrați deloc jurnalele.
Există diverse metode de rotație a jurnalelor care vă permit să păstrați doar ultimele câteva fișiere de jurnal și să ștergeți automat jurnalele mai vechi. Prin urmare, cel mai bine este să configurați procesul de rotație a jurnalelor în avans pentru a evita supraîncărcarea discului. Acest lucru vă va ajuta să salvați toate datele și să evitați pierderea informațiilor atunci când utilizați un server proxy.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
De asemenea, este necesar să creați un director pentru jurnale și să setați permisiunile (pornim serverul cu drepturi minime de nimeni în sistem utilizând directivele setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Să luăm în considerare instalarea 3proxy în Docker.
Mai întâi de toate, trebuie să instalăm câteva pachete (iar pentru sistemele de operare Debian și Ubuntu recent instalate, este posibil să fie necesar să actualizăm și indexul pachetelor apt
cu # apt update
).
Pentru AlmaLinux și CentOS:
# yum install docker docker-compose
Pentru Ubuntu și Debian:
# apt install docker docker.io docker-compose
Descărcați imaginea:
# docker pull 3proxy/3proxy
În mod implicit, 3proxy utilizează un mediu chroot securizat în /usr/local/3proxy
cu uid 65535
și gid 65535
și se așteaptă ca fișierul de configurare 3proxy să fie plasat în /usr/local/etc/3proxy
. Căile din fișierul de configurare ar trebui să fie specificate relativ la /usr/local/3proxy
, adică ar trebui să fie /logs
în loc de /usr/local/3proxy/logs
. În chroot, este necesară permisiunea pentru nserver
.
Pentru a face acest lucru, creați un director și un fișier de configurare 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Apoi, utilizați orice editor de text dorit pentru a edita fișierul de configurare 3proxy .conf
creat. Pentru a rula 3proxy în Docker, configurația minimă este suficientă:
nserver 8.8.8.8.8.8
socks -p3129
Pentru a adăuga logging și user, trebuie să adăugați la fișierul de configurare 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
În loc de"87beeef3f4ee4661ac1897eca216fc26
" trebuie să specificați hash-ul MD5 al parolei pentru proxyuser
. Puteți afla hash-ul MD5 utilizând generatoare online.
Să pornim 3proxy utilizând docker-compose
. Acest lucru va necesita crearea unui fișier de configurare în format .yml
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Introduceți acolo următorul text utilizând un editor de text:
version: "2.1"
services:
3proxysvc:
image: 3proxy/3proxy:latest
container_name: 3proxy
volumes:
- /etc/dockerapp/3proxy/conf:/usr/local/3proxy/conf
ports:
- 8080:3129
restart: unless-stopped
Salvați. În acest fișier am specificat portul extern 8080. Acum îl putem rula:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Vom primi un răspuns ca acesta:
Crearea rețelei"3proxy_default
" cu driverul implicit
Crearea rețelei 3proxy ... finalizat
Test:
# docker ps
Primim un răspuns cu ID-ul containerului, imaginea, starea, porturile utilizate și numele:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5