Grundlagen des transparenten Proxyings mit 3proxy und iptables/netfilter oder wie man "alles durch einen Proxy leitet"

In diesem Artikel möchte ich die Möglichkeiten des transparenten Proxyings aufzeigen, das es ermöglicht, den gesamten oder einen Teil des Traffics fĂŒr die Clients völlig unbemerkt ĂŒber externe Proxy-Server umzuleiten.

Als ich begann, diese Aufgabe zu lösen, stieß ich auf ein wesentliches Problem bei der Umsetzung — das HTTPS-Protokoll. In alten Zeiten gab es kaum Probleme mit transparentem Proxying bei HTTP, aber beim Proxying von HTTPS melden die Browser ein Eingreifen ins Protokoll und damit ist das GlĂŒck vorbei.

In den gĂ€ngigen Anleitungen zum Proxy-Server Squid wird sogar empfohlen, ein eigenes Zertifikat zu generieren und es den Clients zu installieren, was zumindest unvernĂŒnftig ist und wie ein MITM-Angriff aussieht. Ich weiß, dass Squid schon etwas Ähnliches kann, aber in diesem Artikel geht es um eine erprobte und funktionierende Methode mit 3proxy von dem angesehenen 3APA3A.

Als NÀchstes werden wir den Prozess des Kompilierens von 3proxy aus dem Quellcode, seine Konfiguration, das vollstÀndige und selektive Proxying unter Verwendung von NAT, die Verteilung des Kanals auf mehrere externe Proxy-Server sowie die Verwendung eines Routers und statischer Routen im Detail betrachten. Wir verwenden Debian 9 x64 als Betriebssystem. Lass uns beginnen!

Installation von 3proxy und Start eines normalen Proxy-Servers

1. Wir installieren ifconfig (aus dem Paket net-tools)
apt-get install net-tools
2. Wir installieren Midnight Commander
apt-get install mc
3. Wir haben jetzt 2 Schnittstellen:
enp0s3 — extern, zeigt ins Internet
enp0s8 — intern, sollte ins lokale Netzwerk zeigen
In anderen Debian-basierten Distributionen werden die Schnittstellen normalerweise eth0 und eth1 genannt.
ifconfig -a

Schnittstellenenp0s3: flags=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-Packete 6412 Bytes 8676619 (8.2 MiB)
RX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 Rahmen 0
TX-Packete 1726 Bytes 289128 (282.3 KiB)
TX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 TrĂ€ger 0 Kollisionen 0

enp0s8: flags=4098 mtu 1500
ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX-Packete 0 Bytes 0 (0.0 B)
RX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 Rahmen 0
TX-Packete 0 Bytes 0 (0.0 B)
TX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 TrĂ€ger 0 Kollisionen 0

lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX-Packete 0 Bytes 0 (0.0 B)
RX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 Rahmen 0
TX-Packete 0 Bytes 0 (0.0 B)
TX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 TrĂ€ger 0 Kollisionen 0

Die Schnittstelle enp0s8 wird derzeit nicht verwendet; wir werden sie aktivieren, wenn wir die Proxy-NAT- oder NAT-Konfiguration verwenden möchten. Dann wird es logisch sein, ihr eine statische IP zuzuweisen.

4. Lassen Sie uns mit der Installation von 3proxy beginnen

4.1 Installation der grundlegenden Pakete fĂŒr die Kompilierung von 3proxy aus dem Quellcode

root@debian9:~# apt-get install build-essential libevent-dev libssl-dev -y

4.2. Erstellen wir einen Ordner zum Herunterladen des Archivs mit den Quellcodes

root@debian9:~# mkdir -p /opt/proxy

4.3. Wechseln wir in diesen Ordner

root@debian9:~# cd /opt/proxy

4.4. Jetzt laden wir das neueste Paket von 3proxy herunter. Zum Zeitpunkt der Erstellung dieses Artikels war die letzte stabile Version 0.8.12 (18/04/2018). Wir laden sie von der offiziellen 3proxy-Website herunter.

root@debian9:\/opt\/proxy# wget https:\/\/github.com\/z3APA3A\/3proxy\/archive\/0.8.12.tar.gz

4.5. Entpacken wir das heruntergeladene Archiv

root@debian9:/opt/proxy# tar zxvf 0.8.12.tar.gz

4.6. Wechseln wir in das entpackte Verzeichnis zur Kompilierung des Programms

root@debian9:/opt/proxy# cd 3proxy-0.8.12

4.7. Nun mĂŒssen wir eine Zeile in die Header-Datei einfĂŒgen, damit unser Server vollstĂ€ndig anonym bleibt (funktioniert tatsĂ€chlich, alles getestet, IPs der Clients werden verborgen)

root@debian9:/opt/proxy/3proxy-0.8.12# nano +29 src/proxy.h

FĂŒgen wir die Zeile hinzu

#define ANONYMOUS 1

DrĂŒcken Sie Ctrl+x und Enter, um die Änderungen zu speichern.

4.8. Lassen Sie uns mit der Kompilierung des Programms beginnen

root@debian9:/opt/proxy/3proxy-0.8.12# make -f Makefile.Linux

Makelogmake[2]: Verlasse Verzeichnis '/opt/proxy/3proxy-0.8.12/src/plugins/TransparentPlugin'
make[1]: Verlasse Verzeichnis '/opt/proxy/3proxy-0.8.12/src'

Keine Fehler, wir machen weiter.

4.9. Installieren wir das Programm im System

root@debian9:/opt/proxy/3proxy-0.8.12# make -f Makefile.Linux install

4.10. Wechseln wir in das Stammverzeichnis und ĂŒberprĂŒfen wir, wo das Programm installiert wurde

root@debian9:~/opt/proxy/3proxy-0.8.12# cd ~/
root@debian9:~# whereis 3proxy

3proxy: /usr/local/bin/3proxy /usr/local/etc/3proxy

4.11. Erstellen wir einen Ordner fĂŒr Konfigurationsdateien und Logs im Home-Verzeichnis des Benutzers

root@debian9:~# mkdir -p /home/joke/proxy/logs

4.12. Wechseln wir in das Verzeichnis, wo die Konfiguration sein sollte

root@debian9:~# cd /home/joke/proxy/

4.13. Erstellen wir eine leere Datei und kopieren wir die Konfiguration hinein

root@debian9:/home/joke/proxy# cat > 3proxy.conf

3proxy.confdaemon
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
users 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"
rotate 3
auth strong
flush
allow tester
socks -p3128
proxy -p8080

Um zu speichern, drĂŒcken wir Ctrl + Z

4.14. Erstellen wir eine PID-Datei, um Fehler beim Starten zu vermeiden.

root@debian9:/home/joke/proxy# cat > 3proxy.pid

Um zu speichern, drĂŒcken wir Ctrl + Z

4.15. Starten wir den Proxy-Server!

root@debian9:/home/joke/proxy# 3proxy /home/joke/proxy/3proxy.conf

4.16. ÜberprĂŒfen wir, ob der Server die Ports abhört

root@debian9:~/home/joke/proxy# netstat -nlp

netstat-LogAktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
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

Wie in der Konfiguration angegeben, hört der Web-Proxy auf Port 8080, der Socks5-Proxy auf 3128.

4.17. FĂŒr den automatischen Start des Proxy-Dienstes nach einem Neustart muss er zu cron hinzugefĂŒgt werden.

root@debian9:/home/joke/proxy# crontab -e

FĂŒgen wir die Zeile hinzu

@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxy.conf

DrĂŒcken Sie Enter, da cron das Ende der Zeile erkennen und die Datei speichern muss.

Es sollte eine Nachricht ĂŒber die Installation des neuen crontab erscheinen.

crontab: neue crontab installieren

4.18. Wir starten das System neu und versuchen ĂŒber den Browser eine Verbindung zum Proxy herzustellen. Zur ÜberprĂŒfung verwenden wir den Firefox-Browser (fĂŒr Web-Proxys) und das Add-On FoxyProxy fĂŒr socks5 mit Authentifizierung.

root@debian9:/home/joke/proxy# reboot

4.19. Nachdem wir die Funktionsweise des Proxys nach dem Neustart ĂŒberprĂŒft haben, können wir die Protokolle ansehen. Damit ist die Konfiguration des Proxy-Servers abgeschlossen.

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/1.1
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

Konfiguration und Start des Transparent Proxy NAT

In dieser Konfiguration werden alle GerĂ€te im internen Netzwerk transparent ĂŒber den externen Proxy-Server ins Internet arbeiten. Alle TCP-Verbindungen werden an einen oder mehrere (erweitert tatsĂ€chlich die Bandbreite, Beispielkonfiguration Nr. 2!) Proxy-Server umgeleitet. Der DNS-Dienst wird die Funktionen von 3proxy (dnspr) nutzen. UDP wird nicht nach außen gehen, da wir den Forward-Mechanismus bisher nicht verwenden (standardmĂ€ĂŸig im Linux-Kernel deaktiviert).

1. Es ist Zeit, das Interface enp0s8 zu aktivieren

root@debian9:~# nano /etc/network/interfaces

/etc/network/interfaces file# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp

# The secondary network interface
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.201.254
netmask 255.255.255.0

Hier haben wir der Schnittstelle enp0s8 die statische Adresse 192.168.201.254 und die Maske 255.255.255.0 zugewiesen.
Konfiguration speichern mit Ctrl+X und neu starten

root@debian9:~# neu starten

2. Schnittstellen ĂŒberprĂŒfen

root@debian9:~# ifconfig

ifconfig Logenp0s3: flags=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-Pakete 61 Bytes 7873 (7.6 KiB)
RX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 Rahmen 0
TX-Pakete 65 Bytes 10917 (10.6 KiB)
TX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 TrĂ€ger 0 Kollisionen 0

enp0s8: flags=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-Packete 0 Bytes 0 (0.0 B)
RX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 Rahmen 0
TX-Pakete 8 Bytes 648 (648.0 B)
TX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 TrĂ€ger 0 Kollisionen 0

lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
RX-Packete 0 Bytes 0 (0.0 B)
RX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 Rahmen 0
TX-Packete 0 Bytes 0 (0.0 B)
TX-Fehler 0 verloren 0 ÜberlĂ€ufe 0 TrĂ€ger 0 Kollisionen 0

3. Alles hat funktioniert, jetzt mĂŒssen wir 3proxy fĂŒr das transparente Proxying konfigurieren.

root@debian9:~# cd /home/joke/proxy/
root@debian9:/home/joke/proxy# cat > 3proxytransp.conf

Beispielkonfiguration des transparenten Proxy-Servers Nr. 1daemon
pidfile /home/joke/proxy/3proxy.pid
nserver 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"
rotate 3
flush
auth iponly
dnspr
allow *
parent 1000 socks5 EXTERNE_PROXY_IP 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. Jetzt starten wir 3proxy mit der neuen Konfiguration
root@debian9:/home/joke/proxy# /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf

5. FĂŒgen wir erneut zur crontab hinzu
root@debian9:/home/joke/proxy# crontab -e
@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf

6. Sehen wir, was unser Proxy jetzt hört
root@debian9:~# netstat -nlp

netstat-LogAktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
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. Jetzt ist der Proxy bereit, alle TCP-Verbindungen auf Port 888 und DNS auf Port 53 zu empfangen, um sie dann an den entfernten Socks5-Proxy und den Google DNS 8.8.8.8 weiterzuleiten. Wir mĂŒssen noch die Netfilter-Regeln (iptables) und DHCP zur Adressvergabe einrichten.

8. Installieren wir das Paket iptables-persistent und dhcpd.

root@debian9:~# apt-get install iptables-persistent isc-dhcp-server

9. Wir bearbeiten die Startdatei von dhcpd.
root@debian9:~# nano /etc/dhcp/dhcpd.conf

dhcpd.conf# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.

authoritative;

# A slightly different configuration for an internal subnet.
subnet 192.168.201.0 netmask 255.255.255.0 {
range 192.168.201.10 192.168.201.250;
option domain-name-servers 192.168.201.254;
option routers 192.168.201.254;
option broadcast-address 192.168.201.255;
default-lease-time 600;
max-lease-time 7200;
}

11. Wir starten neu und ĂŒberprĂŒfen den Dienst auf Port 67.
root@debian9:~# neu starten
root@debian9:~# netstat -nlp

netstat-LogAktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
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. Es bleibt nur noch, alle TCP-Anfragen auf Port 888 weiterzuleiten und die Regel in iptables zu speichern.

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. Um die Bandbreite zu erweitern, können mehrere Proxy-Server gleichzeitig verwendet werden. Die Gesamtsumme sollte 1000 betragen. Neue Verbindungen werden mit einer Wahrscheinlichkeit von 0,2, 0,2, 0,2, 0,2, 0,1, 0,1 zu den angegebenen Proxy-Servern eingerichtet.

Hinweis: Wenn wir einen Web-Proxy haben, sollten wir anstelle von Socks5 "connect" schreiben. Bei Socks4 verwenden wir "socks4" (Socks4 UNTERSTÜTZT KEINE AUTORISIERUNG mit BENUTZERNAME/PASSWORT!).

Beispielkonfiguration des transparenten Proxy-Servers Nr. 2daemon
pidfile /home/joke/proxy/3proxy.pid
nserver 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"
rotate 3
flush
auth iponly
dnspr
allow *

parent 200 socks5 IP_ADRESSE_DES_EXTERNEN_PROXY1 3128 tester 1234
parent 200 socks5 IP_ADRESSE_DES_EXTERNEN_PROXY2 3128 tester 1234
parent 200 socks5 IP_ADRESSE_DES_EXTERNEN_PROXY3 3128 tester 1234
parent 200 socks5 IP_ADRESSE_DES_EXTERNEN_PROXY4 3128 tester 1234
parent 100 socks5 IP_ADRESSE_DES_EXTERNEN_PROXY5 3128 tester 1234
parent 100 socks5 IP_ADRESSE_DES_EXTERNEN_PROXY6 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

Konfiguration und Start der NAT + Transparent Proxy-Konfiguration

In dieser Konfiguration verwenden wir einen normalen NAT-Mechanismus mit selektivem oder vollstĂ€ndigem transparenten Proxy fĂŒr bestimmte Adressen oder Subnetze. Benutzer des internen Netzwerks arbeiten mit bestimmten Diensten/Subnetzen, ohne zu merken, dass sie ĂŒber einen Proxy arbeiten. Alle HTTPS-Verbindungen funktionieren einwandfrei, es ist keine Erzeugung/Änderung von Zertifikaten erforderlich.

ZunÀchst bestimmen wir, welche Subnetze/Dienste wir proxyen möchten. Angenommen, die externen Proxiserver befinden sich dort, wo ein Dienst wie pandora.com aktiv ist. Nun gilt es, dessen Subnetze/Adressen zu identifizieren.

1. Pingen

root@debian9:~# ping pandora.com
PING pandora.com (208.85.40.20) 56(84) Bytes an Daten.

2. Wir googeln BGP 208.85.40.20

Gehe zur Website bgp.he.net/net/208.85.40.0/24#_netinfo
Es ist zu erkennen, dass das gesuchte Subnetz AS40428 Pandora Media, Inc ist.

bgp.he.net/net/208.85.40.0/24#_netinfo

Öffnen wir die v4-PrĂ€fixe

bgp.he.net/AS40428#_prefixes

Hier sind die gesuchten Subnetze!

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. Um die Anzahl der Subnetze zu reduzieren, mĂŒssen wir eine Aggregation durchfĂŒhren. Gehe zur Website ip-calculator.ru/aggregate und kopiere unsere Liste dorthin. Als Ergebnis – 6 Subnetze anstatt 14.

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. Löschen der iptables-Regeln

root@debian9:~# iptables -F
root@debian9:~# iptables -X
root@debian9:~# iptables -t nat -F
root@debian9:~# iptables -t nat -X

Aktiviere den Forwarding- und NAT-Mechanismus

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

Damit das Forwarding nach einem Neustart immer aktiv bleibt, Àndern wir die Datei

root@debian9:~# nano /etc/sysctl.conf

Und kommentieren die Zeile aus

net.ipv4.ip_forward = 1

Strg+X zum Speichern der Datei

5. Wir verbinden die Subnetze von pandora.com mit dem 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. Speichern der Regeln

root@debian9:~# iptables-save > /etc/iptables/rules.v4

Einrichten und Starten der Konfiguration fĂŒr Transparent Proxy ĂŒber den Router

In dieser Konfiguration kann der transparente Proxy-Server ein eigener PC oder eine virtuelle Maschine hinter dem Heim-/Firmenrouter sein. Es genĂŒgt, statische Routen auf dem Router oder den GerĂ€ten festzulegen, und das gesamte Subnetz wird den Proxy verwenden, ohne dass zusĂ€tzliche Einstellungen erforderlich sind.

WICHTIG! Es ist notwendig, dass unser Gateway eine statische IP vom Router erhÀlt oder selbst auf Statisch eingestellt ist.

1. Konfigurieren der statischen Adresse des Gateways (Adapter enp0s3)

root@debian9:~# nano /etc/network/interfaces

/etc/network/interfaces file# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.23.2
netmask 255.255.255.0
gateway 192.168.23.254

# The secondary network interface
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.201.254
netmask 255.255.255.0

2. Erlauben, dass GerÀte im Subnetz 192.168.23.0/24 das Proxy verwenden

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. Speichern der Regeln
root@debian9:~# iptables-save > /etc/iptables/rules.v4

4. Tragen der Subnetze in den Router ein

Router-Netzwerkliste199.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

Verwendete Materialien/Ressourcen

1. Offizielle Website des Programms 3proxy 3proxy.ru

2. Anleitung zur Installation von 3proxy aus dem Quellcode www.ekzorchik.ru/2015/02/how-to-take-your-socks-proxy

3. Entwickler-Branch von 3proxy auf GitHub github.com/z3APA3A/3proxy/issues/274

Quelle: habr.com

60GB SSD 8Gb DDR4