3proxy е безплатен прокси сървър с отворен код, който се използва за различни цели, като филтриране на трафика, кеширане и блокиране на определени уебсайтове. Той поддържа различни протоколи, като SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, и поддържа методи за удостоверяване, като SOCKS5 потребителско име/парола, NTLM, LDAP, Kerberos и SSO.
Сървърът е с висока степен на персонализация, като осигурява подробно управление на използването на честотната лента и параметрите на връзката. 3proxy може да се инсталира на платформи Windows, Linux и macOS. Това е лек и лесен за използване прокси сървър, подходящ за малки и средни мрежи. Възможно е да наемете vps прокси сървър.
Трябва да се внимава, тъй като не е желателно сървърът да се инсталира без разрешение. Това може да доведе до неоторизирано използване на сървъра от нарушители за организиране на спам и голям трафик.
Като начало е необходимо да се инсталират няколко пакета и зависимости.
За AlmaLinux се изпълнява командата:
yum -y install gcc wget tar
и за Debian:
apt install -y build-essential wget tar
След това изтеглете файловете от официалния сайт на проекта 3proxy, разопаковайте архива и компилирайте изтеглените файлове.
След това създайте необходимите директории за конфигурационните файлове и дневниците, прехвърлете изпълнимия файл 3proxy
и създайте нов потребител"proxyuser
" и му присвоете права за директориите. За да създадете нов конфигурационен файл, изпълнете командата:
touch /etc/3proxy/3proxy.cfg
Задайте права само на потребителя root с chmod 600 /etc/3proxy/3proxy.cfg
.
След като създадете нов конфигурационен файл, е необходимо да го попълните правилно. За да направите това, запишете uid
и gid
на потребителя"proxyuser
", след което използвайте текстов редактор, за да копирате и поставите текста от примерния конфигурационен файл. Запазете промените в конфигурационния файл и вече имаме инсталиран 3proxy с поддръжка на http(s) и socks5-proxy.
По-долу е показан примерен конфигурационен файл:
Конфигуриране на сървъра да работи като proxyuser
(въведете uid
и gid
на нашия потребител, които научихме по-рано). setgid 991
setuid 991
Посочете правилните сървъри за имена. Вижте /etc/resolv.conf:
nserver 8.8.8.8.8.8
nserver 8.8.4.4
Използвайте времетраенето по подразбиране и размера на кеша за DNS заявките: 1 5 30 60 180 180 1800 1800 1800 15 60
nscache 65536
Задайте режим на стартиране като демон: daemon
Посочете IP адреса на външния интерфейс на сървъра: външен 111.111.111.111.111.111
(или игнорирайте реда, ако IP адресът е същият).
Посочете IP адреса на вътрешния интерфейс на сървъра: 192.168.0.1
(или го игнорирайте, за да може проксито да слуша всички IP адреси).
Конфигурирайте http прокси на стандартен порт 3128:
(посочете вашия порт, като предварително се уверите, че той работи): proxy -p3128 -n -a
.
Конфигуриране на прокси за чорапи на стандартен порт 1080: socks -p1080
(посочете вашия порт, като преди това проверите дали работи).
Посочете пътя до логовете, формата на логовете и ротацията им: 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
След това създайте инициализиращ файл за 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 proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
Запишете и актуализирайте конфигурацията на systemd
:
# systemctl daemon-reload
Стартирайте 3proxy и го добавете към автозадавача:
# systemctl start 3proxy
# systemctl enable 3proxy
Конфигурацията е завършена. Вече имате http-прокси на порт 3128 и socks-прокси
на порт 1080.
Първият проблем е, че има вероятност, след като регистрирате нов домейн, той да не е достъпен за вас поради кеширането на имената на домейни. За да решите този проблем, трябва да изчакате DNS записите да бъдат актуализирани или да добавите IP адреса на вашия сървър и новия домейн към файла hosts
. Това ще ви позволи да получите достъп до новия домейн, докато DNS записите бъдат актуализирани.
Втори проблем - ако използвате прокси сървър с портове по подразбиране, рано или късно сървърът може да бъде открит. За да се реши този проблем, се препоръчва да се променят портовете.
Например, можете да зададете порт 7834 за http прокси сървъра и 7835 за Socks. Такива портове обаче също могат да бъдат открити, затова можете да конфигурирате защитната стена така, че да разрешава достъп до сървъра само от определени адреси, а на други ще бъде отказан достъп. Това решение е доста надеждно, въпреки че не е твърде гъвкаво, тъй като може да нямате достъп до статичен IP адрес.
Третият проблем е, че ако използвате прокси сървър и съхранявате логове за всички връзки, с течение на времето те могат да станат доста големи и да заемат по-голямата част от свободното място на диска ви. За да избегнете този проблем, трябва да се погрижите за ротация на логовете или изобщо да не ги водите.
Съществуват различни методи за ротация на логовете, които ви позволяват да запазвате само последните няколко файла с логове и автоматично да изтривате по-старите. Ето защо е най-добре да настроите процеса на ротация на дневниците предварително, за да избегнете препълване на диска. Това ще помогне да се запазят всички данни и да се избегне загубата на информация при използване на прокси сървър.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Необходимо е също така да се създаде директория за дневници и да се зададат права (стартираме сървъра с минимални права на никой в системата, като използваме директивите setgid/setud
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Нека да разгледаме инсталирането на 3proxy в Docker.
Първо, трябва да инсталираме някои пакети (а за наскоро инсталираните операционни системи Debian и Ubuntu може да се наложи и да актуализираме индекса на пакетите apt
с # apt update
).
За AlmaLinux и CentOS:
# yum install docker docker-compose
За Ubuntu и Debian:
# apt install docker docker.io docker-compose
Изтегляне на изображение:
# docker pull 3proxy/3proxy
По подразбиране 3proxy използва защитена среда chroot в /usr/local/3proxy
с uid 65535
и gid 65535
и очаква конфигурационният файл на 3proxy да бъде поставен в /usr/local/etc/3proxy
. Пътищата в конфигурационния файл трябва да бъдат зададени относително към /usr/local/3proxy
, т.е. трябва да бъде /logs
вместо /usr/local/3proxy/logs
. В chroot се изисква разрешение за nserver
.
За да направите това, създайте директория и конфигурационен файл на 3proxy
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
След това използвайте всеки текстов редактор, който ви харесва, за да редактирате създадения конфигурационен файл 3proxy .conf
. За да стартирате 3proxy в Docker, минималната конфигурация е достатъчна:
nserver 8.8.8.8.8.8
socks -p3129
За да добавите регистриране и потребител, трябва да добавите в конфигурационния файл 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Вместо"87beeef3f4ee4661ac1897eca216fc26"
трябва да посочите MD5 хеша на паролата за проксипотребителя
. Можете да откриете MD5 хеша, като използвате онлайн генератори.
Нека да стартираме 3proxy с помощта на docker-compose
. За целта е необходимо да се създаде конфигурационен файл във формат .yml:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Въведете следния текст в него, като използвате текстов редактор:
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
Запишете. В този файл сме посочили външния порт 8080. Сега можем да го стартираме:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Ще получим следния отговор:
Създаване на мрежа"3proxy_default
" с драйвер по подразбиране
Създаване на 3proxy ... готово
Тест:
# docker ps
Получаваме отговор с идентификатора на контейнера, образа, състоянието, използваните портове и името:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5