3proxy နှင့် iptables/netfilter ကိုအသုံးပြု၍ ပွင့်လင်းမြင်သာသော proxying ၏အခြေခံများ သို့မဟုတ် "အရာအားလုံးကို proxy မှတဆင့်ထည့်နည်း"

ဤဆောင်းပါးတွင် ဖောက်သည်များက လုံးဝသတိမထားမိဘဲ ပြင်ပ proxy ဆာဗာများမှတစ်ဆင့် လမ်းကြောင်းအားလုံးကို သို့မဟုတ် တစ်စိတ်တစ်ပိုင်းကို ပြန်ညွှန်းနိုင်စေမည့် ပွင့်လင်းသော proxying ၏ ဖြစ်နိုင်ချေများကို ဖော်ပြလိုပါသည်။

ဤပြဿနာကို စတင်ဖြေရှင်းသောအခါ ၎င်း၏အကောင်အထည်ဖော်မှုတွင် သိသာထင်ရှားသောပြဿနာတစ်ခုရှိသည် - HTTPS ပရိုတိုကောနှင့် ရင်ဆိုင်ခဲ့ရသည်။ ကောင်းမွန်သောနေ့ရက်များတွင်၊ ပွင့်လင်းမြင်သာသော HTTP proxying တွင် အထူးပြဿနာများမရှိခဲ့သော်လည်း HTTPS proxying ဖြင့်၊ ဘရောက်ဆာများသည် ပရိုတိုကောကို အနှောင့်အယှက်ပေးကြောင်း သတင်းပို့ပြီး ပျော်ရွှင်မှုအဆုံးသတ်သွားမည်ဖြစ်သည်။

Squid ပရောက်စီဆာဗာအတွက် ဘုံညွှန်ကြားချက်များတွင်၊ အနည်းဆုံးတော့ လုံးဝအသုံးမကျသော၊ အသုံးမကျသောဖြစ်ပြီး MITM တိုက်ခိုက်မှုနှင့်တူသော သင့်ကိုယ်ပိုင်လက်မှတ်ကို ဖန်တီးပြီး ဖောက်သည်များပေါ်တွင် ထည့်သွင်းရန် အကြံပြုထားသည်။ Squid သည် အလားတူတစ်ခုခုကို လုပ်ဆောင်နိုင်နေပြီဖြစ်သည်ကို ကျွန်ုပ်သိသည်၊ သို့သော် ဤဆောင်းပါးသည် လေးစားဖွယ် 3APA3A မှ 3proxy ကို အသုံးပြု၍ သက်သေပြပြီး အလုပ်လုပ်သည့်နည်းလမ်းအကြောင်းဖြစ်သည်။

ထို့နောက်၊ အရင်းအမြစ်မှ 3proxy တည်ဆောက်ခြင်း လုပ်ငန်းစဉ်၊ ၎င်း၏ဖွဲ့စည်းပုံ၊ NAT ကိုအသုံးပြု၍ အပြည့်အဝရွေးချယ်ထားသော proxying၊ ပြင်ပပရောက်စီဆာဗာများသို့ ချန်နယ်ဖြန့်ဖြူးခြင်းအပြင် router နှင့် static routes အသုံးပြုမှုတို့ကို အသေးစိတ်ကြည့်ရှုပါမည်။ ကျွန်ုပ်တို့သည် Debian 9 x64 ကို OS အဖြစ်အသုံးပြုသည်။ အစ!

3proxy ကိုထည့်သွင်းခြင်းနှင့် ပုံမှန်ပရောက်စီဆာဗာကို လုပ်ဆောင်ခြင်း။

1. ifconfig ကို ထည့်သွင်းပါ (net-tools package မှ)
apt-get install net-tools
2. Midnight Commander ကို Install လုပ်ပါ။
apt-get install mc
3. ယခု ကျွန်ုပ်တို့တွင် အင်တာဖေ့စ် 2 ခုရှိသည်။
enp0s3 - ပြင်ပအင်တာနက်ကိုကြည့်ပါ။
enp0s8 - အတွင်းပိုင်း၊ ဒေသဆိုင်ရာကွန်ရက်သို့ကြည့်ရှုရပါမည်။
အခြားသော Debian-based ဖြန့်ဝေမှုများတွင် အင်တာဖေ့စ်များကို အများအားဖြင့် eth0 နှင့် eth1 ဟုခေါ်သည်။
ifconfig -a

interfacesenp0s3: flags=4163 mtu 1500 ပါ။
inet 192.168.23.11 netmask 255.255.255.0 ထုတ်လွှင့်မှု 192.168.23.255
inet6 fe80::a00:27ff:fec2:bae4 ရှေ့ဆကျိန် 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX အထုပ်များ 6412 bytes 8676619 (8.2 MiB)
RX အမှားများ 0 ကျဆင်းသွားသည် 0 သည် 0 frame ကို 0 ကျော်လွန်သွားသည်
TX အထုပ်များ 1726 bytes 289128 (282.3 KiB)
TX အမှားအယွင်းများ 0 ကျဆင်းသွားသည် 0 overruns 0 carrier 0 collisions 0

enp0s8: flags=4098 mtu 1500 ပါ။
ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX အထုပ်များ 0 bytes 0 (0.0 B)
RX အမှားများ 0 ကျဆင်းသွားသည် 0 သည် 0 frame ကို 0 ကျော်လွန်သွားသည်
TX အထုပ်များ 0 bytes 0 (0.0 B)
TX အမှားအယွင်းများ 0 ကျဆင်းသွားသည် 0 overruns 0 carrier 0 collisions 0

lo: အလံများ=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 ရှေ့ဆက် 128 scopeid 0x10 ကွင်းဆက် txqueuelen 1 (Local Loopback)
RX အထုပ်များ 0 bytes 0 (0.0 B)
RX အမှားများ 0 ကျဆင်းသွားသည် 0 သည် 0 frame ကို 0 ကျော်လွန်သွားသည်
TX အထုပ်များ 0 bytes 0 (0.0 B)
TX အမှားအယွင်းများ 0 ကျဆင်းသွားသည် 0 overruns 0 carrier 0 collisions 0

enp0s8 အင်တာဖေ့စ်ကို လောလောဆယ်အသုံးမပြုသေးပါ၊ ကျွန်ုပ်တို့သည် Proxy NAT သို့မဟုတ် NAT ဖွဲ့စည်းမှုပုံစံကို အသုံးပြုလိုသည့်အခါ ၎င်းကို ဖွင့်ပါမည်။ ထို့နောက် ၎င်းအား static IP အဖြစ် သတ်မှတ်ခြင်းသည် ယုတ္တိရှိပေလိမ့်မည်။

4. 3proxy ကို စတင်ထည့်သွင်းကြပါစို့

4.1 ရင်းမြစ်များမှ 3proxy ကိုစုစည်းရန်အတွက် အခြေခံပက်ကေ့ဂျ်များကို ထည့်သွင်းခြင်း။

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

၄.၂။ ဖိုင်တွဲကို အရင်းအမြစ်များဖြင့် ဒေါင်းလုဒ်လုပ်ရန် ဖိုင်တွဲတစ်ခု ဖန်တီးကြပါစို့

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

၄.၃။ ဒီဖိုဒါကို သွားရအောင်

root@debian9:~# cd /opt/proxy

၄.၄။ အခုနောက်ဆုံးထွက် 4.4proxy ပက်ကေ့ဂျ်ကို ဒေါင်းလုဒ်လုပ်လိုက်ကြရအောင်။ ရေးသားချိန်တွင်၊ နောက်ဆုံးထွက်တည်ငြိမ်သောဗားရှင်းမှာ 3 (0.8.12/18/04) ဖြစ်ပြီး တရားဝင် 2018proxy ဝဘ်ဆိုက်မှ ဒေါင်းလုဒ်လုပ်ပါ။

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

၄.၅။ ဒေါင်းလုဒ်လုပ်ထားသော မှတ်တမ်းကို ထုပ်ပိုးကြပါစို့

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

၄.၆။ ပရိုဂရမ်ကိုတည်ဆောက်ရန် ထုပ်ပိုးထားသော လမ်းညွှန်သို့သွားပါ။

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

၄.၇။ ထို့နောက်၊ ကျွန်ုပ်တို့၏ဆာဗာသည် လုံးဝအမည်မသိဖြစ်နေစေရန်အတွက် ခေါင်းစီးဖိုင်တွင် စာကြောင်းတစ်ကြောင်းထည့်ရန် လိုအပ်သည် (၎င်းသည် အမှန်တကယ်အလုပ်လုပ်သည်၊ အရာအားလုံးကို စစ်ဆေးပြီး၊ client IP များကို ဝှက်ထားသည်)

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

လိုင်းထည့်ပါ။

#define ANONYMOUS 1

ပြောင်းလဲမှုများကိုသိမ်းဆည်းရန် Ctrl+x နှင့် Enter ကိုနှိပ်ပါ။

၄.၈။ အစီအစဉ်ကို စတင်စုစည်းလိုက်ရအောင်

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' မှ ထွက်ခြင်း

အမှားအယွင်းမရှိ၊ ဆက်ကြပါစို့။

၄.၉။ ပရိုဂရမ်ကို စနစ်တွင် ထည့်သွင်းပါ။

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

၄.၁၀။ root directory ကိုသွားပြီး program ကို install လုပ်ထားတဲ့နေရာကိုစစ်ဆေးပါ။

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

3proxy- /usr/local/bin/3proxy /usr/local/etc/3proxy

၄.၁၁။ အသုံးပြုသူ၏ပင်မလမ်းညွှန်တွင် ဖိုင်များဖွဲ့စည်းပုံနှင့် မှတ်တမ်းများအတွက် ဖိုင်တွဲတစ်ခု ဖန်တီးကြပါစို့

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

၄.၁၂။ config ဖြစ်သင့်သည့် လမ်းညွှန်သို့သွားပါ။

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

၄.၁၃။ ဖိုင်အလွတ်တစ်ခုကို ဖန်တီးပြီး ထိုနေရာတွင် config ကို ကူးယူပါ။

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

3proxy.confdaemons
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
အသုံးပြုသူများ စမ်းသပ်သူ-CL:1234
အချိန်ကုန်ဆုံးချိန် 1 5 30 60 180 1800 16 60
မှတ်တမ်း /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
3 လှည့်
auth အားကောင်းတယ်။
ရေဆွဲပါ
စမ်းသပ်သူကိုခွင့်ပြုပါ။
ခြေအိတ်-p3128
ပရောက်စီ -p8080

သိမ်းဆည်းရန်၊ Ctrl + Z ကိုနှိပ်ပါ။

၄.၁၄။ စတင်ချိန်တွင် အမှားအယွင်းမရှိစေရန် pid ဖိုင်ကို ဖန်တီးကြပါစို့။

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

သိမ်းဆည်းရန်၊ Ctrl + Z ကိုနှိပ်ပါ။

၄.၁၅။ ပရောက်စီဆာဗာကို စတင်လိုက်ရအောင်။

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

၄.၁၆။ ဆာဗာသည် ဆိပ်ကမ်းများတွင် နားထောင်နေသလား ကြည့်ရအောင်

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

netstat မှတ်တမ်းလက်ရှိ အင်တာနက်ချိတ်ဆက်မှုများ (ဆာဗာများသာ)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program အမည်
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

၎င်းကို config တွင်ရေးထားသည့်အတိုင်း၊ ကျွန်ုပ်တို့၏ဝဘ်ပရောက်စီသည် port 8080 ကိုနားထောင်သည်၊ Socks5 proxy သည် port 3128 ကိုနားထောင်သည်။

၄.၁၇။ ပြန်လည်စတင်ပြီးနောက် proxy ဝန်ဆောင်မှုကို အလိုအလျောက်စတင်ရန်၊ ၎င်းကို cron တွင် ထည့်သွင်းရန် လိုအပ်သည်။

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

လိုင်းထည့်ပါ။

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

cron သည် စာကြောင်း၏အဆုံးကိုမြင်ရပြီး ဖိုင်ကိုသိမ်းဆည်းရမည်ဖြစ်သောကြောင့် Enter ကိုနှိပ်ပါ။

crontab အသစ်ကို ထည့်သွင်းခြင်းနှင့်ပတ်သက်သည့် မက်ဆေ့ချ်တစ်ခု ရှိသင့်သည်။

crontab- crontab အသစ်ကို ထည့်သွင်းခြင်း။

၄.၁၈။ စနစ်ကို ပြန်လည်စတင်ပြီး ဘရောက်ဆာမှတဆင့် ပရောက်စီသို့ ချိတ်ဆက်ကြည့်ကြပါစို့။ စစ်ဆေးရန်အတွက်၊ ကျွန်ုပ်တို့သည် Firefox ဘရောက်ဆာ (ဝဘ်ပရောက်စီအတွက်) နှင့် socks4.18 အတွက် FoxyProxy add-on ကို စစ်မှန်ကြောင်းအထောက်အထားပြခြင်းဖြင့် အသုံးပြုပါသည်။

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

၄.၁၉။ ပြန်လည်စတင်ပြီးနောက် proxy ၏လုပ်ဆောင်ချက်ကို စစ်ဆေးပြီးနောက်၊ မှတ်တမ်းများကို သင်ကြည့်ရှုနိုင်ပါသည်။ ၎င်းသည် ပရောက်စီဆာဗာ စနစ်ထည့်သွင်းမှုကို အပြီးသတ်စေသည်။

3 ပရောက်စီမှတ်တမ်း1542573996.018 PROXY.8080 00000 စမ်းသပ်သူ 192.168.23.10:50915 217.12.15.54:443 1193 6939 0 CONNECT_ads.yahoo.com:443HTTP/1.1HTTP
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) စွမ်းရည်များကို အသုံးပြုမည်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် ရှေ့သို့ယန္တရားကိုအသုံးမပြုသေးသောကြောင့် (Linux kernel တွင်ပုံမှန်အားဖြင့်ပိတ်ထားသည်) ကြောင့် UDP သည် အပြင်သို့ "မထွက်" ပါ။

1. enp0s8 interface ကိုဖွင့်ရန်အချိန်ရောက်ပါပြီ။

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

/etc/network/interfaces ဖိုင်# ဤဖိုင်သည် သင့်စနစ်ပေါ်ရှိ ကွန်ရက်ချိတ်ဆက်မှုများကို ဖော်ပြသည်။
# နှင့် ၎င်းတို့ကို မည်သို့ activate လုပ်မည်နည်း။ ပိုမိုသိရှိလိုပါက အင်တာဖေ့စ်(၅)ကို ကြည့်ပါ။

အရင်းအမြစ် /etc/network/interfaces.d/*

# loopback ကွန်ယက်အင်တာဖေ့စ်
ကားက
loopace inet iface lo

# အဓိကကွန်ရက်အင်တာဖေ့စ်
ခွင့်ပြု-hotplug enp0s3
iface enp0s3 inet dhcp

# ဒုတိယကွန်ရက်အင်တာဖေ့စ်
ခွင့်ပြု-hotplug enp0s8
iface enp0s8 inet static
192.168.201.254 လိပ်စာ
netmask 255.255.255.0

ဤတွင် ကျွန်ုပ်တို့သည် enp0s8 အင်တာဖေ့စ်ကို တည်ငြိမ်လိပ်စာ 192.168.201.254 နှင့် မျက်နှာဖုံး 255.255.255.0 ကို သတ်မှတ်ပေးခဲ့သည်။
config ကို Ctrl+X ကိုသိမ်းပြီး reboot လုပ်ပါ။

root@debian9:~# reboot

2. အင်တာဖေ့စ်များကို စစ်ဆေးခြင်း။

root@debian9:~# ifconfig

ifconfig မှတ်တမ်း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 ရှေ့ဆကျိန် 64 scopeid 0x20 ether 08:00:27:c2:ba:e4 txqueuelen 1000 (Ethernet)
RX အထုပ်များ 61 bytes 7873 (7.6 KiB)
RX အမှားများ 0 ကျဆင်းသွားသည် 0 သည် 0 frame ကို 0 ကျော်လွန်သွားသည်
TX အထုပ်များ 65 bytes 10917 (10.6 KiB)
TX အမှားအယွင်းများ 0 ကျဆင်းသွားသည် 0 overruns 0 carrier 0 collisions 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 ရှေ့ဆက်စာ 64 scopeid 0x20 ether 08:00:27:79:a7:e3 txqueuelen 1000 (Ethernet)
RX အထုပ်များ 0 bytes 0 (0.0 B)
RX အမှားများ 0 ကျဆင်းသွားသည် 0 သည် 0 frame ကို 0 ကျော်လွန်သွားသည်
TX အထုပ်များ 8 bytes 648 (648.0 B)
TX အမှားအယွင်းများ 0 ကျဆင်းသွားသည် 0 overruns 0 carrier 0 collisions 0

lo: အလံများ=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 ရှေ့ဆက် 128 scopeid 0x10 ကွင်းဆက် txqueuelen 1 (Local Loopback)
RX အထုပ်များ 0 bytes 0 (0.0 B)
RX အမှားများ 0 ကျဆင်းသွားသည် 0 သည် 0 frame ကို 0 ကျော်လွန်သွားသည်
TX အထုပ်များ 0 bytes 0 (0.0 B)
TX အမှားအယွင်းများ 0 ကျဆင်းသွားသည် 0 overruns 0 carrier 0 collisions 0

3. အားလုံးအဆင်ပြေသွားပါပြီ၊ ယခု သင်သည် 3proxy ကို ဖောက်ထွင်းမြင်နိုင်သော proxying အတွက် configure လုပ်ရန်လိုအပ်ပါသည်။

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

ဖောက်ထွင်းမြင်ရသော ပရောက်စီဆာဗာ၏ နမူနာပုံစံ နံပါတ် 1daemons
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
အချိန်ကုန်ဆုံးချိန် 1 5 30 60 180 1800 16 60
မှတ်တမ်း /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
3 လှည့်
ရေဆွဲပါ
auth iponly
dnspr
ခွင့်ပြုပါ*
မိဘခြေအိတ် 1000 IP_ADDRESS OF EXTERNAL_PROXY 5 စမ်းသပ်သူ 3128
ပလပ်အင် /opt/proxy/3proxy-0.8.12/src/TransparentPlugin.ld.so transparent_plugin
tcppm -i0.0.0.0 888 127.0.0.1 11111

4. ယခု config အသစ်ဖြင့် 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. ယခုကျွန်ုပ်တို့၏ proxy သည် မည်သည့်အရာကို နားထောင်နေသည် ကို ကြည့်ကြပါစို့
root@debian9:~# netstat -nlp

netstat မှတ်တမ်းလက်ရှိ အင်တာနက်ချိတ်ဆက်မှုများ (ဆာဗာများသာ)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program အမည်
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. ယခု proxy သည် port 888၊ port 53 ရှိ DNS တွင်မဆို TCP ချိတ်ဆက်မှုများကို လက်ခံရန်အဆင်သင့်ဖြစ်နေပါပြီ၊ သို့မှသာ ၎င်းတို့ကို remote socks5 proxy နှင့် 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 startup ဖိုင်ကို တည်းဖြတ်ပါ။
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 none;

# အကယ်၍ ဤ 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 option ကို router များ;
option ကိုထုတ်လွှင့် - လိပ်စာ 192.168.201.255;
ပုံမှန် - ငှားရမ်းအချိန် 600;
အများဆုံး-ငှားရမ်းချိန် 7200;
}

11. ပြန်လည်စတင်ပြီး port 67 တွင် ဝန်ဆောင်မှုကို စစ်ဆေးပါ။
root@debian9:~# reboot
root@debian9:~# netstat -nlp

netstat မှတ်တမ်းလက်ရှိ အင်တာနက်ချိတ်ဆက်မှုများ (ဆာဗာများသာ)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program အမည်
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 တောင်းဆိုမှုအားလုံးကို port 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. ချန်နယ် bandwidth ကိုချဲ့ထွင်ရန်၊ သင်သည် ပရောက်စီဆာဗာများစွာကို တစ်ပြိုင်နက် အသုံးပြုနိုင်သည်။ စုစုပေါင်း 1000 ဖြစ်ရပါမည်။ 0.2၊ 0.2၊ 0.2၊ 0.2၊ 0,1၊ 0,1 ဖြစ်နိုင်ခြေရှိသော ချိတ်ဆက်မှုအသစ်များကို သတ်မှတ်ထားသော ပရောက်စီဆာဗာများသို့ တည်ထောင်ပါသည်။

မှတ်ချက်- ကျွန်ုပ်တို့တွင် ဝဘ်ပရောက်စီတစ်ခုရှိလျှင် socks5 အစား socks4 ဆိုလျှင် socks4 (socks4 သည် အကောင့်ဝင်ခြင်း/လျှို့ဝှက်စာဝှက်ကို ပံ့ပိုးပေးမည်မဟုတ်ပါ။)

ဖောက်ထွင်းမြင်ရသော ပရောက်စီဆာဗာ၏ နမူနာပုံစံ နံပါတ် 2daemons
pidfile /home/joke/proxy/3proxy.pid
nserver 8.8.8.8
nscache 65536
maxconn 500
အချိန်ကုန်ဆုံးချိန် 1 5 30 60 180 1800 16 60
မှတ်တမ်း /home/joke/proxy/logs/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
3 လှည့်
ရေဆွဲပါ
auth iponly
dnspr
ခွင့်ပြုပါ*

မိဘခြေအိတ် ၂၀၀ ၅ IP_ADDRESS_EXTERNAL_PROXY#200 5 စမ်းသပ်သူ 1
မိဘခြေအိတ် ၂၀၀ ၅ IP_ADDRESS_EXTERNAL_PROXY#200 5 စမ်းသပ်သူ 2
မိဘခြေအိတ် ၂၀၀ ၅ IP_ADDRESS_EXTERNAL_PROXY#200 5 စမ်းသပ်သူ 3
မိဘခြေအိတ် ၂၀၀ ၅ IP_ADDRESS_EXTERNAL_PROXY#200 5 စမ်းသပ်သူ 4
မိဘခြေအိတ် ၂၀၀ ၅ IP_ADDRESS_EXTERNAL_PROXY#100 5 စမ်းသပ်သူ 5
မိဘခြေအိတ် ၂၀၀ ၅ IP_ADDRESS_EXTERNAL_PROXY#100 5 စမ်းသပ်သူ 6

ပလပ်အင် /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 ဖွဲ့စည်းမှုပုံစံကို စနစ်ထည့်သွင်းခြင်းနှင့် လုပ်ဆောင်ခြင်း။

ဤဖွဲ့စည်းပုံတွင်၊ ကျွန်ုပ်တို့သည် တစ်ဦးချင်းလိပ်စာများ သို့မဟုတ် ပိုက်လိုင်းခွဲများ၏ ရွေးချယ်မှု သို့မဟုတ် ပွင့်လင်းမြင်သာမှုအပြည့်ရှိသော proxying ဖြင့် ပုံမှန် NAT ယန္တရားကို အသုံးပြုပါမည်။ အတွင်းကွန်ရက်အသုံးပြုသူများသည် ၎င်းတို့သည် ပရောက်စီမှတစ်ဆင့် လုပ်ဆောင်နေကြောင်းကိုပင် မသိဘဲ အချို့သောဝန်ဆောင်မှုများ/ ကွန်ရက်ခွဲများနှင့် လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။ https ချိတ်ဆက်မှုအားလုံး အဆင်ပြေသည်၊ လက်မှတ်များကို ထုတ်ပေး/အစားထိုးရန် မလိုအပ်ပါ။

ဦးစွာ၊ ကျွန်ုပ်တို့ proxy လုပ်လိုသော မည်သည့် subnets/services များကို ဆုံးဖြတ်ကြပါစို့။ pandora.com ကဲ့သို့ ဝန်ဆောင်မှု လည်ပတ်သည့်နေရာတွင် ပြင်ပ proxy များ ရှိနေသည်ဟု ယူဆကြပါစို့။ ယခု ၎င်းသည် ၎င်း၏ subnets/ addresses များကို ဆုံးဖြတ်ရန် ကျန်ရှိနေပါသည်။

1. ပင်း

root@debian9:~# ping pandora.com
PING pandora.com (208.85.40.20) ဒေတာ 56(84) bytes ။

2. Google တွင် BGP 208.85.40.20 ဟု ရိုက်ထည့်ပါ။

ဆိုက်ကိုသွားကြည့်ရအောင် bgp.he.net/net/208.85.40.0/24#_netinfo
ကျွန်ုပ်ရှာဖွေနေသော subnet သည် AS40428 Pandora Media, Inc

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

v4 ရှေ့ဆက်များကို ဖွင့်နေသည်။

bgp.he.net/AS40428#_prefixes

ဤသည်မှာ လိုအပ်သော 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. subnets အရေအတွက်ကို လျှော့ချရန်၊ စုစည်းမှုကို လုပ်ဆောင်ရန် လိုအပ်သည်။ ဆိုက်ကိုသွားပါ။ ip-calculator.ru/aggregate ပြီးလျှင် ကျွန်ုပ်တို့၏စာရင်းကို ထိုနေရာတွင် ကူးယူပါ။ ရလဒ် - 6 အစား 14 subnets ။

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 = ၁

ဖိုင်ကိုသိမ်းဆည်းရန် Ctrl+X

5. ကျွန်ုပ်တို့သည် pandora.com subnets များကို 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. စည်းမျဥ်းစည်းကမ်းကို လိုက်နာကြပါစို့

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

router configuration မှတစ်ဆင့် Transparent Proxy ကို စနစ်ထည့်သွင်းခြင်းနှင့် လုပ်ဆောင်ခြင်း။

ဤဖွဲ့စည်းပုံတွင်၊ ပွင့်လင်းမြင်သာသော ပရောက်စီဆာဗာသည် သီးခြား PC သို့မဟုတ် အိမ်/ကော်ပိုရိတ် router နောက်ကွယ်ရှိ virtual machine ဖြစ်နိုင်သည်။ Router သို့မဟုတ် စက်များတွင် တည်ငြိမ်သောလမ်းကြောင်းများကို စာရင်းသွင်းရန် လုံလောက်ပြီး subnet တစ်ခုလုံးသည် နောက်ထပ်ဆက်တင်များမလိုအပ်ဘဲ ပရောက်စီကို အသုံးပြုမည်ဖြစ်သည်။

အရေးကြီးသည်။ ကျွန်ုပ်တို့၏ gateway သည် router မှ static IP ကို ​​လက်ခံရရှိရန် လိုအပ်သည်၊ သို့မဟုတ် static ကိုယ်တိုင်ဖြစ်ရန် ပြင်ဆင်သတ်မှတ်ထားရန် လိုအပ်ပါသည်။

1. static gateway address (enp0s3 adapter) ကို စီစဉ်သတ်မှတ်ပါ

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

/etc/network/interfaces ဖိုင်# ဤဖိုင်သည် သင့်စနစ်ပေါ်ရှိ ကွန်ရက်ချိတ်ဆက်မှုများကို ဖော်ပြသည်။
# နှင့် ၎င်းတို့ကို မည်သို့ activate လုပ်မည်နည်း။ ပိုမိုသိရှိလိုပါက အင်တာဖေ့စ်(၅)ကို ကြည့်ပါ။

အရင်းအမြစ် /etc/network/interfaces.d/*

# loopback ကွန်ယက်အင်တာဖေ့စ်
ကားက
loopace inet iface lo

# အဓိကကွန်ရက်အင်တာဖေ့စ်
ခွင့်ပြု-hotplug enp0s3
iface enp0s3 inet static
192.168.23.2 လိပ်စာ
netmask 255.255.255.0
တံခါးပေါက် 192.168.23.254

# ဒုတိယကွန်ရက်အင်တာဖေ့စ်
ခွင့်ပြု-hotplug enp0s8
iface enp0s8 inet static
192.168.201.254 လိပ်စာ
netmask 255.255.255.0

2. 192.168.23.0/24 subnet မှ စက်ပစ္စည်းများအား proxying ကို အသုံးပြုခွင့်ပေးပါ

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. router တွင် subnet များကို စာရင်းသွင်းကြပါစို့

Router ကွန်ရက်စာရင်း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. GitHub ရှိ 3proxy ဖွံ့ဖြိုးတိုးတက်ရေးဌာနခွဲ github.com/z3APA3A/3proxy/issues/274

source: www.habr.com

မှတ်ချက် Add