SOCKS-ում երթուղիչի ստեղծում Debian 10-ով նոութբուքի վրա
Մի ամբողջ տարի (կամ երկու) ես հետաձգեցի այս հոդվածի հրապարակումը հիմնական պատճառով. ես արդեն հրապարակել էի երկու հոդված, որտեղ նկարագրել էի SOCKS-ում երթուղիչ ստեղծելու գործընթացը Debian-ով շատ սովորական նոութբուքից:
Այնուամենայնիվ, այդ ժամանակից ի վեր Debian-ի կայուն տարբերակը թարմացվել է Buster-ին, բավական թվով մարդիկ կապվել են ինձ հետ՝ խնդրելով օգնություն կարգավորելու հարցում, ինչը նշանակում է, որ իմ նախորդ հոդվածները սպառիչ չեն: Դե, ես ինքս կռահեցի, որ դրանցում շարադրված մեթոդները լիովին չեն բացահայտում SOCKS-ում երթուղղման համար Linux-ի ստեղծման բոլոր բարդությունները: Բացի այդ, դրանք գրված են Debian Stretch-ի համար, և Buster-ի թարմացումից հետո systemd init համակարգում ես նկատեցի փոքր փոփոխություններ ծառայությունների փոխազդեցության մեջ։ Եվ հենց հոդվածներում ես չեմ օգտագործել systemd-networkd, չնայած այն լավագույնս համապատասխանում է բարդ ցանցային կոնֆիգուրացիաներին:
Բացի վերը նշված փոփոխություններից, իմ կազմաձևին ավելացվեցին հետևյալ ծառայությունները. hostapd - մուտքի կետի վիրտուալացման ծառայություն, ntp տեղական ցանցի հաճախորդների ժամանակը համաժամեցնելու համար, dnscrypt-proxy գաղտնագրել կապերը DNS-ի միջոցով և անջատել գովազդը տեղական ցանցի հաճախորդների վրա, ինչպես նաև, ինչպես արդեն նշեցի, systemd-networkd ցանցային միջերեսները կարգավորելու համար:
Ահա այսպիսի երթուղիչի ներքին կառուցվածքի պարզ բլոկային դիագրամ:
Այսպիսով, թույլ տվեք հիշեցնել ձեզ, թե որոնք են այս հոդվածաշարի նպատակները.
Ուղղեք OS-ի բոլոր միացումները դեպի SOCKS, ինչպես նաև միացումներ բոլոր սարքերից, որոնք գտնվում են նույն ցանցում, ինչ նոութբուքը:
Իմ դեպքում նոութբուքը պետք է մնա ամբողջովին շարժական: Այսինքն՝ հնարավորություն տալ օգտվել աշխատասեղանի միջավայրից և կապված չլինել ֆիզիկական դիրքի հետ։
Վերջին կետը ենթադրում է միացում և երթուղում միայն ներկառուցված անլար ինտերֆեյսի միջոցով:
Դե, և, իհարկե, համապարփակ ուղեցույցի ստեղծում, ինչպես նաև համապատասխան տեխնոլոգիաների վերլուծություն իմ համեստ գիտելիքներով:
Ինչը կքննարկվի այս հոդվածում.
գիտ — ներբեռնեք նախագծի պահեստները tun2socksպահանջվում է TCP երթևեկությունը դեպի SOCKS ուղղորդելու համար և ստեղծել_ap — սկրիպտ՝ օգտագործելով վիրտուալ մուտքի կետի կարգավորումը ավտոմատացնելու համար hostapd.
tun2socks — կառուցել և տեղադրել systemd ծառայությունը համակարգում:
systemd-networkd — կարգավորել անլար և վիրտուալ միջերեսները, ստատիկ երթուղղման աղյուսակները և փաթեթների վերահղումը:
ntp — տեղադրել և կարգավորել սերվեր՝ վիրտուալ մուտքի կետերի հաճախորդների վրա ժամանակը համաժամեցնելու համար:
dnscrypt-proxy — մենք կգաղտնագրենք DNS հարցումները, կուղղորդենք դրանք դեպի SOCKS և կանջատենք գովազդային տիրույթները տեղական ցանցի համար:
Ինչի՞ համար է այս ամենը:
Սա տեղական ցանցում TCP կապերի ապահովման ուղիներից մեկն է: Հիմնական առավելությունն այն է, որ բոլոր միացումները կատարվում են SOCKS-ով, եթե նրանց համար ստատիկ երթուղի չի կառուցված սկզբնական դարպասի միջով: Սա նշանակում է, որ ձեզ հարկավոր չէ նշել SOCKS սերվերի կարգավորումները լոկալ ցանցի առանձին ծրագրերի կամ հաճախորդների համար. դրանք բոլորը լռելյայն գնում են SOCKS, քանի որ այն լռելյայն դարպասն է, քանի դեռ մենք այլ բան չենք նշել:
Ըստ էության, մենք ավելացնում ենք երկրորդ գաղտնագրող երթուղիչը որպես նոութբուք սկզբնական երթուղիչի դիմաց և օգտագործում ենք սկզբնական երթուղիչի ինտերնետ կապը նոութբուքի արդեն կոդավորված SOCKS հարցումների համար, որն իր հերթին ուղղորդում և կոդավորում է LAN հաճախորդների հարցումները:
Պրովայդերի տեսանկյունից մենք անընդհատ միացված ենք մեկ սերվերի հետ՝ ծածկագրված տրաֆիկով։
Համապատասխանաբար, բոլոր սարքերը միացված են նոութբուքի վիրտուալ մուտքի կետին:
Տեղադրեք tun2socks համակարգում
Քանի դեռ ձեր մեքենան ունի ինտերնետ, ներբեռնեք բոլոր անհրաժեշտ գործիքները:
apt update
apt install git make cmake
Ներբեռնեք badvpn փաթեթը
git clone https://github.com/ambrop72/badvpn
Ձեր համակարգում կհայտնվի թղթապանակ badvpn. Ստեղծեք առանձին թղթապանակ կառուցման համար
NetworkManager-wait-online ծառայություն է, որը սպասում է աշխատանքային ցանցային միացմանը, նախքան systemd-ը կշարունակի գործարկել այլ ծառայություններ, որոնք կախված են ցանցի առկայությունից: Մենք անջատում ենք այն, երբ անցնում ենք համակարգային ցանցային անալոգային:
Եկեք անմիջապես միացնենք այն.
systemctl enable systemd-networkd-wait-online
Կարգավորեք անլար ցանցի ինտերֆեյսը
Ստեղծեք systemd-networkd կազմաձևման ֆայլ անլար ցանցի ինտերֆեյսի համար /etc/systemd/network/25-wlp6s0.network.
Անուն ձեր անլար ինտերֆեյսի անունն է: Բացահայտեք այն հրամանով ip a.
IPForward - հրահանգ, որը հնարավորություն է տալիս փաթեթների վերահղում ցանցային ինտերֆեյսի վրա:
հասցե պատասխանատու է անլար ինտերֆեյսին IP հասցե հատկացնելու համար: Մենք դա նշում ենք ստատիկորեն, քանի որ համարժեք հրահանգով DHCP=yes, systemd-networkd-ը համակարգում ստեղծում է լռելյայն դարպաս: Այնուհետև ամբողջ տրաֆիկը կանցնի սկզբնական դարպասով, այլ ոչ թե այլ ենթացանցով ապագա վիրտուալ ինտերֆեյսի միջոցով: Դուք կարող եք ստուգել ընթացիկ լռելյայն դարպասը հրամանով ip r
Ստեղծեք ստատիկ երթուղի հեռավոր SOCKS սերվերի համար
Եթե ձեր SOCKS սերվերը տեղական չէ, այլ հեռավոր, ապա դուք պետք է դրա համար ստատիկ երթուղի ստեղծեք: Դա անելու համար ավելացրեք բաժին Route մինչև ձեր ստեղծած անլար ինտերֆեյսի կազմաձևման ֆայլի վերջը հետևյալ բովանդակությամբ.
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway — սա լռելյայն դարպասն է կամ ձեր սկզբնական մուտքի կետի հասցեն:
Destination — SOCKS սերվերի հասցեն:
Կարգավորեք wpa_supplicant-ը systemd-networkd-ի համար
systemd-networkd-ն օգտագործում է wpa_supplicant՝ անվտանգ մուտքի կետին միանալու համար: Երբ փորձում է «բարձրացնել» անլար ինտերֆեյսը, systemd-networkd-ը սկսում է ծառայությունը wpa_supplicant@имяՈրտեղ Անունը անլար ինտերֆեյսի անվանումն է: Եթե մինչ այս պահը չեք օգտագործել systemd-networkd-ը, ապա այս ծառայությունը հավանաբար բացակայում է ձեր համակարգում:
Այսպիսով, ստեղծեք այն հրամանով.
systemctl enable wpa_supplicant@wlp6s0
ես օգտագործել եմ wlp6s0 որպես իր անլար ինտերֆեյսի անվանումը: Ձեր անունը կարող է տարբեր լինել: Դուք կարող եք ճանաչել այն հրամանով ip l.
Այժմ ստեղծված ծառայությունը wpa_supplicant@wlp6s0 կգործարկվի, երբ անլար ինտերֆեյսը «բարձրացվի», սակայն այն, իր հերթին, ֆայլում կփնտրի մուտքի կետի SSID և գաղտնաբառի կարգավորումները: /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Հետեւաբար, դուք պետք է ստեղծեք այն, օգտագործելով կոմունալը wpa_passphrase.
որտեղ SSID ձեր մուտքի կետի անունն է, գաղտնաբառը՝ գաղտնաբառը և wlp6s0 — Ձեր անլար ինտերֆեյսի անունը:
Նախաձեռնեք վիրտուալ ինտերֆեյսը tun2socks-ի համար
Ստեղծեք ֆայլ՝ համակարգում նոր վիրտուալ ինտերֆեյս սկզբնավորելու համար/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
Անուն այն անունն է, որը systemd-networkd-ը կնշանակի ապագա վիրտուալ ինտերֆեյսին, երբ այն սկզբնավորվի:
Երեխա վիրտուալ ինտերֆեյսի տեսակ է: Tun2socks ծառայության անունից կարող եք կռահել, որ այն օգտագործում է նման ինտերֆեյս tun.
նեթդեվ ֆայլերի ընդլայնումն է, որը systemd-networkd Օգտագործվում է վիրտուալ ցանցային ինտերֆեյսների սկզբնավորման համար: Այս միջերեսների հասցեն և ցանցի այլ կարգավորումները նշված են .ցանց- ֆայլեր.
Ստեղծեք այսպիսի ֆայլ /etc/systemd/network/25-tun2socks.network հետևյալ բովանդակությամբ.
Name — ձեր նշած վիրտուալ ինտերֆեյսի անվանումը նեթդեվ- ֆայլ:
Address — IP հասցե, որը կհատկացվի վիրտուալ ինտերֆեյսին: Պետք է լինի նույն ցանցում, ինչ հասցեն, որը դուք նշել եք tun2socks ծառայության մեջ
Gateway — «երթուղիչի» IP հասցեն tun2socks, որը դուք նշել եք systemd ծառայությունը ստեղծելիս:
Այսպիսով, ինտերֆեյսը tun2socks հասցե ունի 172.16.1.2, և ծառայությունը tun2socks - 172.16.1.1, այսինքն՝ դա վիրտուալ ինտերֆեյսի բոլոր կապերի դարպասն է։
Ստեղծեք վիրտուալ մուտքի կետ
Տեղադրեք կախվածությունները.
apt install util-linux procps hostapd iw haveged
Ներբեռնեք պահեստը ստեղծել_ապ ձեր մեքենային.
git clone https://github.com/oblique/create_ap
Գնացեք ձեր մեքենայի պահեստային թղթապանակ.
cd create_ap
Տեղադրեք համակարգում.
make install
Ձեր համակարգում կհայտնվի կոնֆիգուրացիա /etc/create_ap.conf. Ահա խմբագրման հիմնական տարբերակները.
GATEWAY=10.0.0.1 — ավելի լավ է այն դարձնել առանձին վերապահված ենթացանց:
NO_DNS=1 - անջատել, քանի որ այս պարամետրը կկառավարվի systemd-networked վիրտուալ ինտերֆեյսի կողմից:
NO_DNSMASQ=1 - անջատեք այն նույն պատճառով:
WIFI_IFACE=wlp6s0 — նոութբուքի անլար ինտերֆեյս:
INTERNET_IFACE=tun2socks - tun2socks-ի համար ստեղծված վիրտուալ ինտերֆեյս:
SSID=hostapd — վիրտուալ մուտքի կետի անվանումը:
PASSPHRASE=12345678 - գաղտնաբառը:
Մի մոռացեք միացնել ծառայությունը.
systemctl enable create_ap
Միացնել DHCP սերվերը systemd-networkd-ում
Ծառայություն create_ap սկզբնավորում է վիրտուալ ինտերֆեյսը համակարգում ap0. Տեսականորեն, dnsmasq-ը կախված է այս ինտերֆեյսից, բայց ինչու՞ տեղադրել լրացուցիչ ծառայություններ, եթե systemd-networkd-ը պարունակում է ներկառուցված DHCP սերվեր:
Այն միացնելու համար մենք կսահմանենք ցանցի կարգավորումները վիրտուալ կետի համար: Դա անելու համար ստեղծեք ֆայլ /etc/systemd/network/25-ap0.network հետևյալ բովանդակությամբ.
Create_ap ծառայության կողմից վիրտուալ ինտերֆեյսի սկզբնավորումից հետո ap0, systemd-networkd-ը ավտոմատ կերպով դրան կհատկացնի IP հասցե և միացնի DHCP սերվերը:
Ստրերներ EmitDNS=yes и DNS=10.0.0.1 փոխանցել DNS սերվերի կարգավորումները մուտքի կետին միացված սարքերին:
Եթե դուք չեք նախատեսում օգտագործել տեղական DNS սերվեր, իմ դեպքում դա dnscrypt-proxy է, կարող եք տեղադրել DNS=10.0.0.1 в DNS=192.168.1.1Որտեղ 192.168.1.1 — Ձեր սկզբնական դարպասի հասցեն: Այնուհետև ձեր հոսթի և տեղական ցանցի համար DNS հարցումները կմնան չգաղտնագրված մատակարարի սերվերների միջոցով:
EmitNTP=yes и NTP=192.168.1.1 փոխանցել NTP կարգավորումները:
Նույնը վերաբերում է գծին NTP=10.0.0.1.
Տեղադրեք և կարգավորեք NTP սերվերը
Տեղադրեք համակարգում.
apt install ntp
Խմբագրել կազմաձևը /etc/ntp.conf. Մեկնաբանեք ստանդարտ լողավազանների հասցեները.
Ավելացնել հանրային սերվերի հասցեներ, օրինակ՝ Google Public NTP.
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Ապահովեք մուտք դեպի սերվեր ձեր ցանցի հաճախորդներին.
restrict 10.0.0.0 mask 255.255.255.0
Միացնել հեռարձակումը ձեր ցանցում՝
broadcast 10.0.0.255
Վերջապես, ավելացրեք այս սերվերների հասցեները ստատիկ երթուղային աղյուսակում: Դա անելու համար բացեք անլար ինտերֆեյսի կազմաձևման ֆայլը /etc/systemd/network/25-wlp6s0.network և ավելացրեք հատվածի վերջում Route.
Վերագործարկելուց կամ վերագործարկվելուց հետո դուք կունենաք երկրորդ մուտքի կետ, որը տանող և LAN սարքերը ուղղորդում է դեպի SOCKS:
Ահա թե ինչ տեսք ունի ելքը ip a սովորական նոութբուք.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tun2socks: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 500
link/none
inet 172.16.1.2/24 brd 172.16.1.255 scope global tun2socks
valid_lft forever preferred_lft forever
inet6 fe80::122b:260:6590:1b0e/64 scope link stable-privacy
valid_lft forever preferred_lft forever
3: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether e8:11:32:0e:01:50 brd ff:ff:ff:ff:ff:ff
4: wlp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 4c:ed:de:cb:cf:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global wlp6s0
valid_lft forever preferred_lft forever
inet6 fe80::4eed:deff:fecb:cf85/64 scope link
valid_lft forever preferred_lft forever
5: ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 4c:ed:de:cb:cf:86 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 brd 10.0.0.255 scope global ap0
valid_lft forever preferred_lft forever
inet6 fe80::4eed:deff:fecb:cf86/64 scope link
valid_lft forever preferred_lft forever
Որպես հետեւանք,
Մատակարարը տեսնում է միայն գաղտնագրված կապը ձեր SOCKS սերվերի հետ, ինչը նշանակում է, որ նրանք ոչինչ չեն տեսնում:
Եվ այնուամենայնիվ, այն տեսնում է ձեր NTP հարցումները, դա կանխելու համար հեռացրեք ստատիկ երթուղիները NTP սերվերների համար: Այնուամենայնիվ, վստահ չէ, որ ձեր SOCKS սերվերը թույլ է տալիս NTP արձանագրությունը:
Հենակը նկատվել է Debain 10-ում
Եթե փորձեք վերագործարկել ցանցային ծառայությունը վահանակից, այն կձախողվի սխալմամբ: Դա պայմանավորված է նրանով, որ դրա մի մասը վիրտուալ ինտերֆեյսի տեսքով կապված է tun2socks ծառայության հետ, ինչը նշանակում է, որ այն օգտագործվում է։ Ցանցային ծառայությունը վերագործարկելու համար նախ պետք է դադարեցնել tun2socks ծառայությունը։ Բայց, կարծում եմ, եթե մինչև վերջ կարդաք, սա ձեզ համար հաստատ խնդիր չէ։