Yn dit artikel wol ik de mooglikheden fan transparante proxying iepenbierje, wêrtroch jo folslein ûngemurken troch kliïnten kinne omliede it hiele of in diel fan it ferkear troch eksterne proxy-tsjinners.
Doe't ik dit probleem begon op te lossen, kaam ik it feit tsjin dat de ymplemintaasje derfan ien wichtich probleem hat - it HTTPS-protokol. Yn 'e goede âlde dagen wiene d'r gjin bysûndere problemen mei transparante HTTP-proxying, mar mei HTTPS-proxying rapportearje browsers protokol-ynterferinsje en dat is wêr't it lok einiget.
Yn mienskiplike ynstruksjes foar de Squid proxy-tsjinner biede se sels oan om har eigen sertifikaat te generearjen en it op kliïnten te ynstallearjen, wat folsleine ûnsin is op syn minst irrational en liket op in MITM-oanfal. Ik wit dat Squid al wit hoe te dwaan wat ferlykber, mar dit artikel giet oer in bewezen en wurkje metoade mei help fan 3proxy út de respektearre 3APA3A.
Folgjende sille wy it proses fan it bouwen fan 3proxy út boarnen, syn konfiguraasje, folsleine en selektive proxying mei NAT, distribúsje fan it kanaal nei ferskate eksterne proxy-tsjinners, lykas it brûken fan in router en statyske rûtes. Wy brûke Debian 9 x64 as OS. Begjinne!
3proxy ynstallearje en in normale proxy útfiere
1. Ynstallearje ifconfig (fan it pakket net-tools)
apt-get install net-tools
2. Ynstallearje Midnighth Commander
apt-get install mc
3. Wy hawwe no 2 ynterfaces:
enp0s3 - ekstern, sjocht nei it ynternet
enp0s8 - yntern, moat sjen yn it lokale netwurk
Yn oare Debian-basearre distribúsjes wurde de ynterfaces meastal neamd eth0 en eth1.
ifconfig -a
Interfacesenp0s3: flaggen=4163 mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 prefixlen 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX-pakketten 6412 bytes 8676619 (8.2 MiB)
RX flaters 0 falle 0 oerrint 0 frame 0
TX-pakketten 1726 bytes 289128 (282.3 KiB)
TX flaters 0 sakke 0 oerrinners 0 ferfierder 0 botsingen 0
enp0s8: flaggen=4098 mtu 1500
ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX-pakketten 0 bytes 0 (0.0 B)
RX flaters 0 falle 0 oerrint 0 frame 0
TX pakketten 0 bytes 0 (0.0 B)
TX flaters 0 sakke 0 oerrinners 0 ferfierder 0 botsingen 0
lo: flaggen=73 mtu 65536
inet 127.0.0.1 netmaske 255.0.0.0
inet6 :: 1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX-pakketten 0 bytes 0 (0.0 B)
RX flaters 0 falle 0 oerrint 0 frame 0
TX pakketten 0 bytes 0 (0.0 B)
TX flaters 0 sakke 0 oerrinners 0 ferfierder 0 botsingen 0
De enp0s8-ynterface wurdt op it stuit net brûkt, wy sille it ynskeakelje as wy de NAT- as NAT Proxy-konfiguraasje wolle brûke. It is dan dat it logysk wêze soe om der in statyske ip oan te jaan.
4. Lit ús begjinne te ynstallearjen 3proxy
4.1 Ynstallearje basispakketten foar it kompilearjen fan 3proxy fan boarne
root@debian9:~# apt-get install build-essential libevent-dev libssl-dev -y
4.2. Meitsje in map foar it downloaden fan it argyf mei boarnen
root@debian9:~# mkdir -p /opt/proxy
4.3. Litte wy nei dizze map gean
root@debian9:~# cd /opt/proxy
4.4. Litte wy no it lêste 3proxy-pakket downloade. Op it momint fan dit skriuwen wie de lêste stabile ferzje 0.8.12 (18/04/2018) Download it fan 'e offisjele 3proxy-webside
root@debian9:/opt/proxy# wget https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gz
4.5. Pake it ynladen argyf út
root@debian9:/opt/proxy# tar zxvf 0.8.12.tar.gz
4.6. Gean nei de útpakte map om it programma te bouwen
root@debian9:/opt/proxy# cd 3proxy-0.8.12
4.7. Folgjende moatte jo in rigel tafoegje oan it kopteksttriem sadat ús server folslein anonym is (it wurket echt, alles wurdt kontrolearre, client-ips binne ferburgen)
root@debian9:/opt/proxy/3proxy-0.8.12# nano +29 src/proxy.h
It tafoegjen fan in line
#define ANONYMOUS 1
Druk op Ctrl+x en Enter om wizigingen op te slaan.
4.8. Litte wy it programma bouwe
root@debian9:/opt/proxy/3proxy-0.8.12# make -f Makefile.Linux
makelogmake[2]: De map ferlitte '/opt/proxy/3proxy-0.8.12/src/plugins/TransparentPlugin'
meitsje[1]: De map ferlitte '/opt/proxy/3proxy-0.8.12/src'
Gjin flaters, trochgean.
4.9. Ynstallearje it programma op it systeem
root@debian9:/opt/proxy/3proxy-0.8.12# make -f Makefile.Linux install
4.10. Gean nei de root-map en kontrolearje wêr't it programma ynstalleare is
root@debian9:/opt/proxy/3proxy-0.8.12# cd ~/
root@debian9:~# whereis 3proxy
3proxy: /usr/local/bin/3proxy /usr/local/etc/3proxy
4.11. Litte wy in map meitsje foar konfiguraasjebestannen en logs yn 'e thúsmap fan' e brûker
root@debian9:~# mkdir -p /home/joke/proxy/logs
4.12. Gean nei de map wêr't de konfiguraasje wêze moat
root@debian9:~# cd /home/joke/proxy/
4.13. Meitsje in lege triem en kopiearje de konfiguraasje dêr
root@debian9:/home/joke/proxy# cat > 3proxy.conf
3proxy.confdaemon
pidfile /home/joke/proxy/3proxy.pid
tsjinner 8.8.8.8
nscache 65536
brûker tester: CL: 1234
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
draaie 3
auth sterk
flush
tastean tester
sokken -p3128
proxy -p8080
Om op te slaan, druk op Ctrl + Z
4.14. Litte wy in pid-bestân oanmeitsje sadat d'r gjin opstartflaters binne.
root@debian9:/home/joke/proxy# cat > 3proxy.pid
Om op te slaan, druk op Ctrl + Z
4.15. Litte wy de proxytsjinner begjinne!
root@debian9:/home/joke/proxy# 3proxy /home/joke/proxy/3proxy.conf
4.16. Litte wy sjen oft de tsjinner nei havens harket
root@debian9:~/home/joke/proxy# netstat -nlp
netstat logAktive ynternetferbiningen (allinich servers)
Proto Recv-Q Send-Q Lokaal adres Bûtenlânske adres Steat PID / programma namme
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 504/3proxy
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 338/sshd
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 504/3proxy
tcp6 0 0 :::22 :::* LISTEN 338/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 352/dhclient
As it waard skreaun yn 'e konfiguraasje, harket de webproxy op poarte 8080, Socks5 proxy - 3128.
4.17. Om de proxytsjinst nei in herstarten automatysk te starten, moatte jo it tafoegje oan cron.
root@debian9:/home/joke/proxy# crontab -e
It tafoegjen fan in line
@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxy.conf
Wy drukke op Enter, om't cron it ein-fan-line-karakter moat sjen en it bestân bewarje.
D'r moat in berjocht wêze oer it ynstallearjen fan in nije crontab.
crontab: nije crontab ynstallearje
4.18. Litte wy it systeem opnij starte en besykje fia de browser te ferbinen mei de proxy. Foar ferifikaasje brûke wy de Firefox-browser (foar in webproxy) en de FoxyProxy-add-on foar socks5 mei autentikaasje.
root@debian9:/home/joke/proxy# reboot
4.19. Nei it kontrolearjen fan it wurk fan 'e proxy nei it herstarten, kinne jo de logs sjen. Dit foltôget de proxy-tsjinner opset.
3 proxy log1542573996.018 PROXY.8080 00000 tester 192.168.23.10:50915 217.12.15.54:443 1193 6939 0 CONNECT_ads.yahoo.com:443_HTTP
1542574289.634 SOCK5.3128 00000 tester 192.168.23.10:51193 54.192.13.69:443 0 0 0 CONNECT_normandy.cdn.mozilla.net:443
De Transparent Proxy NAT-konfiguraasje ynstelle en útfiere
Yn dizze konfiguraasje sille alle apparaten op it ynterne netwurk transparant wurkje op it ynternet fia in proxy-tsjinner op ôfstân. Absoluut alle tcp ferbinings wurde omlaat nei ien of mear (echt wreidet it kanaal breedte, konfiguraasje foarbyld No. 2!) proxy tsjinners. De DNS-tsjinst sil 3proxy (dnspr) mooglikheden brûke. UDP sil net "gean" nei bûten, om't wy it foarútmeganisme noch net brûke (standert útskeakele yn 'e Linux-kernel).
1. It is tiid om de enp0s8 ynterface yn te skeakeljen
root@debian9:~# nano /etc/network/interfaces
/etc/network/interfaces triem# Dit bestân beskriuwt de netwurkynterfaces beskikber op jo systeem
# en hoe se te aktivearjen. Foar mear ynformaasje, sjoch ynterfaces (5).
boarne /etc/network/interfaces.d/*
# De loopback-netwurkynterface
auto it
iface lo inet loopback
# De primêre netwurkynterface
tastean-hotplug enp0s3
iface enp0s3 inet dhcp
# De sekundêre netwurkynterface
tastean-hotplug enp0s8
iface enp0s8 inet statysk
adres 192.168.201.254
netmask 255.255.255.0
Hjir hawwe wy de enp0s8-ynterface in statysk adres tawiisd 192.168.201.254 en in masker 255.255.255.0
Bewarje konfiguraasje Ctrl+X en herstart
root@debian9:~# reboot
2. Kontrolearje Schnittstellen
root@debian9:~# ifconfig
ifconfig logenp0s3: flaggen=4163 mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 broadcast 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 prefixlen 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX-pakketten 61 bytes 7873 (7.6 KiB)
RX flaters 0 falle 0 oerrint 0 frame 0
TX-pakketten 65 bytes 10917 (10.6 KiB)
TX flaters 0 sakke 0 oerrinners 0 ferfierder 0 botsingen 0
enp0s8: flaggen=4163 mtu 1500
inet 192.168.201.254 netmask 255.255.255.0 broadcast 192.168.201.255
inet6 fe80::a00:27ff:fe79:a7e3 prefixlen 64 scopeid 0x20 ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX-pakketten 0 bytes 0 (0.0 B)
RX flaters 0 falle 0 oerrint 0 frame 0
TX pakketten 8 bytes 648 (648.0 B)
TX flaters 0 sakke 0 oerrinners 0 ferfierder 0 botsingen 0
lo: flaggen=73 mtu 65536
inet 127.0.0.1 netmaske 255.0.0.0
inet6 :: 1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX-pakketten 0 bytes 0 (0.0 B)
RX flaters 0 falle 0 oerrint 0 frame 0
TX pakketten 0 bytes 0 (0.0 B)
TX flaters 0 sakke 0 oerrinners 0 ferfierder 0 botsingen 0
3. Alles wurke út, no moatte jo 3proxy konfigurearje foar transparante proxying.
root@debian9:~# cd /home/joke/proxy/
root@debian9:/home/joke/proxy# cat > 3proxytransp.conf
Transparante proxy-konfiguraasjefoarbyld #1daemon
pidfile /home/joke/proxy/3proxy.pid
tsjinner 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
draaie 3
flush
auth unyk
dnspr
tastean *
âlder 1000 sokken5 IP_ADDRESS_EXTERNAL_PROXY 3128 tester 1234
plugin /opt/proxy/3proxy-0.8.12/src/TransparentPlugin.ld.so transparent_plugin
tcppm -i0.0.0.0 888 127.0.0.1 11111
4. No rinne 3proxy mei nije config
root@debian9:/home/joke/proxy# /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf
5. Add to crontab wer
root@debian9:/home/joke/proxy# crontab -e
@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf
6. Lit ús sjen wêr't ús proxy no harket
root@debian9:~# netstat -nlp
netstat logAktive ynternetferbiningen (allinich servers)
Proto Recv-Q Send-Q Lokaal adres Bûtenlânske adres Steat PID / programma namme
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 349/sshd
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 354/3proxy
tcp6 0 0 :::22 :::* LISTEN 349/sshd
udp 0 0 0.0.0.0:53 0.0.0.0:* 354/3proxy
udp 0 0 0.0.0.0:68 0.0.0.0:* 367/dhclient
7. No is de proxy klear om alle TCP-ferbiningen te akseptearjen op poarte 888, DNS op poarte 53, om se troch te lieden nei socks5 op ôfstân - proxy en DNS Google 8.8.8.8. It bliuwt foar ús om it netfilter (iptables) en DHCP-regels te konfigurearjen foar it útjaan fan adressen.
8. Ynstallearje it iptables-persistent en dhcpd-pakket
root@debian9:~# apt-get install iptables-persistent isc-dhcp-server
9. Bewurkje de dhcpd opstarttriem
root@debian9:~# nano /etc/dhcp/dhcpd.conf
dhcpd.conf# dhcpd.conf
#
# Sample konfiguraasjetriem foar ISC dhcpd
#
# opsjedefinysjes mienskiplik foar alle stipe netwurken ...
opsje domeinnamme "example.org";
opsje domeinnamme-tsjinners ns1.example.org, ns2.example.org;
standert-lease-tiid 600;
max-lease-tiid 7200;
ddns-update-styl gjin;
# As dizze DHCP-tsjinner de offisjele DHCP-tsjinner is foar de lokale
# netwurk, de autoritative rjochtline moat net kommentearre wurde.
autoritatyf;
# In wat oare konfiguraasje foar in ynterne subnet.
subnet 192.168.201.0 netmask 255.255.255.0 {
berik 192.168.201.10 192.168.201.250;
opsje domeinnamme-tsjinners 192.168.201.254;
opsje routers 192.168.201.254;
opsje útstjoer-adres 192.168.201.255;
standert-lease-tiid 600;
max-lease-tiid 7200;
}
11. Reboot en kontrolearje de tsjinst op poarte 67
root@debian9:~# reboot
root@debian9:~# netstat -nlp
netstat logAktive ynternetferbiningen (allinich servers)
Proto Recv-Q Send-Q Lokaal adres Bûtenlânske adres Steat PID / programma namme
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 389/sshd
tcp 0 0 0.0.0.0:888 0.0.0.0:* LISTEN 310/3proxy
tcp6 0 0 :::22 :::* LISTEN 389/sshd
udp 0 0 0.0.0.0:20364 0.0.0.0:* 393/dhcpd
udp 0 0 0.0.0.0:53 0.0.0.0:* 310/3proxy
udp 0 0 0.0.0.0:67 0.0.0.0:* 393/dhcpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 405/dhclient
udp6 0 0 :::31728 :::* 393/dhcpd
raw 0 0 0.0.0.0:1 0.0.0.0:* 393/dhcpd
12. It bliuwt om alle tcp-oanfragen nei poarte 888 troch te lieden en de regel op te slaan yn iptables
root@debian9:~# iptables -t nat -A PREROUTING -s 192.168.201.0/24 -p tcp -j REDIRECT --to-ports 888
root@debian9:~# iptables-save > /etc/iptables/rules.v4
13. Om de bânbreedte fan it kanaal út te wreidzjen, kinne jo ferskate proxy-tsjinners tagelyk brûke. It totale bedrach moat wêze 1000. Nije ferbinings wurde oprjochte mei in kâns fan 0.2, 0.2, 0.2, 0.2, 0,1, 0,1 nei de oantsjutte proxy-tsjinners.
Opmerking: as wy in webproxy hawwe, dan moatte jo yn plak fan socks5 ferbine skriuwe, as socks4, dan socks4 (socks4 SUPPORT NET LOGIN / WACHTWOORDMAACHTIGING!)
Transparante proxy-konfiguraasjefoarbyld #2daemon
pidfile /home/joke/proxy/3proxy.pid
tsjinner 8.8.8.8
nscache 65536
maxconn 500
timeouts 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
draaie 3
flush
auth unyk
dnspr
tastean *
âlder 200 sokken5 IP_ADDRESS_EXTERNAL_PROXY#1 3128 tester 1234
âlder 200 sokken5 IP_ADDRESS_EXTERNAL_PROXY#2 3128 tester 1234
âlder 200 sokken5 IP_ADDRESS_EXTERNAL_PROXY#3 3128 tester 1234
âlder 200 sokken5 IP_ADDRESS_EXTERNAL_PROXY#4 3128 tester 1234
âlder 100 sokken5 IP_ADDRESS_EXTERNAL_PROXY#5 3128 tester 1234
âlder 100 sokken5 IP_ADDRESS_EXTERNAL_PROXY#6 3128 tester 1234
plugin /opt/proxy/3proxy-0.8.12/src/TransparentPlugin.ld.so transparent_plugin
tcppm -i0.0.0.0 888 127.0.0.1 11111
De NAT + Transparante Proxy-konfiguraasje ynstelle en útfiere
Yn dizze konfiguraasje sille wy it gewoane NAT-meganisme brûke mei selektyf of folslein transparant proxying fan yndividuele adressen of subnets. Brûkers fan it ynterne netwurk sille wurkje mei bepaalde tsjinsten / subnets sûnder sels te realisearjen dat se wurkje fia in proxy. Alle https-ferbiningen wurkje goed, gjin sertifikaten hoege te generearjen / ferfongen.
Litte wy earst beslute hokker subnets / tsjinsten wy wolle proxy. Litte wy oannimme dat eksterne proxy's lizze wêr't in tsjinst lykas pandora.com rint. No bliuwt it om har subnets / adressen te bepalen.
1. Ping
root@debian9:~# ping pandora.com
PING pandora.com (208.85.40.20) 56(84) bytes fan gegevens.
2. Wy type yn Google BGP 208.85.40.20
Litte wy nei de side gean
It kin sjoen wurde dat it subnet wêr't ik nei sykje AS40428 Pandora Media, Inc.
Foarheaksels iepenje v4
Hjir binne de fereaske subnets!
199.116.161.0/24
199.116.162.0/24
199.116.164.0/23
199.116.164.0/24
199.116.165.0/24
208.85.40.0/24
208.85.41.0/24
208.85.42.0/23
208.85.42.0/24
208.85.43.0/24
208.85.44.0/24
208.85.46.0/23
208.85.46.0/24
208.85.47.0/24
3. Om it oantal subnets te ferminderjen, moatte jo aggregaasje útfiere. Litte wy nei de side gean
199.116.161.0/24
199.116.162.0/24
199.116.164.0/23
208.85.40.0/22
208.85.44.0/24
208.85.46.0/23
4. Clean up iptables regels
root@debian9:~# iptables -F
root@debian9:~# iptables -X
root@debian9:~# iptables -t nat -F
root@debian9:~# iptables -t nat -X
Skeakelje de foarút meganisme en NAT
root@debian9:~# echo 1 > /proc/sys/net/ipv4/ip_forward
root@debian9:~# iptables -A FORWARD -i enp0s3 -o enp0s8 -j ACCEPT
root@debian9:~# iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
root@debian9:~# iptables -t nat -A POSTROUTING -o enp0s3 -s 192.168.201.0/24 -j MASQUERADE
Om foarút te kinnen permanint ynskeakele wurde nei herstarten, sille wy it bestân feroarje
root@debian9:~# nano /etc/sysctl.conf
En uncomment de line
net.ipv4.ip_forward = 1
Ctrl+X om bestân op te slaan
5. Wrap pandora.com subnets yn in proxy
root@debian9:~# iptables -t nat -A PREROUTING -s 192.168.201.0/24 -d 199.116.161.0/24,199.116.162.0/24,199.116.164.0/23,208.85.40.0/22,208.85.44.0/24,208.85.46.0/23 -p tcp -j REDIRECT --to-ports 888
6. Bewarje de regels
root@debian9:~# iptables-save > /etc/iptables/rules.v4
De Transparent Proxy ynstelle en útfiere fia routerkonfiguraasje
Yn dizze konfiguraasje kin de transparante proxy-tsjinner in aparte PC wêze as in firtuele masine efter in hûs- / bedriuwsrouter. It is genôch om statyske rûtes te registrearjen op 'e router of apparaten, en it heule subnet sil de proxy brûke sûnder ekstra ynstellingen nedich.
BELANGRYK! It is needsaaklik dat ús gateway in statyske IP fan 'e router ûntfange, of wurde konfigureare foar statyske sels.
1. Stel in statysk gateway-adres yn (adapter enp0s3)
root@debian9:~# nano /etc/network/interfaces
/etc/network/interfaces triem# Dit bestân beskriuwt de netwurkynterfaces beskikber op jo systeem
# en hoe se te aktivearjen. Foar mear ynformaasje, sjoch ynterfaces (5).
boarne /etc/network/interfaces.d/*
# De loopback-netwurkynterface
auto it
iface lo inet loopback
# De primêre netwurkynterface
tastean-hotplug enp0s3
iface enp0s3 inet statysk
adres 192.168.23.2
netmask 255.255.255.0
poarte 192.168.23.254
# De sekundêre netwurkynterface
tastean-hotplug enp0s8
iface enp0s8 inet statysk
adres 192.168.201.254
netmask 255.255.255.0
2. Tastean apparaten fan it subnet 192.168.23.0/24 om proxying te brûken
root@debian9:~# iptables -t nat -A PREROUTING -s 192.168.23.0/24 -d 199.116.161.0/24,199.116.162.0/24,199.116.164.0/23,208.85.40.0/22,208.85.44.0/24,208.85.46.0/23 -p tcp -j REDIRECT --to-ports 888
3. Bewarje de regels
root@debian9:~# iptables-save > /etc/iptables/rules.v4
4. Lit ús skriuwe subnets op de router
Router netwurk list199.116.161.0 255.255.255.0 192.168.23.2
199.116.162.0 255.255.255.0 192.168.23.2
199.116.164.0 255.255.254.0 192.168.23.2
208.85.40.0 255.255.252.0 192.168.23.2
208.85.44.0 255.255.255.0 192.168.23.2
208.85.46.0 255.255.254.0 192.168.23.2
Brûkte materialen / boarnen
1. Offisjele webside fan it programma 3proxy
2. Ynstruksjes foar it ynstallearjen fan 3proxy út boarnen
3. 3proxy developer branch op GitHub
Boarne: www.habr.com