ProHoster > Blog > Uprava > Gradnja usmerjevalnika v SOCKS na prenosniku z Debian 10
Gradnja usmerjevalnika v SOCKS na prenosniku z Debian 10
Celo leto (ali dve) sem odlašal z objavo tega članka iz glavnega razloga - objavil sem že dva članka, v katerih sem opisal postopek ustvarjanja usmerjevalnika v SOCKS iz čisto običajnega prenosnika z Debianom.
Ker pa je bila stabilna različica Debiana posodobljena na Buster, me je zasebno kontaktiralo zadostno število ljudi in prosilo za pomoč pri nastavitvi, kar pomeni, da moji prejšnji članki niso izčrpni. No, sam sem ugibal, da metode, opisane v njih, ne razkrivajo v celoti vseh zapletenosti nastavitve Linuxa za usmerjanje v SOCKS. Poleg tega so napisani za Debian Stretch, po nadgradnji na Buster pa sem v sistemu systemd init opazil majhne spremembe v interakciji storitev. In v samih člankih nisem uporabil systemd-networkd, čeprav je najbolj primeren za kompleksne omrežne konfiguracije.
Poleg zgornjih sprememb so bile moji konfiguraciji dodane naslednje storitve: hostapd - storitev virtualizacije dostopnih točk, ntp za sinhronizacijo časa odjemalcev lokalnega omrežja, dnscrypt-proxy za šifriranje povezav prek DNS in onemogočanje oglaševanja na odjemalcih lokalnega omrežja ter, kot sem že omenil, systemd-networkd za konfiguriranje omrežnih vmesnikov.
Tukaj je preprost blokovni diagram notranje strukture takšnega usmerjevalnika.
Naj vas torej spomnim, kakšni so cilji te serije člankov:
Usmerite vse povezave OS na SOCKS, pa tudi povezave iz vseh naprav v istem omrežju kot prenosnik.
Prenosnik v mojem primeru bi moral ostati popolnoma mobilen. Se pravi, dati možnost uporabe namiznega okolja in ne biti vezan na fizično lokacijo.
Zadnja točka pomeni povezavo in usmerjanje samo prek vgrajenega brezžičnega vmesnika.
No, in seveda, izdelava celovitega vodnika, kot tudi analiza ustreznih tehnologij po mojem skromnem vedenju.
Kaj bo obravnavano v tem članku:
git — prenesite repozitorije projektov tun2sockspotreben za usmerjanje prometa TCP na SOCKS in create_ap — skript za avtomatizirano nastavitev virtualne dostopne točke z uporabo hostapd.
tun2socks — zgradite in namestite storitev systemd v sistem.
systemd-networkd — konfigurirajte brezžične in virtualne vmesnike, statične usmerjevalne tabele in preusmeritev paketov.
create_ap — namestite storitev systemd v sistem, konfigurirajte in zaženite virtualno dostopno točko.
Izbirni koraki:
ntp — namestite in konfigurirajte strežnik za sinhronizacijo časa na odjemalcih virtualne dostopne točke.
dnscrypt-proxy — šifrirali bomo zahteve DNS, jih usmerili na SOCKS in onemogočili oglaševalske domene za lokalno omrežje.
Čemu je vse to namenjeno?
To je eden od načinov za zaščito TCP povezav v lokalnem omrežju. Glavna prednost je, da so vse povezave vzpostavljene v SOCKS, razen če je zanje zgrajena statična pot prek prvotnega prehoda. To pomeni, da vam ni treba določiti nastavitev strežnika SOCKS za posamezne programe ali odjemalce v lokalnem omrežju - vsi gredo privzeto na SOCKS, saj je to privzeti prehod, dokler ne določimo drugače.
V bistvu dodamo drugi šifrirni usmerjevalnik kot prenosni računalnik pred prvotnim usmerjevalnikom in uporabimo internetno povezavo prvotnega usmerjevalnika za že šifrirane zahteve SOCKS prenosnika, ki nato usmerja in šifrira zahteve odjemalcev LAN.
Z vidika ponudnika smo stalno povezani na en strežnik s šifriranim prometom.
V skladu s tem so vse naprave povezane z navidezno dostopno točko prenosnika.
Namestite tun2socks v sistem
Dokler ima vaša naprava internet, prenesite vsa potrebna orodja.
apt update
apt install git make cmake
Prenesite paket badvpn
git clone https://github.com/ambrop72/badvpn
V vašem sistemu se bo pojavila mapa badvpn. Ustvarite ločeno mapo za gradnjo
NetworkManager-wait-online je storitev, ki čaka na delujočo omrežno povezavo, preden systemd nadaljuje z zagonom drugih storitev, ki so odvisne od prisotnosti omrežja. Onemogočimo ga, ko preklopimo na analog systemd-networkd.
Omogočimo ga takoj:
systemctl enable systemd-networkd-wait-online
Nastavite brezžični omrežni vmesnik
Ustvarite konfiguracijsko datoteko systemd-networkd za brezžični omrežni vmesnik /etc/systemd/network/25-wlp6s0.network.
Ime je ime vašega brezžičnega vmesnika. Prepoznajte ga z ukazom ip a.
IPForward - direktiva, ki omogoča preusmeritev paketov na omrežnem vmesniku.
Naslov: je odgovoren za dodelitev naslova IP brezžičnemu vmesniku. Določimo ga statično, ker z enakovredno direktivo DHCP=yes, systemd-networkd ustvari privzeti prehod v sistemu. Potem bo ves promet šel skozi izvirni prehod in ne skozi prihodnji virtualni vmesnik v drugem podomrežju. Trenutni privzeti prehod lahko preverite z ukazom ip r
Ustvarite statično pot za oddaljeni strežnik SOCKS
Če vaš strežnik SOCKS ni lokalni, temveč oddaljeni, potem morate zanj ustvariti statično pot. Če želite to narediti, dodajte razdelek Route do konca konfiguracijske datoteke brezžičnega vmesnika, ki ste jo ustvarili z naslednjo vsebino:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway — to je privzeti prehod ali naslov vaše prvotne dostopne točke.
Destination — Naslov strežnika SOCKS.
Konfigurirajte wpa_supplicant za systemd-networkd
systemd-networkd uporablja wpa_supplicant za povezavo z varno dostopno točko. Ko poskuša "dvigniti" brezžični vmesnik, systemd-networkd zažene storitev wpa_supplicant@имяČe Prvo ime je ime brezžičnega vmesnika. Če do te točke še niste uporabljali systemd-networkd, potem ta storitev verjetno manjka v vašem sistemu.
Ustvarite ga torej z ukazom:
systemctl enable wpa_supplicant@wlp6s0
uporabil sem wlp6s0 kot ime njegovega brezžičnega vmesnika. Vaše ime je lahko drugačno. Prepoznate ga lahko z ukazom ip l.
Zdaj ustvarjena storitev wpa_supplicant@wlp6s0 se bo zagnal, ko je brezžični vmesnik "dvignjen", vendar pa bo poiskal nastavitve SSID in gesla dostopne točke v datoteki /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Zato ga morate ustvariti s pomočjo pripomočka wpa_passphrase.
če SSID je ime vaše dostopne točke, geslo je geslo in wlp6s0 — ime vašega brezžičnega vmesnika.
Inicializirajte virtualni vmesnik za tun2socks
Ustvarite datoteko za inicializacijo novega virtualnega vmesnika v sistemu/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
Ime je ime, ki ga bo systemd-networkd dodelil bodočemu virtualnemu vmesniku, ko bo inicializiran.
Otrok je vrsta virtualnega vmesnika. Iz imena storitve tun2socks lahko sklepate, da uporablja vmesnik, kot je tun.
netdev je razširitev datotek, ki systemd-networkd Uporablja se za inicializacijo navideznih omrežnih vmesnikov. Naslov in druge omrežne nastavitve za te vmesnike so določene v .mreža-datoteke.
Ustvarite datoteko, kot je ta /etc/systemd/network/25-tun2socks.network z naslednjo vsebino:
Name — ime virtualnega vmesnika, ki ste ga določili netdev-mapa.
Address — Naslov IP, ki bo dodeljen virtualnemu vmesniku. Mora biti v istem omrežju kot naslov, ki ste ga navedli v storitvi tun2socks
Gateway — naslov IP "usmerjevalnika" tun2socks, ki ste ga določili pri ustvarjanju storitve systemd.
Torej vmesnik tun2socks ima naslov 172.16.1.2, in storitev tun2socks - 172.16.1.1, torej je prehod za vse povezave iz virtualnega vmesnika.
Nastavite virtualno dostopno točko
Namestitvene odvisnosti:
apt install util-linux procps hostapd iw haveged
Prenesite repozitorij create_ap v vaš avto:
git clone https://github.com/oblique/create_ap
Pojdite v mapo skladišča na vašem računalniku:
cd create_ap
Namestite v sistem:
make install
Na vašem sistemu se bo pojavila konfiguracija /etc/create_ap.conf. Tu so glavne možnosti urejanja:
GATEWAY=10.0.0.1 — bolje je, da je ločeno rezervirano podomrežje.
NO_DNS=1 - onemogoči, ker bo ta parameter upravljal virtualni vmesnik systemd-networkd.
NO_DNSMASQ=1 - iz istega razloga ga izklopite.
WIFI_IFACE=wlp6s0 — brezžični vmesnik za prenosni računalnik.
INTERNET_IFACE=tun2socks - virtualni vmesnik, ustvarjen za tun2socks.
SSID=hostapd — ime virtualne dostopne točke.
PASSPHRASE=12345678 - geslo.
Ne pozabite omogočiti storitve:
systemctl enable create_ap
Omogoči strežnik DHCP v systemd-networkd
Storitev create_ap inicializira virtualni vmesnik v sistemu Ap0. Teoretično dnsmasq visi na tem vmesniku, a zakaj nameščati dodatne storitve, če systemd-networkd vsebuje vgrajen strežnik DHCP?
Da bi jo omogočili, bomo določili omrežne nastavitve za virtualno točko. Če želite to narediti, ustvarite datoteko /etc/systemd/network/25-ap0.network z naslednjo vsebino:
Ko storitev create_ap inicializira virtualni vmesnik ap0, mu bo systemd-networkd samodejno dodelil naslov IP in omogočil strežnik DHCP.
Strune EmitDNS=yes и DNS=10.0.0.1 prenos nastavitev strežnika DNS napravam, povezanim z dostopno točko.
Če ne nameravate uporabljati lokalnega strežnika DNS - v mojem primeru je to dnscrypt-proxy - lahko namestite DNS=10.0.0.1 в DNS=192.168.1.1Če 192.168.1.1 — naslov vašega prvotnega prehoda. Nato bodo zahteve DNS za vašega gostitelja in lokalno omrežje šle nešifrirane prek strežnikov ponudnika.
EmitNTP=yes и NTP=192.168.1.1 prenos nastavitev NTP.
Dodajte naslove javnih strežnikov, na primer Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Odjemalcem v vašem omrežju omogočite dostop do strežnika:
restrict 10.0.0.0 mask 255.255.255.0
Omogoči oddajanje v vaše omrežje:
broadcast 10.0.0.255
Nazadnje dodajte naslove teh strežnikov v statično usmerjevalno tabelo. Če želite to narediti, odprite konfiguracijsko datoteko brezžičnega vmesnika /etc/systemd/network/25-wlp6s0.network in dodajte na konec razdelka Route.
S pomočjo pripomočka lahko najdete naslove svojih strežnikov NTP host kot sledi:
host time1.google.com
Namestite dnscrypt-proxy, odstranite oglase in skrijte promet DNS pred svojim ponudnikom
apt install dnscrypt-proxy
Če želite služiti poizvedbam DNS gostitelja in lokalnega omrežja, uredite vtičnico /lib/systemd/system/dnscrypt-proxy.socket. Spremenite naslednje vrstice:
Po ponovnem zagonu ali ponovnem zagonu boste imeli drugo dostopno točko, ki usmerja gostitelja in naprave LAN na SOCKS.
Tako izgleda rezultat ip a običajni prenosnik:
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
Kot rezultat,
Ponudnik vidi samo šifrirano povezavo z vašim strežnikom SOCKS, kar pomeni, da ne vidi ničesar.
In kljub temu vidi vaše zahteve NTP, da to preprečite, odstranite statične poti za strežnike NTP. Vendar pa ni gotovo, da vaš strežnik SOCKS dovoljuje protokol NTP.
Crutch opažen na Debainu 10
Če poskusite znova zagnati omrežno storitev s konzole, ne bo uspelo z napako. To je posledica dejstva, da je njen del v obliki virtualnega vmesnika vezan na storitev tun2socks, kar pomeni, da se uporablja. Če želite znova zagnati omrežno storitev, morate najprej ustaviti storitev tun2socks. Ampak, mislim, da če preberete do konca, to zagotovo ni problem za vas!