Kuunda kipanga njia katika SOCKS kwenye kompyuta ndogo ukitumia Debian 10

Kwa mwaka mzima (au mbili) niliacha kuchapisha nakala hii kwa sababu kuu - tayari nilikuwa nimechapisha nakala mbili ambazo nilielezea mchakato wa kuunda kipanga njia kwenye SOCKS kutoka kwa kompyuta ndogo ya kawaida na Debian.

Walakini, tangu wakati huo toleo thabiti la Debian limesasishwa hadi Buster, idadi ya kutosha ya watu wamewasiliana nami kwa faragha wakiuliza usaidizi wa usanidi, ambayo inamaanisha kuwa nakala zangu za hapo awali hazijakamilika. Kweli, mimi mwenyewe nilikisia kuwa njia zilizoainishwa ndani yao hazionyeshi kikamilifu ugumu wote wa kusanidi Linux kwa kuelekeza kwenye SOCKS. Kwa kuongeza, zimeandikwa kwa Debian Stretch, na baada ya kuboresha hadi Buster, katika mfumo wa init systemd, niliona mabadiliko madogo katika mwingiliano wa huduma. Na katika nakala zenyewe, sikutumia systemd-networkd, ingawa inafaa zaidi kwa usanidi tata wa mtandao.

Mbali na mabadiliko yaliyo hapo juu, huduma zifuatazo ziliongezwa kwenye usanidi wangu: mwenyeji - huduma kwa uboreshaji wa mahali pa ufikiaji, ntp kusawazisha wakati wa wateja wa mtandao wa ndani, dnscrypt-proksi kusimba miunganisho kupitia DNS na kuzima utangazaji kwa wateja wa mtandao wa ndani, na pia, kama nilivyotaja hapo awali, systemd-networkd kwa ajili ya kusanidi miingiliano ya mtandao.

Hapa kuna mchoro rahisi wa kuzuia wa muundo wa ndani wa router hiyo.

Kuunda kipanga njia katika SOCKS kwenye kompyuta ndogo ukitumia Debian 10

Kwa hivyo, wacha nikukumbushe malengo ya mfululizo huu wa makala ni:

  1. Elekeza miunganisho yote ya OS kwa SOCKS, pamoja na miunganisho kutoka kwa vifaa vyote kwenye mtandao sawa na kompyuta ndogo.
  2. Laptop katika kesi yangu inapaswa kubaki simu kabisa. Hiyo ni, kutoa fursa ya kutumia mazingira ya desktop na si kufungwa kwa eneo la kimwili.
  3. Hatua ya mwisho inamaanisha uunganisho na uelekezaji tu kupitia kiolesura kilichojengwa ndani kisichotumia waya.
  4. Naam, na bila shaka, kuundwa kwa mwongozo wa kina, pamoja na uchambuzi wa teknolojia husika kwa ujuzi wangu wa kawaida.

Nini kitajadiliwa katika makala hii:

  1. git - pakua hazina za mradi tun2 soksiinahitajika kuelekeza trafiki ya TCP kwa SOCKS, na kuunda_ap β€” hati ya kubinafsisha usanidi wa mahali pa ufikiaji pepe kwa kutumia mwenyeji.
  2. tun2 soksi - jenga na usakinishe huduma ya mfumo kwenye mfumo.
  3. systemd-networkd - sanidi violesura visivyotumia waya na pepe, jedwali za uelekezaji tuli na uelekezaji upya wa pakiti.
  4. kuunda_ap β€” sakinisha huduma ya mfumo kwenye mfumo, sanidi na uzindue mahali pa ufikiaji pepe.

Hatua za hiari:

  • ntp β€” Sakinisha na usanidi seva ili kusawazisha muda kwenye wateja wa uhakika wa kufikia.
  • dnscrypt-proksi β€” tutasimba kwa njia fiche maombi ya DNS, tutayaelekeza kwa SOCKS na kuzima vikoa vya utangazaji vya mtandao wa ndani.

Haya yote ni ya nini?

Hii ni mojawapo ya njia za kupata miunganisho ya TCP kwenye mtandao wa ndani. Faida kuu ni kwamba viunganisho vyote vinafanywa kwa SOCKS, isipokuwa njia ya tuli imejengwa kwao kupitia lango la awali. Hii ina maana kwamba huhitaji kubainisha mipangilio ya seva ya SOCKS kwa programu binafsi au wateja kwenye mtandao wa ndani - wote huenda kwa SOCKS kwa chaguo-msingi, kwa kuwa ni lango chaguo-msingi hadi tutakapoonyesha vinginevyo.

Kimsingi tunaongeza kipanga njia cha pili cha usimbaji fiche kama kompyuta ya mkononi mbele ya kipanga njia asilia na kutumia muunganisho wa Intaneti wa kipanga njia asilia kwa maombi ya SOCKS ambayo tayari yamesimbwa kwa kompyuta ya mkononi, ambayo nayo huelekeza na kusimba maombi kutoka kwa wateja wa LAN.

Kwa mtazamo wa mtoa huduma, tunaunganishwa kila mara kwa seva moja na trafiki iliyosimbwa.

Ipasavyo, vifaa vyote vimeunganishwa kwenye eneo la ufikiaji la kompyuta ndogo.

Sakinisha tun2socks kwenye mfumo

Maadamu mashine yako ina mtandao, pakua zana zote muhimu.

apt update
apt install git make cmake

Pakua kifurushi cha badvpn

git clone https://github.com/ambrop72/badvpn

Folda itaonekana kwenye mfumo wako badvpn. Unda folda tofauti kwa muundo

mkdir badvpn-build

Nenda kwake

cd badvpn-build

Kusanya tun2socks

cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1

Sakinisha kwenye mfumo

make install
  • Parameter -DBUILD_NOTHING_BY_DEFAULT=1 inalemaza uundaji wa vifaa vyote vya hazina ya badvpn.
  • -DBUILD_TUN2SOCKS=1 inajumuisha sehemu katika mkutano tun2 soksi.
  • make install - itasakinisha tun2socks binary kwenye mfumo wako /usr/local/bin/badvpn-tun2socks.

Sakinisha huduma ya tun2socks kwenye systemd

Unda faili /etc/systemd/system/tun2socks.service na maudhui yafuatayo:

[Unit]
Description=SOCKS TCP Relay

[Service]
ExecStart=/usr/local/bin/badvpn-tun2socks --tundev tun2socks --netif-ipaddr 172.16.1.1 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:9050

[Install]
WantedBy=multi-user.target
  • --tundev - inachukua jina la kiolesura pepe ambacho tunaanzisha na systemd-networkd.
  • --netif-ipaddr - anwani ya mtandao ya "ruta" ya tun2socks ambayo kiolesura cha mtandaoni kimeunganishwa. Ni bora kuifanya iwe tofauti subnet iliyohifadhiwa.
  • --socks-server-addr - inakubali soketi (адрСс:ΠΏΠΎΡ€Ρ‚ seva za SOCKS).

Ikiwa seva yako ya SOCKS inahitaji uthibitishaji, unaweza kutaja vigezo --username ΠΈ --password.

Ifuatayo, sajili huduma

systemctl daemon-reload

Na kuiwasha

systemctl enable tun2socks

Kabla ya kuanza huduma, tutaipatia kiolesura cha mtandao wa kawaida.

Inabadilisha hadi systemd-networkd

Sisi ni pamoja na systemd-networkd:

systemctl enable systemd-networkd

Zima huduma za mtandao za sasa.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-subiri-online ni huduma inayosubiri muunganisho wa mtandao unaofanya kazi kabla ya systemd kuendelea kuanzisha huduma zingine zinazotegemea uwepo wa mtandao. Tunaizima tunapobadilisha hadi analogi ya mfumo wa mtandao.

Wacha tuwashe mara moja:

systemctl enable systemd-networkd-wait-online

Sanidi kiolesura cha mtandao kisichotumia waya

Unda faili ya usanidi ya mfumo wa mtandao kwa kiolesura cha mtandao kisichotumia waya /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • jina ni jina la kiolesura chako kisichotumia waya. Tambua kwa amri ip a.
  • IPForward - maagizo ambayo huwezesha uelekezaji wa pakiti kwenye kiolesura cha mtandao.
  • Anwani ina jukumu la kugawa anwani ya IP kwa kiolesura kisichotumia waya. Tunaibainisha kitakwimu kwa sababu kwa maelekezo sawa DHCP=yes, systemd-networkd huunda lango chaguo-msingi kwenye mfumo. Kisha trafiki yote itapitia lango la asili, na sio kupitia kiolesura cha siku zijazo kwenye subnet tofauti. Unaweza kuangalia lango chaguo-msingi la sasa na amri ip r

Unda njia tuli ya seva ya mbali ya SOCKS

Ikiwa seva yako ya SOCKS sio ya ndani, lakini ya mbali, basi unahitaji kuunda njia tuli kwa hiyo. Ili kufanya hivyo, ongeza sehemu Route hadi mwisho wa faili ya usanidi wa kiolesura kisichotumia waya ulichounda na maudhui yafuatayo:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway β€” hili ndilo lango chaguo-msingi au anwani ya eneo lako la awali la ufikiaji.
  • Destination - Anwani ya seva ya SOCKS.

Sanidi wpa_supplicant kwa systemd-networkd

systemd-networkd hutumia wpa_supplicant kuunganisha kwenye eneo salama la ufikiaji. Unapojaribu "kuinua" kiolesura kisichotumia waya, systemd-networkd huanza huduma wpa_supplicant@имяAmbapo jina ni jina la kiolesura kisichotumia waya. Ikiwa haujatumia systemd-networkd kabla ya hatua hii, basi huduma hii labda haipo kwenye mfumo wako.

Kwa hivyo unda kwa amri:

systemctl enable wpa_supplicant@wlp6s0

nilitumia wlp6s0 kama jina la kiolesura chake kisichotumia waya. Jina lako linaweza kuwa tofauti. Unaweza kuitambua kwa amri ip l.

Sasa huduma iliyoundwa wpa_supplicant@wlp6s0 itazinduliwa wakati interface isiyo na waya "imeinuliwa", hata hivyo, itatafuta mipangilio ya SSID na nenosiri la mahali pa kufikia kwenye faili. /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Kwa hiyo, unahitaji kuunda kwa kutumia matumizi wpa_passphrase.

Ili kufanya hivyo, endesha amri:

wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.conf

ambapo SSID ni jina la sehemu yako ya kufikia, nenosiri ni nenosiri, na wlp6s0 - jina la kiolesura chako kisichotumia waya.

Anzisha kiolesura pepe cha tun2socks

Unda faili ili kuanzisha kiolesura kipya katika mfumo/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • jina ni jina ambalo systemd-networkd itaweka kiolesura cha siku zijazo kitakapoanzishwa.
  • Mtoto ni aina ya kiolesura halisi. Kutoka kwa jina la huduma ya tun2socks, unaweza kukisia kuwa inatumia kiolesura kama tun.
  • netdev ni ugani wa faili ambazo systemd-networkd Hutumia kuanzisha miingiliano ya mtandao pepe. Anwani na mipangilio mingine ya mtandao ya violesura hivi imebainishwa ndani kazi za mtandao-mafaili.

Unda faili kama hii /etc/systemd/network/25-tun2socks.network na maudhui yafuatayo:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name - jina la kiolesura cha mtandaoni ambacho umebainisha netdev-faili.
  • Address - Anwani ya IP ambayo itatolewa kwa kiolesura cha mtandaoni. Lazima iwe kwenye mtandao sawa na anwani uliyobainisha katika huduma ya tun2socks
  • Gateway - Anwani ya IP ya "ruta" tun2 soksi, ambayo ulitaja wakati wa kuunda huduma ya mfumo.

Hivyo interface tun2 soksi ina anwani 172.16.1.2, na huduma tun2 soksi - 172.16.1.1, yaani, ni lango la miunganisho yote kutoka kwa kiolesura cha kawaida.

Sanidi kituo cha kufikia mtandaoni

Sakinisha tegemezi:

apt install util-linux procps hostapd iw haveged

Pakua hazina tengeneza_ap kwa gari lako:

git clone https://github.com/oblique/create_ap

Nenda kwenye folda ya kumbukumbu kwenye mashine yako:

cd create_ap

Sakinisha kwenye mfumo:

make install

Usanidi utaonekana kwenye mfumo wako /etc/create_ap.conf. Hapa kuna chaguzi kuu za uhariri:

  • GATEWAY=10.0.0.1 - ni bora kuifanya subnet tofauti iliyohifadhiwa.
  • NO_DNS=1 -lemaza, kwa kuwa parameter hii itasimamiwa na interfaced-networkd virtual.
  • NO_DNSMASQ=1 - kuzima kwa sababu sawa.
  • WIFI_IFACE=wlp6s0 - kiolesura cha wireless cha laptop.
  • INTERNET_IFACE=tun2socks - kiolesura cha mtandaoni kilichoundwa kwa tun2socks.
  • SSID=hostapd - jina la kituo cha ufikiaji cha mtandaoni.
  • PASSPHRASE=12345678 - nenosiri.

Usisahau kuwezesha huduma:

systemctl enable create_ap

Washa seva ya DHCP katika systemd-networkd

Huduma create_ap huanzisha kiolesura cha mtandaoni katika mfumo ap0. Kinadharia, dnsmasq hutegemea kiolesura hiki, lakini kwa nini usakinishe huduma za ziada ikiwa systemd-networkd ina seva iliyojengewa ndani ya DHCP?

Ili kuiwezesha, tutafafanua mipangilio ya mtandao kwa uhakika wa kawaida. Ili kufanya hivyo, tengeneza faili /etc/systemd/network/25-ap0.network na maudhui yafuatayo:

[Match]
Name=ap0

[Network]
Address=10.0.0.1/24
DHCPServer=yes

[DHCPServer]
EmitDNS=yes
DNS=10.0.0.1
EmitNTP=yes
NTP=10.0.0.1

Baada ya huduma ya create_ap kuanzisha kiolesura pepe ap0, systemd-networkd itaikabidhi kiotomatiki anwani ya IP na kuwezesha seva ya DHCP.

Kamba EmitDNS=yes ΠΈ DNS=10.0.0.1 sambaza mipangilio ya seva ya DNS kwa vifaa vilivyounganishwa kwenye kituo cha ufikiaji.

Ikiwa huna mpango wa kutumia seva ya DNS ya ndani - kwa upande wangu ni dnscrypt-proxy - unaweza kusakinisha DNS=10.0.0.1 Π² DNS=192.168.1.1Ambapo 192.168.1.1 - anwani ya lango lako asili. Kisha maombi ya DNS kwa mwenyeji wako na mtandao wa ndani yataondolewa kwa njia fiche kupitia seva za mtoaji.

EmitNTP=yes ΠΈ NTP=192.168.1.1 kuhamisha mipangilio ya NTP.

Vile vile huenda kwa mstari NTP=10.0.0.1.

Sakinisha na usanidi seva ya NTP

Sakinisha kwenye mfumo:

apt install ntp

Hariri usanidi /etc/ntp.conf. Toa maoni juu ya anwani za mabwawa ya kawaida:

#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst

Ongeza anwani za seva za umma, kwa mfano Google Public NTP:

server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust

Toa ufikiaji wa seva kwa wateja kwenye mtandao wako:

restrict 10.0.0.0 mask 255.255.255.0

Washa utangazaji kwa mtandao wako:

broadcast 10.0.0.255

Hatimaye, ongeza anwani za seva hizi kwenye jedwali tuli la uelekezaji. Ili kufanya hivyo, fungua faili ya usanidi wa interface isiyo na waya /etc/systemd/network/25-wlp6s0.network na kuongeza hadi mwisho wa sehemu Route.

[Route]
Gateway=192.168.1.1
Destination=216.239.35.0

[Route]
Gateway=192.168.1.1
Destination=216.239.35.4

[Route]
Gateway=192.168.1.1
Destination=216.239.35.8

[Route]
Gateway=192.168.1.1
Destination=216.239.35.12

Unaweza kujua anwani za seva zako za NTP kwa kutumia matumizi host kama ifuatavyo:

host time1.google.com

Sakinisha dnscrypt-proxy, ondoa matangazo na ufiche trafiki ya DNS kutoka kwa mtoa huduma wako

apt install dnscrypt-proxy

Ili kutoa hoja za DNS za mtandao wa ndani na mwenyeji, hariri tundu /lib/systemd/system/dnscrypt-proxy.socket. Badilisha mistari ifuatayo:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Anzisha tena systemd:

systemctl daemon-reload

Hariri usanidi /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Ili kuelekeza miunganisho ya proksi ya dnscrypt kupitia tun2socks, ongeza hapa chini:

force_tcp = true

Hariri usanidi /etc/resolv.conf, ambayo huambia seva ya DNS kwa mwenyeji.

nameserver 127.0.0.1
nameserver 192.168.1.1

Mstari wa kwanza huwezesha matumizi ya dnscrypt-proxy, mstari wa pili hutumia lango asili ikiwa seva ya proksi ya dnscrypt haipatikani.

Imefanyika!

Anzisha tena au acha kuendesha huduma za mtandao:

systemctl stop networking NetworkManager NetworkManager-wait-online

Na anza tena yote muhimu:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Baada ya kuwasha upya au kuwasha upya, utakuwa na sehemu ya pili ya kufikia ambayo inaelekeza seva pangishi na vifaa vya LAN kwenye SOCKS.

Hivi ndivyo matokeo yanavyoonekana ip a Laptop ya kawaida:

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

Mwishowe

  1. Mtoa huduma huona tu muunganisho uliosimbwa kwa seva yako ya SOCKS, ambayo inamaanisha haoni chochote.
  2. Na bado inaona maombi yako ya NTP, ili kuzuia hili, ondoa njia tuli za seva za NTP. Hata hivyo, hakuna uhakika kwamba seva yako ya SOCKS inaruhusu itifaki ya NTP.

Crutch ilionekana kwenye Debain 10

Ikiwa unajaribu kuanzisha upya huduma ya mtandao kutoka kwa console, itashindwa na kosa. Hii ni kutokana na ukweli kwamba sehemu yake katika mfumo wa interface ya kawaida imefungwa kwa huduma ya tun2socks, ambayo ina maana inatumiwa. Ili kuanzisha upya huduma ya mtandao, lazima kwanza usimamishe huduma ya tun2socks. Lakini, nadhani, ukisoma hadi mwisho, hakika hii sio shida kwako!

marejeo

  1. Uelekezaji tuli kwenye Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks Β· ambrop72/badvpn Wiki Β· GitHub
  4. oblique/create_ap: Hati hii inaunda NATed au Bridged WiFi Access Point.
  5. dnscrypt-proxy 2 β€” Proksi inayoweza kunyumbulika ya DNS, yenye usaidizi wa itifaki za DNS zilizosimbwa.

Chanzo: mapenzi.com