3proxy, trafiği filtreleme, önbelleğe alma ve belirli web sitelerini engelleme gibi çeşitli amaçlar için kullanılan ücretsiz ve açık kaynaklı bir proxy sunucusudur. SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP gibi çeşitli protokolleri destekler ve SOCKS5 kullanıcı adı/parola, NTLM, LDAP, Kerberos ve SSO gibi kimlik doğrulama yöntemlerini destekler.
Son derece özelleştirilebilir olan sunucu, bant genişliği kullanımı ve bağlantı parametrelerinin ayrıntılı yönetimini sağlar. 3proxy Windows, Linux ve macOS platformlarına kurulabilir. Küçük ve orta ölçekli ağlar için uygun, hafif ve kullanımı kolay bir proxy sunucusudur. Bir vps proxy kiralamak mümkündür.
Sunucunun izinsiz olarak kurulması istenmediğinden dikkatli olunmalıdır. Bu, sunucunun izinsiz olarak davetsiz misafirler tarafından spam ve yüksek trafik düzenlemek için kullanılmasına yol açabilir.
Başlangıç olarak, çeşitli paketlerin ve bağımlılıkların yüklenmesi gerekir.
AlmaLinux için komut:
yum -y install gcc wget tar
ve Debian için:
apt install -y build-essential wget tar
Daha sonra dosyaları 3proxy projesinin resmi sitesinden indirin, arşivi açın ve indirilen dosyaları derleyin.
Daha sonra, yapılandırma dosyaları ve günlükler için gerekli dizinleri oluşturun,3proxy
çalıştırılabilir dosyasını aktarın ve yeni bir"proxyuser
" kullanıcısı oluşturun ve ona dizinler için haklar atayın. Yeni bir yapılandırma dosyası oluşturmak için şu komutu çalıştırın:
touch /etc/3proxy/3proxy.cfg
chmod 600 /etc/3proxy/3proxy.cfg
ile yalnızca root kullanıcısına izinler atayın.
Yeni bir yapılandırma dosyası oluşturduktan sonra, dosyayı doğru bir şekilde doldurmak gerekir. Bunu yapmak için,"proxyuser
" kullanıcısının uid
ve gid
'sini yazın, ardından örnek yapılandırma dosyasındaki metni kopyalayıp yapıştırmak için bir metin düzenleyici kullanın. Değişiklikleri yapılandırma dosyasına kaydedin ve http(s) ve socks5-proxy destekli kurulu bir 3proxy'ye sahip olun.
Aşağıda örnek bir yapılandırma dosyası bulunmaktadır:
Sunucuyu proxyuser olarak çalışacak şekilde yapılandırma
(daha önce öğrendiğimiz kullanıcımızın uid
ve gid değerlerini
girin). setgid 991
setuid 991
Doğru ad sunucularını belirtin. Bkz. /etc/resolv.conf
: nserver 8.8.8.8.8
nserver 8.8.4.4
DNS sorguları için varsayılan zaman aşımlarını ve önbellek boyutunu kullanın: zaman aşımları 1 5 30 60 180 180 1800 1800 15 60
nscache 65536
Başlangıç modunu daemon olarak belirtin: daemon
Sunucunun harici arayüzünün IP adresini belirtin: harici 111.111.111.111.111
(veya IP aynıysa satırı yok sayın).
Sunucunun dahili arayüzünün IP adresini belirtin: internal 192.168.0.1
(veya proxy'nin tüm IP'leri dinlemesi için bu satırı yoksayabilirsiniz).
Standart bağlantı noktası 3128 üzerinde http proxy yapılandırın: proxy -p3128 -n -a
(portunuzu belirtin, önceden çalıştığından emin olun).
Standart 1080 numaralı bağlantı noktasında socks proxy yapılandırın: socks -p1080
(portunuzu belirtin, önceden çalışıp çalışmadığını kontrol edin).
Günlüklerin yolunu, günlük biçimini ve rotasyonunu belirtin: log /var/log/3proxy/3proxy/3proxy.log D
logformat "- +_L%t.%. N.%p %E %U %C:%c %R:%r %O %I %h %T"
30 döndür
Ardından, systemd
için bir başlatma dosyası oluşturun ve doğru izinleri yapılandırın:
# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
Aşağıdaki metin bu dosyaya eklenmelidir:
[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
yapılandırmasını kaydedin ve güncelleyin:
# systemctl daemon-reload
3proxy'yi başlatın ve otomatik yükleyiciye ekleyin:
# systemctl start 3proxy
# systemctl enable 3proxy
Yapılandırma tamamlandı. Artık 3128 numaralı bağlantı noktasında http-proxy ve 1080 numaralı bağlantı noktasında socks-proxy
'niz var.
İlk sorun, yeni bir alan adını kaydettikten sonra, alan adı önbelleğe alma nedeniyle sizin için kullanılabilir olmama ihtimalinin olmasıdır. Bu sorunu çözmek için DNS kayıtlarının güncellenmesini beklemeli veya sunucunuzun IP adresini ve yeni alan adını hosts
dosyanıza eklemelisiniz. Bu, DNS kayıtları güncellenene kadar yeni alan adına erişmenizi sağlayacaktır.
İkinci sorun - varsayılan bağlantı noktalarına sahip bir proxy sunucusu kullanıyorsanız, er ya da geç sunucu algılanabilir. Bu sorunu çözmek için portları değiştirmeniz önerilir.
Örneğin, http proxy için 7834 ve Socks için 7835 portlarını ayarlayabilirsiniz. Bununla birlikte, bu tür bağlantı noktaları da algılanabilir, bu nedenle güvenlik duvarını sunucuya yalnızca belirli adreslerden erişime izin verecek şekilde yapılandırabilirsiniz, diğerlerinin erişimi reddedilecektir. Bu çözüm oldukça güvenilirdir, ancak statik bir IP adresine erişiminiz olmayabileceğinden çok esnek değildir.
Üçüncü sorun, bir proxy sunucusu kullanıyorsanız ve tüm bağlantıların günlüklerini tutuyorsanız, zamanla oldukça büyük hale gelebilir ve diskinizdeki boş alanın çoğunu kaplayabilir. Bu sorundan kaçınmak için günlük rotasyonuna dikkat etmeli ya da günlükleri hiç tutmamalısınız.
Yalnızca son birkaç günlük dosyasını tutmanıza ve eski günlükleri otomatik olarak silmenize olanak tanıyan çeşitli günlük döndürme yöntemleri vardır. Bu nedenle, diskin taşmasını önlemek için günlük döndürme işlemini önceden ayarlamak en iyisidir. Bu, bir proxy sunucusu kullanırken tüm verilerin kaydedilmesine ve bilgi kaybının önlenmesine yardımcı olacaktır.
users proxyuser:CL:password
daemon
log /var/log/3proxy/3proxy.log D
rotate 30
auth strong
proxy -n -a
setgid 65534
setuid 65534
Ayrıca günlükler için bir dizin oluşturmak ve izinleri ayarlamak gerekir (sunucuyu setgid/setud
yönergelerini kullanarak sistemdeki hiç kimsenin minimum haklarıyla başlatıyoruz):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Docker'da 3proxy kurulumunu ele alalım.
Öncelikle bazı paketleri kurmamız gerekiyor (ve yeni kurulan Debian ve Ubuntu işletim sistemleri için apt
paket indeksini # apt update
ile güncellememiz de gerekebilir).
AlmaLinux ve CentOS için:
# yum install docker docker-compose
Ubuntu ve Debian için:
# apt install docker docker.io docker-compose
Görüntüyü indirin:
# docker pull 3proxy/3proxy
Varsayılan olarak, 3proxy /usr/local/3proxy
içinde uid 65535
ve gid 65535
ile güvenli bir chroot ortamı kullanır ve 3proxy yapılandırma dosyasının /usr/local/etc/3proxy
içine yerleştirilmesini bekler. Yapılandırma dosyasındaki yollar /usr/local/3proxy
'ye göre belirtilmelidir, yani /usr/local/3proxy/logs
yerine /logs
olmalıdır. Chroot'ta nserver
için izin gereklidir.
Bunu yapmak için bir dizin ve bir 3proxy
yapılandırma dosyası oluşturun:
# mkdir -p /etc/dockerapp/3proxy
# touch /etc/dockerapp/3proxy/3poxy.conf
Ardından, oluşturulan 3proxy .conf
yapılandırma dosyasını düzenlemek için istediğiniz herhangi bir metin düzenleyicisini kullanın. Docker'da 3proxy çalıştırmak için minimum yapılandırma yeterlidir:
nserver 8.8.8.8.8
socks -p3129
Günlük kaydı ve kullanıcı eklemek için 3proxy
yapılandırma dosyasına eklemeniz gerekir:
log /logs/3proxy.log
auth strong
users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
"87beeef3f4ee4661ac1897eca216fc26
" yerine proxy kullanıcısı
için şifrenin MD5 hash'ini belirtmeniz gerekir. MD5 karmasını çevrimiçi oluşturucuları kullanarak öğrenebilirsiniz.
Docker-compose
kullanarak 3proxy'yi başlatalım. Bunun için .yml
formatında bir yapılandırma dosyası oluşturmamız gerekecek:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Bir metin düzenleyici kullanarak aşağıdaki metni buraya ekleyin:
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
Kaydet. Bu dosyada 8080 harici portunu belirttik. Şimdi çalıştırabiliriz:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Bunun gibi bir yanıt alacağız:
Varsayılan sürücü ile"3proxy_default
" ağı oluşturuluyor
3proxy oluşturuluyor ... tamamlandı
Test edin:
# docker ps
Konteyner kimliği, imajı, durumu, kullanılan portları ve adını içeren bir yanıt alıyoruz:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p..." 5