3proxy är en proxyserver med fri och öppen källkod som används för olika ändamål, t.ex. för att filtrera trafik, cachelagra och blockera specifika webbplatser. Den stöder olika protokoll som SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP och stöder autentiseringsmetoder som SOCKS5 användarnamn/lösenord, NTLM, LDAP, Kerberos och SSO.
Servern är mycket anpassningsbar och ger detaljerad hantering av bandbreddsanvändning och anslutningsparametrar. 3proxy kan installeras på Windows-, Linux- och macOS-plattformar. Det är en lättviktig och lättanvänd proxyserver som passar för små till medelstora nätverk. Det är möjligt att hyra en vps-proxy.
Var försiktig eftersom det inte är önskvärt att installera servern utan tillstånd. Detta kan leda till att servern används av obehöriga för att organisera skräppost och hög trafik.
Till att börja med måste flera paket och beroenden installeras.
För AlmaLinux är kommandot:
yum -y install gcc wget tar
och för Debian:
apt install -y build-essential wget tar
Ladda sedan ner filerna från den officiella webbplatsen för 3proxy-projektet, packa upp arkivet och kompilera de nedladdade filerna.
Skapa sedan de nödvändiga katalogerna för konfigurationsfilerna och loggarna, överför den körbara filen 3proxy
och skapa en ny användare"proxyuser
" och tilldela honom rättigheter till katalogerna. För att skapa en ny konfigurationsfil kör du kommandot:
touch /etc/3proxy/3proxy.cfg
Tilldela endast root-användaren behörighet med chmod 600 /etc/3proxy/3proxy.cfg
.
När du har skapat en ny konfigurationsfil är det nödvändigt att fylla i den korrekt. För att göra detta skriver du ner uid
och gid
för användaren"proxyuser
" och använder sedan en textredigerare för att kopiera och klistra in texten från exempelkonfigurationsfilen. Spara ändringarna i konfigurationsfilen och vi har nu en installerad 3proxy med stöd för http(s) och socks5-proxy.
Nedan visas ett exempel på en konfigurationsfil:
Konfigurera servern så att den körs som proxyuser
(infoga uid
och gid
för vår användare som vi lärde oss tidigare). setgid 991
setuid 991
Ange rätt namnservrar. Se /etc/resolv.conf:
nserver 8.8.8.8.8
nserver 8.8.4.4
Använd standardtimeouts och cachestorlek för DNS-frågor: timeouts 1 5 30 60 180 180 1800 1800 1800 15 60
nscache 65536
Ange startläget som daemon: daemon
Ange IP-adressen för serverns externa gränssnitt: external 111.111.111.111.111.111
(eller ignorera raden om IP-adressen är densamma).
Ange IP-adressen för serverns interna gränssnitt: internal 192.168.0.1
(eller ignorera den så att proxyn lyssnar på alla IP-adresser).
Konfigurera http-proxy på standardport 3128: proxy -p3128 -n -a
(ange din port, se till att den fungerar i förväg).
Konfigurera sockproxy på standardport 1080: socks -p1080
(ange din port och kontrollera att den fungerar i förväg).
Ange sökväg till loggar, loggformat och rotation: log /var/log/3proxy/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotera 30
Skapa sedan en initialiseringsfil för systemd
och konfigurera rätt behörigheter:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Följande text ska infogas i denna fil:
[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
Spara och uppdatera systemd-konfigurationen
:
# systemctl daemon-reload
Starta 3proxy och lägg till den i autoladdaren:
# systemctl start 3proxy
# systemctl enable 3proxy
Konfigurationen är klar. Du har nu http-proxy på port 3128 och socks-proxy
på port 1080.
Det första problemet är att det finns en risk att när du registrerar en ny domän kommer den inte att vara tillgänglig för dig på grund av cachning av domännamn. För att lösa det här problemet bör du vänta på att DNS-posterna uppdateras eller lägga till IP-adressen för din server och den nya domänen i hosts-filen
. På så sätt får du tillgång till den nya domänen tills DNS-posterna har uppdaterats.
Problem två - om du använder en proxyserver med standardportar kan servern förr eller senare upptäckas. För att lösa detta problem rekommenderas att du ändrar portarna.
Du kan t.ex. ställa in port 7834 på http-proxy och 7835 på Socks. Men sådana portar kan också upptäckas, så du kan konfigurera brandväggen för att tillåta åtkomst till servern endast från vissa adresser, medan andra kommer att nekas åtkomst. Denna lösning är ganska tillförlitlig, men inte alltför flexibel eftersom du kanske inte har tillgång till en statisk IP-adress.
Det tredje problemet är att om du använder en proxyserver och för loggar över alla anslutningar kan de med tiden bli ganska stora och ta upp det mesta av det lediga utrymmet på din disk. För att undvika detta problem bör du se till att rotera loggarna eller inte föra några loggar alls.
Det finns olika metoder för loggrotation som gör att du bara kan behålla de senaste loggfilerna och automatiskt radera äldre loggar. Därför är det bäst att ställa in loggrotationsprocessen i förväg för att undvika att överfylla skivan. Detta hjälper dig att spara alla data och undvika att förlora information när du använder en proxyserver.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Det är också nödvändigt att skapa en katalog för loggar och ställa in behörigheter (vi startar servern med minimala rättigheter för ingen i systemet med hjälp av setgid/setud-direktiven
):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Låt oss överväga att installera 3proxy i Docker.
Först och främst måste vi installera några paket (och för nyligen installerade Debian- och Ubuntu-operativsystem kan vi också behöva uppdatera apt-paketindexet
med # apt update
).
För AlmaLinux och CentOS:
# yum install docker docker-compose
För Ubuntu och Debian:
# apt install docker docker.io docker-compose
Ladda ner bilden:
# docker pull 3proxy/3proxy
Som standard använder 3proxy en säker chroot-miljö i /usr/local/3proxy
med uid 65535
och gid 65535
, och förväntar sig att 3proxy-konfigurationsfilen placeras i /usr/local/etc/3proxy
. Sökvägarna i konfigurationsfilen bör anges relativt /usr/local/3proxy
, dvs. det bör vara /logs
i stället för /usr/local/3proxy/logs
. I chroot krävs behörighet för nserver
.
För att göra detta skapar du en katalog och en 3proxy-konfigurationsfil
:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Använd sedan valfri textredigerare för att redigera den skapade konfigurationsfilen 3proxy .conf.
För att köra 3proxy i Docker räcker det med minimikonfigurationen:
nserver 8.8.8.8.8.8
strumpor -p3129
För att lägga till loggning och användare måste du lägga till i konfigurationsfilen 3proxy
:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Istället för"87beeef3f4ee4661ac1897eca216fc26
" måste du ange MD5-hashen för lösenordet för proxyanvändaren
. Du kan ta reda på MD5-hashvärdet med hjälp av generatorer på nätet.
Låt oss starta 3proxy med hjälp av docker-compose
. Detta kräver att du skapar en konfigurationsfil i .yml-format
:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Infoga följande text där med hjälp av en textredigerare:
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
Spara. I den här filen har vi angett den externa porten 8080. Nu kan vi köra den:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Vi kommer att få ett svar som detta:
Skapar nätverket"3proxy_default
" med standarddrivrutinen
Skapar 3proxy ... klar
Testar:
# docker ps
Vi får ett svar med container-ID, image, status, använda portar och namn:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5