Τα βασικά του διαφανούς διακομιστή μεσολάβησης χρησιμοποιώντας 3proxy και iptables / netfilter ή πώς να "βάλετε τα πάντα μέσω ενός διακομιστή μεσολάβησης"

Σε αυτό το άρθρο, θα ήθελα να αποκαλύψω τις δυνατότητες διαφανούς διακομιστή μεσολάβησης, που σας επιτρέπει να ανακατευθύνετε ολόκληρη ή μέρος της κίνησης μέσω εξωτερικών διακομιστών μεσολάβησης εντελώς απαρατήρητοι από τους πελάτες.

Όταν άρχισα να λύνω αυτό το πρόβλημα, αντιμετώπισα το γεγονός ότι η εφαρμογή του έχει ένα σημαντικό πρόβλημα - το πρωτόκολλο HTTPS. Τον παλιό καλό καιρό, δεν υπήρχαν ιδιαίτερα προβλήματα με το διαφανές διακομιστή μεσολάβησης HTTP, αλλά με το διακομιστή μεσολάβησης HTTPS, τα προγράμματα περιήγησης αναφέρουν παρεμβολές πρωτοκόλλου και εκεί τελειώνει η ευτυχία.

Σε κοινές οδηγίες για τον διακομιστή μεσολάβησης Squid, προσφέρουν ακόμη και να δημιουργήσουν το δικό τους πιστοποιητικό και να το εγκαταστήσουν σε πελάτες, κάτι που είναι εντελώς ανοησία τουλάχιστον παράλογο και μοιάζει με επίθεση MITM. Γνωρίζω ότι το Squid ξέρει ήδη πώς να κάνει κάτι παρόμοιο, αλλά αυτό το άρθρο αφορά μια δοκιμασμένη και λειτουργική μέθοδο που χρησιμοποιεί 3proxy από το σεβαστό 3APA3A.

Στη συνέχεια, θα ρίξουμε μια λεπτομερή ματιά στη διαδικασία δημιουργίας του 3proxy από την πηγή, τη διαμόρφωσή του, τον πλήρη και επιλεκτικό διακομιστή μεσολάβησης με χρήση NAT, τη διανομή του καναλιού σε πολλούς εξωτερικούς διακομιστές μεσολάβησης, καθώς και τη χρήση δρομολογητή και στατικών διαδρομών. Χρησιμοποιούμε το Debian 9 x64 ως λειτουργικό σύστημα. Αρχίζουν!

Εγκατάσταση 3proxy και εκτέλεση κανονικού διακομιστή μεσολάβησης

1. Εγκαταστήστε το ifconfig (από το πακέτο net-tools)
apt-get install net-tools
2. Εγκαταστήστε το Midnigth Commander
apt-get install mc
3. Τώρα έχουμε 2 διεπαφές:
enp0s3 - εξωτερικό, κοιτάζει το Διαδίκτυο
enp0s8 - εσωτερικό, πρέπει να κοιτάξει στο τοπικό δίκτυο
Σε άλλες διανομές που βασίζονται στο Debian, οι διεπαφές ονομάζονται συνήθως eth0 και eth1.
ifconfig -a

Διασυνδέσειςenp0s3: flags=4163 mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 μετάδοση 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 6412 byte 8676619 (8.2 MiB)
Σφάλματα RX 0 πτώση 0 υπερβάσεις 0 καρέ 0
Πακέτα TX 1726 byte 289128 (282.3 KiB)
Σφάλματα TX 0 πτώση 0 υπερβάσεις 0 φορέας 0 συγκρούσεις 0

enp0s8: flags=4098 mtu 1500
ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
Πακέτα RX 0 byte 0 (0.0 B)
Σφάλματα RX 0 πτώση 0 υπερβάσεις 0 καρέ 0
Πακέτα TX 0 byte 0 (0.0 B)
Σφάλματα TX 0 πτώση 0 υπερβάσεις 0 φορέας 0 συγκρούσεις 0

ιδού: σημαίες=73 mtu 65536
inet 127.0.0.1 μάσκα δικτύου 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
Πακέτα RX 0 byte 0 (0.0 B)
Σφάλματα RX 0 πτώση 0 υπερβάσεις 0 καρέ 0
Πακέτα TX 0 byte 0 (0.0 B)
Σφάλματα TX 0 πτώση 0 υπερβάσεις 0 φορέας 0 συγκρούσεις 0

Η διεπαφή enp0s8 δεν χρησιμοποιείται αυτήν τη στιγμή, θα την ενεργοποιήσουμε όταν θέλουμε να χρησιμοποιήσουμε τη διαμόρφωση NAT ή NAT Proxy. Τότε είναι που θα ήταν λογικό να του εκχωρήσετε μια στατική ip.

4. Ας ξεκινήσουμε την εγκατάσταση του 3proxy

4.1 Εγκατάσταση βασικών πακέτων για μεταγλώττιση 3 διακομιστή μεσολάβησης από την πηγή

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

4.2. Δημιουργήστε ένα φάκελο για τη λήψη του αρχείου με πηγές

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

4.3. Ας πάμε σε αυτόν τον φάκελο

root@debian9:~# cd /opt/proxy

4.4. Τώρα ας κατεβάσουμε το πιο πρόσφατο πακέτο 3proxy. Τη στιγμή της σύνταξης αυτού του κειμένου, η τελευταία σταθερή έκδοση ήταν 0.8.12 (18/04/2018) Κάντε λήψη της από τον επίσημο ιστότοπο 3proxy

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

4.5. Αποσυσκευάστε το ληφθέν αρχείο

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

4.6. Μεταβείτε στον μη συσκευασμένο κατάλογο για να δημιουργήσετε το πρόγραμμα

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

4.7. Στη συνέχεια, πρέπει να προσθέσετε μια γραμμή στο αρχείο κεφαλίδας, έτσι ώστε ο διακομιστής μας να είναι εντελώς ανώνυμος (πραγματικά λειτουργεί, όλα είναι ελεγμένα, οι IP του πελάτη είναι κρυφές)

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

Προσθέστε μια γραμμή

#define ANONYMOUS 1

Πατήστε Ctrl+x και Enter για να αποθηκεύσετε τις αλλαγές.

4.8. Ας φτιάξουμε το πρόγραμμα

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

makelogmake[2]: Έξοδος από τον κατάλογο '/opt/proxy/3proxy-0.8.12/src/plugins/TransparentPlugin'
make[1]: Έξοδος από τον κατάλογο '/opt/proxy/3proxy-0.8.12/src'

Χωρίς σφάλματα, συνεχίστε.

4.9. Εγκαταστήστε το πρόγραμμα στο σύστημα

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

4.10. Μεταβείτε στον ριζικό κατάλογο και ελέγξτε πού εγκαταστάθηκε το πρόγραμμα

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

3 διακομιστής μεσολάβησης: /usr/local/bin/3proxy /usr/local/etc/3proxy

4.11. Ας δημιουργήσουμε έναν φάκελο για αρχεία διαμόρφωσης και αρχεία καταγραφής στον αρχικό κατάλογο του χρήστη

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

4.12. Μεταβείτε στον κατάλογο όπου πρέπει να είναι η διαμόρφωση

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

4.13. Δημιουργήστε ένα κενό αρχείο και αντιγράψτε το config εκεί

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

3proxy.confδαίμονας
pidfile /home/joke/proxy/3proxy.pid
διακομιστής 8.8.8.8
nscache 65536
χρήστης ελεγκτής:CL:1234
τάιμ άουτ 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log Δ
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
περιστροφή 3
αυθεντικά ισχυρή
ξεπλύνετε
επιτρέψτε τον ελεγκτή
κάλτσες -p3128
διακομιστής μεσολάβησης -p8080

Για αποθήκευση, πατήστε Ctrl + Z

4.14. Ας δημιουργήσουμε ένα αρχείο pid για να μην υπάρχουν σφάλματα εκκίνησης.

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

Για αποθήκευση, πατήστε Ctrl + Z

4.15. Ας ξεκινήσουμε τον διακομιστή μεσολάβησης!

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

4.16. Ας δούμε αν ο διακομιστής ακούει στις θύρες

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

αρχείο καταγραφής netstatΕνεργές συνδέσεις Διαδικτύου (μόνο διακομιστές)
Proto Recv-Q Send-Q Τοπική Διεύθυνση Ξένη Διεύθυνση Κατάσταση PID/Όνομα προγράμματος
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

Όπως γράφτηκε στο config, ο διακομιστής μεσολάβησης web ακούει στη θύρα 8080, Socks5 proxy - 3128.

4.17. Για αυτόματη εκκίνηση της υπηρεσίας διακομιστή μεσολάβησης μετά από επανεκκίνηση, πρέπει να την προσθέσετε στο cron.

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

Προσθέστε μια γραμμή

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

Πατάμε Enter, αφού το cron θα πρέπει να δει τον χαρακτήρα τέλους γραμμής και να αποθηκεύσει το αρχείο.

Θα πρέπει να υπάρχει ένα μήνυμα σχετικά με την εγκατάσταση ενός νέου crontab.

crontab: εγκατάσταση νέου crontab

4.18. Ας κάνουμε επανεκκίνηση του συστήματος και ας προσπαθήσουμε να συνδεθούμε μέσω του προγράμματος περιήγησης στο διακομιστή μεσολάβησης. Για επαλήθευση, χρησιμοποιούμε το πρόγραμμα περιήγησης Firefox (για διακομιστή μεσολάβησης ιστού) και το πρόσθετο FoxyProxy για socks5 με έλεγχο ταυτότητας.

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

4.19. Αφού ελέγξετε την εργασία του διακομιστή μεσολάβησης μετά την επανεκκίνηση, μπορείτε να δείτε τα αρχεία καταγραφής. Αυτό ολοκληρώνει τη ρύθμιση του διακομιστή μεσολάβησης.

3 ημερολόγιο διακομιστή μεσολάβησης1542573996.018 PROXY.8080 00000 ελεγκτής 192.168.23.10:50915 217.12.15.54:443 1193 6939 0 CONNECT_ads.yahoo_HTTP/443.
1542574289.634 SOCK5.3128 00000 δοκιμαστής 192.168.23.10:51193 54.192.13.69:443 0 0 0 CONNECT_normandy.cdn.mozilla.net:443

Ρύθμιση και εκτέλεση της διαμόρφωσης Transparent Proxy NAT

Σε αυτήν τη διαμόρφωση, όλες οι συσκευές στο εσωτερικό δίκτυο θα λειτουργούν με διαφάνεια στο Διαδίκτυο μέσω ενός απομακρυσμένου διακομιστή μεσολάβησης. Απολύτως όλες οι συνδέσεις tcp θα ανακατευθυνθούν σε έναν ή περισσότερους διακομιστές μεσολάβησης (πραγματικά επεκτείνει το πλάτος του καναλιού, παράδειγμα διαμόρφωσης Νο. 2!). Η υπηρεσία DNS θα χρησιμοποιεί δυνατότητες 3 proxy (dnspr). Το UDP δεν θα "φύγει" έξω, αφού δεν χρησιμοποιούμε ακόμη τον μηχανισμό προώθησης (απενεργοποιημένος από προεπιλογή στον πυρήνα του Linux).

1. Ήρθε η ώρα να ενεργοποιήσετε τη διεπαφή enp0s8

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

/etc/network/interfaces αρχείο# Αυτό το αρχείο περιγράφει τις διεπαφές των δικτύων διαθέσιμες στο σύστημά σας
# Και πώς να τους ενεργοποιήσετε. Για περισσότερες πληροφορίες, δείτε τις διεπαφές (5).

πηγή /etc/network/interfaces.d/*

# Το loopback interface δικτύου
auto lo
iface loopback inet lo

# Η κύρια διεπαφή δικτύου
allow-hotplug enp0s3
iface enp0s3 inet dhcp

# Η δευτερεύουσα διεπαφή δικτύου
allow-hotplug enp0s8
iface enp0s8 inet static
διεύθυνση 192.168.201.254
255.255.255.0 netmask

Εδώ αντιστοιχίσαμε στη διεπαφή enp0s8 μια στατική διεύθυνση 192.168.201.254 και μια μάσκα 255.255.255.0
Αποθηκεύστε τις παραμέτρους Ctrl+X και επανεκκινήστε

root@debian9:~# reboot

2. Έλεγχος διεπαφών

root@debian9:~# ifconfig

αρχείο καταγραφής ifconfigenp0s3: flags=4163 mtu 1500
inet 192.168.23.11 netmask 255.255.255.0 μετάδοση 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 61 byte 7873 (7.6 KiB)
Σφάλματα RX 0 πτώση 0 υπερβάσεις 0 καρέ 0
Πακέτα TX 65 byte 10917 (10.6 KiB)
Σφάλματα TX 0 πτώση 0 υπερβάσεις 0 φορέας 0 συγκρούσεις 0

enp0s8: flags=4163 mtu 1500
inet 192.168.201.254 netmask 255.255.255.0 μετάδοση 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 0 byte 0 (0.0 B)
Σφάλματα RX 0 πτώση 0 υπερβάσεις 0 καρέ 0
Πακέτα TX 8 byte 648 (648.0 B)
Σφάλματα TX 0 πτώση 0 υπερβάσεις 0 φορέας 0 συγκρούσεις 0

ιδού: σημαίες=73 mtu 65536
inet 127.0.0.1 μάσκα δικτύου 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1 (Local Loopback)
Πακέτα RX 0 byte 0 (0.0 B)
Σφάλματα RX 0 πτώση 0 υπερβάσεις 0 καρέ 0
Πακέτα TX 0 byte 0 (0.0 B)
Σφάλματα TX 0 πτώση 0 υπερβάσεις 0 φορέας 0 συγκρούσεις 0

3. Όλα λύθηκαν, τώρα πρέπει να διαμορφώσετε το 3proxy για διαφανή διακομιστή μεσολάβησης.

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

Παράδειγμα διαμόρφωσης διαφανούς διακομιστή μεσολάβησης #1δαίμονας
pidfile /home/joke/proxy/3proxy.pid
διακομιστής 8.8.8.8
nscache 65536
τάιμ άουτ 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log Δ
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
περιστροφή 3
ξεπλύνετε
αυθεντικά μοναδικά
dnspr
επιτρέψτε *
γονέας 1000 socks5 EXTERNAL_PROXY IP_ADDRESS 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. Τώρα εκτελέστε το 3proxy με νέα διαμόρφωση
root@debian9:/home/joke/proxy# /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf

5. Προσθέστε ξανά στο crontab
root@debian9:/home/joke/proxy# crontab -e
@reboot /usr/local/bin/3proxy /home/joke/proxy/3proxytransp.conf

6. Ας δούμε τι ακούει τώρα ο πληρεξούσιός μας
root@debian9:~# netstat -nlp

αρχείο καταγραφής netstatΕνεργές συνδέσεις Διαδικτύου (μόνο διακομιστές)
Proto Recv-Q Send-Q Τοπική Διεύθυνση Ξένη Διεύθυνση Κατάσταση PID/Όνομα προγράμματος
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. Τώρα ο διακομιστής μεσολάβησης είναι έτοιμος να δεχτεί οποιεσδήποτε συνδέσεις TCP στη θύρα 888, DNS στη θύρα 53, προκειμένου να τις ανακατευθύνει σε απομακρυσμένα socks5 - διακομιστή μεσολάβησης και DNS Google 8.8.8.8. Απομένει να διαμορφώσουμε τους κανόνες του Netfilter (iptables) και του DHCP για την έκδοση διευθύνσεων.

8. Εγκαταστήστε το πακέτο iptables-persistent και dhcpd

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

9. Επεξεργαστείτε το αρχείο εκκίνησης dhcpd
root@debian9:~# nano /etc/dhcp/dhcpd.conf

dhcpd.conf# dhcpd.conf
#
# Δείγμα αρχείου διαμόρφωσης για ISC dhcpd
#

# ορισμοί επιλογών κοινοί σε όλα τα υποστηριζόμενα δίκτυα…
όνομα τομέα επιλογής "example.org";
επιλογή domain-name-servers ns1.example.org, ns2.example.org;

προεπιλεγμένος χρόνος μίσθωσης 600;
μέγιστος χρόνος μίσθωσης 7200;

ddns-update-style κανένα?

# Εάν αυτός ο διακομιστής DHCP είναι ο επίσημος διακομιστής DHCP για τον τοπικό
# δίκτυο, η έγκυρη οδηγία δεν πρέπει να σχολιαστεί.

επίσημος;

# Μια ελαφρώς διαφορετική διαμόρφωση για ένα εσωτερικό υποδίκτυο.
υποδίκτυο 192.168.201.0 netmask 255.255.255.0 {
εύρος 192.168.201.10 192.168.201.250;
επιλογή domain-name-servers 192.168.201.254;
δρομολογητές επιλογών 192.168.201.254;
επιλογή εκπομπής-διεύθυνση 192.168.201.255;
προεπιλεγμένος χρόνος μίσθωσης 600;
μέγιστος χρόνος μίσθωσης 7200;
}

11. Κάντε επανεκκίνηση και ελέγξτε την υπηρεσία στη θύρα 67
root@debian9:~# reboot
root@debian9:~# netstat -nlp

αρχείο καταγραφής netstatΕνεργές συνδέσεις Διαδικτύου (μόνο διακομιστές)
Proto Recv-Q Send-Q Τοπική Διεύθυνση Ξένη Διεύθυνση Κατάσταση PID/Όνομα προγράμματος
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. Απομένει η ανακατεύθυνση όλων των αιτημάτων tcp στη θύρα 888 και η αποθήκευση του κανόνα στο 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. Για να επεκτείνετε το εύρος ζώνης του καναλιού, μπορείτε να χρησιμοποιήσετε πολλούς διακομιστές μεσολάβησης ταυτόχρονα. Το συνολικό ποσό πρέπει να είναι 1000. Δημιουργούνται νέες συνδέσεις με πιθανότητα 0.2, 0.2, 0.2, 0.2, 0,1, 0,1 στους καθορισμένους διακομιστές μεσολάβησης.

Σημείωση: εάν έχουμε web proxy, τότε αντί για socks5 πρέπει να γράψετε connect, εάν socks4, τότε socks4 (το socks4 ΔΕΝ ΥΠΟΣΤΗΡΙΖΕΙ ΕΞΟΥΣΙΟΔΟΤΗΣΗ ΕΙΣΟΔΟΥ / ΚΩΔΙΚΟΥ!)

Παράδειγμα διαμόρφωσης διαφανούς διακομιστή μεσολάβησης #2δαίμονας
pidfile /home/joke/proxy/3proxy.pid
διακομιστής 8.8.8.8
nscache 65536
maxconn 500
τάιμ άουτ 1 5 30 60 180 1800 16 60
log /home/joke/proxy/logs/3proxy.log Δ
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
περιστροφή 3
ξεπλύνετε
αυθεντικά μοναδικά
dnspr
επιτρέψτε *

γονέας 200 κάλτσες5 IP_ADDRESS_EXTERNAL_PROXY#1 3128 δοκιμαστής 1234
γονέας 200 κάλτσες5 IP_ADDRESS_EXTERNAL_PROXY#2 3128 δοκιμαστής 1234
γονέας 200 κάλτσες5 IP_ADDRESS_EXTERNAL_PROXY#3 3128 δοκιμαστής 1234
γονέας 200 κάλτσες5 IP_ADDRESS_EXTERNAL_PROXY#4 3128 δοκιμαστής 1234
γονέας 100 κάλτσες5 IP_ADDRESS_EXTERNAL_PROXY#5 3128 δοκιμαστής 1234
γονέας 100 κάλτσες5 IP_ADDRESS_EXTERNAL_PROXY#6 3128 δοκιμαστής 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

Ρύθμιση και εκτέλεση της διαμόρφωσης NAT + Transparent Proxy

Σε αυτήν τη διαμόρφωση, θα χρησιμοποιήσουμε τον συνήθη μηχανισμό NAT με επιλεκτικό ή πλήρως διαφανή διακομιστή μεσολάβησης μεμονωμένων διευθύνσεων ή υποδικτύων. Οι χρήστες του εσωτερικού δικτύου θα συνεργάζονται με ορισμένες υπηρεσίες / υποδίκτυα χωρίς καν να συνειδητοποιούν ότι λειτουργούν μέσω διακομιστή μεσολάβησης. Όλες οι συνδέσεις https λειτουργούν καλά, δεν χρειάζεται να δημιουργηθούν/αντικατασταθούν πιστοποιητικά.

Αρχικά, ας αποφασίσουμε σε ποια υποδίκτυα/υπηρεσίες θέλουμε να κάνουμε proxy. Ας υποθέσουμε ότι οι εξωτερικοί διακομιστής μεσολάβησης βρίσκονται εκεί όπου εκτελείται μια υπηρεσία όπως το pandora.com. Τώρα απομένει να καθορίσουμε τα υποδίκτυα / τις διευθύνσεις του.

1. Πινγκ

root@debian9:~# ping pandora.com
PING pandora.com (208.85.40.20) 56(84) byte δεδομένων.

2. Πληκτρολογούμε Google BGP 208.85.40.20

Μεταβείτε στον ιστότοπο bgp.he.net/net/208.85.40.0/24#_netinfo
Μπορεί να φανεί ότι το υποδίκτυο που αναζητώ είναι το AS40428 Pandora Media, Inc.

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

Άνοιγμα προθεμάτων v4

bgp.he.net/AS40428#_prefixes

Εδώ είναι τα απαιτούμενα υποδίκτυα!

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. Για να μειώσετε τον αριθμό των υποδικτύων, πρέπει να πραγματοποιήσετε συγκέντρωση. Πάμε στον ιστότοπο ip-calculator.ru/agregate και αντιγράψτε τη λίστα μας εκεί. Ως αποτέλεσμα - 6 υποδίκτυα αντί για 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. Εκκαθάριση κανόνων iptables

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

Ενεργοποιήστε τον μηχανισμό προώθησης και το 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

Για να είναι μόνιμα ενεργοποιημένη η προώθηση μετά την επανεκκίνηση, θα αλλάξουμε το αρχείο

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

Και αποσχολιάστε τη γραμμή

net.ipv4.ip_forward = 1

Ctrl+X για αποθήκευση αρχείου

5. Τυλίξτε τα υποδίκτυα pandora.com σε ένα διακομιστή μεσολάβησης

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. Αποθηκεύστε τους κανόνες

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

Ρύθμιση και εκτέλεση του Transparent Proxy μέσω διαμόρφωσης δρομολογητή

Σε αυτήν τη διαμόρφωση, ο διαφανής διακομιστής μεσολάβησης μπορεί να είναι ένας ξεχωριστός υπολογιστής ή μια εικονική μηχανή πίσω από έναν οικιακό/εταιρικό δρομολογητή. Αρκεί να καταχωρήσετε στατικές διαδρομές στο δρομολογητή ή τις συσκευές και ολόκληρο το υποδίκτυο θα χρησιμοποιήσει τον διακομιστή μεσολάβησης χωρίς να χρειάζεται πρόσθετες ρυθμίσεις.

ΣΠΟΥΔΑΙΟΣ! Είναι απαραίτητο η πύλη μας να λαμβάνει μια στατική IP από το δρομολογητή ή να έχει ρυθμιστεί για την ίδια τη στατική.

1. Ρυθμίστε μια στατική διεύθυνση πύλης (προσαρμογέας enp0s3)

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

/etc/network/interfaces αρχείο# Αυτό το αρχείο περιγράφει τις διεπαφές των δικτύων διαθέσιμες στο σύστημά σας
# Και πώς να τους ενεργοποιήσετε. Για περισσότερες πληροφορίες, δείτε τις διεπαφές (5).

πηγή /etc/network/interfaces.d/*

# Το loopback interface δικτύου
auto lo
iface loopback inet lo

# Η κύρια διεπαφή δικτύου
allow-hotplug enp0s3
iface enp0s3 inet static
διεύθυνση 192.168.23.2
255.255.255.0 netmask
πύλη 192.168.23.254

# Η δευτερεύουσα διεπαφή δικτύου
allow-hotplug enp0s8
iface enp0s8 inet static
διεύθυνση 192.168.201.254
255.255.255.0 netmask

2. Να επιτρέπεται στις συσκευές από το υποδίκτυο 192.168.23.0/24 να χρησιμοποιούν διακομιστή μεσολάβησης

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. Αποθηκεύστε τους κανόνες
root@debian9:~# iptables-save > /etc/iptables/rules.v4

4. Ας γράψουμε υποδίκτυα στο δρομολογητή

Λίστα δικτύου δρομολογητών199.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

Χρησιμοποιημένα υλικά/πόροι

1. Επίσημη ιστοσελίδα του προγράμματος 3proxy 3proxy.ru

2. Οδηγίες εγκατάστασης 3proxy από πηγές www.ekzorchik.ru/2015/02/how-to-take-your-socks-proxy

3. Υποκατάστημα προγραμματιστή 3 διακομιστή μεσολάβησης στο GitHub github.com/z3APA3A/3proxy/issues/274

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο