พื้นฐานของการพร็อกซีแบบโปร่งใสโดยใช้ 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. ติดตั้งผู้บัญชาการเที่ยงคืน
apt-get install mc
3. ตอนนี้เรามี 2 อินเทอร์เฟซ:
enp0s3 - ภายนอกดูที่อินเทอร์เน็ต
enp0s8 - ภายใน ต้องตรวจสอบเครือข่ายท้องถิ่น
ในการแจกแจงแบบอิงเดเบียนอื่น ๆ อินเทอร์เฟซมักจะเรียกว่า eth0 และ eth1
ifconfig -a

อินเตอร์เฟซenp0s3: ธง = 4163 เอ็มทียู 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 อีเธอร์ 08:00:27:c2:ba:e4 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็กเก็ต RX 6412 ไบต์ 8676619 (8.2 MiB)
ข้อผิดพลาด RX 0 ลดลง 0 เกิน 0 เฟรม 0
แพ็กเก็ต TX 1726 ไบต์ 289128 (282.3 KiB)
ข้อผิดพลาด TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 การชนกัน 0

enp0s8: ธง = 4098 เอ็มทียู 1500
อีเธอร์ 08:00:27:79:a7:e3 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็กเก็ต RX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด RX 0 ลดลง 0 เกิน 0 เฟรม 0
TX แพ็กเก็ต 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 การชนกัน 0

แท้จริง: ธง=73 เอ็มทียู 65536
inet 127.0.0.1 เน็ตมาสก์ 255.0.0.0
inet6 ::1 คำนำหน้า 128 scopeid 0x10 วนซ้ำ txqueuelen 1 (Local Loopback)
แพ็กเก็ต RX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด RX 0 ลดลง 0 เกิน 0 เฟรม 0
TX แพ็กเก็ต 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 การชนกัน 0

ขณะนี้ไม่ได้ใช้อินเทอร์เฟซ enp0s8 เราจะเปิดใช้งานเมื่อเราต้องการใช้การกำหนดค่า Proxy NAT หรือ NAT เมื่อถึงเวลานั้นก็จะสมเหตุสมผลที่จะกำหนด IP แบบคงที่

4. มาเริ่มการติดตั้ง 3proxy กันดีกว่า

4.1 การติดตั้งแพ็คเกจพื้นฐานสำหรับการคอมไพล์ 3proxy จากแหล่งที่มา

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

เมคล็อกทำให้ [2]: ออกจากไดเรกทอรี '/opt/proxy/3proxy-0.8.12/src/plugins/TransparentPlugin'
ทำให้ [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. สร้างไฟล์เปล่าและคัดลอกการกำหนดค่าไปที่นั่น

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
เข้าสู่ระบบ /home/joke/proxy/logs/3proxy.log D
รูปแบบบันทึก "- +_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:* ฟัง 504/3proxy
TCP 0 0 0.0.0.0:22 0.0.0.0:* ฟัง 338/sshd
TCP 0 0 0.0.0.0:3128 0.0.0.0:* ฟัง 504/3proxy
tcp6 0 0 :::22 :::* ฟัง 338/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 352/dhclient

ตามที่เขียนไว้ในการกำหนดค่า เว็บพร็อกซีของเราจะรับฟังพอร์ต 8080 ส่วนพร็อกซี Socks5 จะรับฟังพอร์ต 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.com:443_HTTP/1.1
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 จะใช้ความสามารถ 3proxy (dnspr) UDP จะไม่ "ไป" ออกไปข้างนอก เนื่องจากเรายังไม่ได้ใช้กลไกการส่งต่อ (ปิดใช้งานโดยค่าเริ่มต้นในเคอร์เนล Linux)

1. ถึงเวลาเปิดใช้งานอินเทอร์เฟซ enp0s8

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

/etc/network/interfaces ไฟล์# ไฟล์นี้จะอธิบายถึงการเชื่อมต่อเครือข่ายที่มีอยู่ในระบบของคุณ
# เปิดใช้งานและวิธีการที่จะให้พวกเขา สำหรับข้อมูลเพิ่มเติมโปรดดูที่การเชื่อมต่อ (5)

แหล่งที่มา /etc/network/interfaces.d/*

# เชื่อมต่อเครือข่ายย้อนกลับ
lo อัตโนมัติ
iface lo inet ย้อนกลับ

# อินเทอร์เฟซเครือข่ายหลัก
อนุญาต hotplug enp0s3
iface enp0s3 inet dhcp

# อินเทอร์เฟซเครือข่ายรอง
อนุญาต hotplug enp0s8
iface enp0s8 inet คงที่
ที่อยู่ 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: ธง = 4163 เอ็มทียู 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 อีเธอร์ 08:00:27:c2:ba:e4 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็กเก็ต RX 61 ไบต์ 7873 (7.6 KiB)
ข้อผิดพลาด RX 0 ลดลง 0 เกิน 0 เฟรม 0
แพ็กเก็ต TX 65 ไบต์ 10917 (10.6 KiB)
ข้อผิดพลาด TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 การชนกัน 0

enp0s8: ธง = 4163 เอ็มทียู 1500
inet 192.168.201.254 netmask 255.255.255.0 ออกอากาศ 192.168.201.255
inet6 fe80::a00:27ff:fe79:a7e3 ส่วนนำหน้า 64 scopeid 0x20 อีเธอร์ 08:00:27:79:a7:e3 txqueuelen 1000 (อีเธอร์เน็ต)
แพ็กเก็ต RX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด RX 0 ลดลง 0 เกิน 0 เฟรม 0
TX แพ็กเก็ต 8 ไบต์ 648 (648.0 B)
ข้อผิดพลาด TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 การชนกัน 0

แท้จริง: ธง=73 เอ็มทียู 65536
inet 127.0.0.1 เน็ตมาสก์ 255.0.0.0
inet6 ::1 คำนำหน้า 128 scopeid 0x10 วนซ้ำ txqueuelen 1 (Local Loopback)
แพ็กเก็ต RX 0 ไบต์ 0 (0.0 B)
ข้อผิดพลาด RX 0 ลดลง 0 เกิน 0 เฟรม 0
TX แพ็กเก็ต 0 ไบต์ 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
เข้าสู่ระบบ /home/joke/proxy/logs/3proxy.log D
รูปแบบบันทึก "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
หมุน 3
ล้าง
รับรองความถูกต้องเฉพาะ
DNSPR
อนุญาต *
ผู้ปกครอง 1000 ถุงเท้า 5 IP_ADDRESS ของ EXTERNAL_PROXY 3128 ผู้ทดสอบ 1234
ปลั๊กอิน /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:* ฟัง 349/sshd
TCP 0 0 0.0.0.0:888 0.0.0.0:* ฟัง 354/3proxy
tcp6 0 0 :::22 :::* ฟัง 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";
ตัวเลือกโดเมนเนมเซิร์ฟเวอร์ 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;
ตัวเลือกโดเมนเนมเซิร์ฟเวอร์ 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:* ฟัง 389/sshd
TCP 0 0 0.0.0.0:888 0.0.0.0:* ฟัง 310/3proxy
tcp6 0 0 :::22 :::* ฟัง 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
ดิบ 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 ไปยังพร็อกซีเซิร์ฟเวอร์ที่ระบุ

หมายเหตุ: หากเรามีเว็บพรอกซี แทนที่จะเขียนด้วยถุงเท้า 5 เราจำเป็นต้องเขียนการเชื่อมต่อ ถ้าถุงเท้า 4 ตามด้วยถุงเท้า 4 (ถุงเท้า 4 ไม่รองรับการอนุญาตการเข้าสู่ระบบ/รหัสผ่าน!)

ตัวอย่างการกำหนดค่าของพร็อกซีเซิร์ฟเวอร์โปร่งใสหมายเลข 2ภูต
pidfile /home/joke/proxy/3proxy.pid
เซิร์ฟเวอร์ 8.8.8.8
nscache 65536
แม็กซ์คอน 500
หมดเวลา 1 5 30 60 180 1800 16 60
เข้าสู่ระบบ /home/joke/proxy/logs/3proxy.log D
รูปแบบบันทึก "- +_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

ปลั๊กอิน /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 ทั้งหมดทำงานได้ดี ไม่จำเป็นต้องสร้าง/แทนที่ใบรับรอง

ขั้นแรก เรามาตัดสินใจว่าเครือข่ายย่อย/บริการใดที่เราต้องการพร็อกซี สมมติว่าพร็อกซีภายนอกอยู่ในตำแหน่งที่บริการอย่าง pandora.com ดำเนินการอยู่ ตอนนี้ยังคงต้องกำหนดเครือข่ายย่อย/ที่อยู่ของมัน

1.ปิง

root@debian9:~# ping pandora.com
PING pandora.com (208.85.40.20) ข้อมูล 56(84) ไบต์

2. พิมพ์ BGP 208.85.40.20 ลงใน Google

ไปที่เว็บไซต์ 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/aggregate และคัดลอกรายการของเราไปที่นั่น เป็นผลให้ - 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/*

# เชื่อมต่อเครือข่ายย้อนกลับ
lo อัตโนมัติ
iface lo inet ย้อนกลับ

# อินเทอร์เฟซเครือข่ายหลัก
อนุญาต hotplug enp0s3
iface enp0s3 inet คงที่
ที่อยู่ 192.168.23.2
255.255.255.0 netmask
192.168.23.254 เกตเวย์

# อินเทอร์เฟซเครือข่ายรอง
อนุญาต hotplug enp0s8
iface enp0s8 inet คงที่
ที่อยู่ 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. สาขาการพัฒนา 3proxy บน GitHub github.com/z3APA3A/3proxy/issues/274

ที่มา: will.com

เพิ่มความคิดเห็น