Celý rok (nebo dva) odkládám zveřejnění tohoto článku z hlavního důvodu - publikoval jsem již dva články, ve kterých jsem popisoval postup tvorby routeru v SOCKS z nejobyčejnějšího notebooku s Debianem.
Od doby, kdy byla stabilní verze Debianu upgradována na Buster, se na mě obrátilo velké množství lidí s žádostí o pomoc s nastavením, což znamená, že mé předchozí články nejsou vyčerpávající. Sám jsem uhádl, že metody v nich nastíněné plně neodhalují všechny jemnosti nastavení Linuxu pro směrování do SOCKS. Navíc jsou napsané pro Debian Stretch a po upgradu na Buster jsem v systemd init systému zaznamenal mírnou změnu v interakci služeb. A v samotných článcích jsem nepoužil systemd-networkd, i když se nejlépe hodí pro složité konfigurace sítě.
Kromě výše uvedených změn byly do mé konfigurace přidány následující služby: hostapd - služba pro virtualizaci přístupového bodu, ntp synchronizovat čas klientů místní sítě, dnscrypt-proxy k šifrování připojení přes protokol DNS a zakázání reklamy na klientech místní sítě a také, jak jsem již zmínil, systemd-networkd pro konfiguraci síťových rozhraní.
Zde je nejjednodušší blokové schéma vnitřní struktury takového routeru.
Připomenu vám tedy, jaké cíle sleduje série těchto článků:
Nasměrujte všechna připojení OS na SOCKS a také připojení všech zařízení, která jsou ve stejné síti jako notebook.
Notebook v mém případě musí zůstat plně mobilní. Tedy dát možnost používat desktopové prostředí a nebýt vázán na fyzické umístění.
Poslední bod předpokládá připojení a směrování pouze přes vestavěné bezdrátové rozhraní.
No, samozřejmě, vytvoření vyčerpávajícího průvodce, stejně jako rozbor příslušných technologií podle mého nejlepšího skromného vědomí.
O čem bude tento článek:
git - stáhnout repozitáře projektů tun2sockspotřebné pro směrování provozu TCP do SOCKS a create_ap - skript pro automatizaci konfigurace virtuálního přístupového bodu pomocí hostapd.
tun2socks - vytvořit a nainstalovat službu systemd v systému.
systemd-networkd - konfigurovat bezdrátová a virtuální rozhraní, statické směrovací tabulky a předávání paketů.
create_ap - nainstalovat službu systemd do systému, nakonfigurovat a spustit virtuální přístupový bod.
Volitelné kroky:
ntp - nainstalovat a nakonfigurovat server pro synchronizaci času na klientech virtuálních přístupových bodů.
dnscrypt-proxy - šifrovat požadavky DNS, směrovat je do SOCKS a zakázat reklamní domény pro místní síť.
K čemu to všechno je?
Toto je jeden ze způsobů, jak organizovat ochranu TCP spojení v lokální síti. Hlavní výhodou je, že všechna připojení jdou do SOCKS, pokud pro ně není vybudována statická trasa přes původní bránu. To znamená, že nemusíte zapisovat nastavení serveru SOCKS ani jednotlivým programům, ani klientům v místní síti – všechna jdou standardně na SOCKS, protože se jedná o výchozí bránu, dokud neurčíme jinak.
V podstatě přidáme druhý šifrovací router jako notebook před původní router a použijeme internetové připojení původního routeru pro již SOCKS šifrované požadavky notebooku, které zase směrují a šifrují požadavky od LAN klientů.
Z pohledu poskytovatele jsme neustále připojeni ke stejnému serveru s šifrovaným provozem.
V souladu s tím jsou všechna zařízení připojena k virtuálnímu přístupovému bodu notebooku.
Nainstalujte tun2socks do vašeho systému
Dokud máte na svém počítači internet, stáhněte si všechny potřebné nástroje.
apt update
apt install git make cmake
Stáhněte si balíček badvpn
git clone https://github.com/ambrop72/badvpn
Ve vašem systému se objeví složka badvpn. Vytvořte samostatnou složku sestavení
NetworkManager-čekej-online je služba, která čeká na funkční připojení k síti, než systemd bude pokračovat ve spouštění dalších služeb závislých na síti. Při přechodu na analogový systém systemd ho deaktivujeme.
Pojďme to hned povolit:
systemctl enable systemd-networkd-wait-online
Nastavte rozhraní bezdrátové sítě
Vytvořte konfigurační soubor systemd-networkd pro rozhraní bezdrátové sítě /etc/systemd/network/25-wlp6s0.network.
Příjmení je název vašeho bezdrátového rozhraní. Identifikujte jej pomocí příkazu ip a.
Přesměrování IP je direktiva, která umožňuje předávání paketů na síťovém rozhraní.
Adresa je zodpovědný za přidělení IP adresy bezdrátovému rozhraní. Specifikujeme ji staticky, protože ekvivalentní direktivou DHCP=yes, systemd-networkd vytvoří v systému výchozí bránu. Veškerý provoz pak půjde přes původní bránu a ne přes budoucí virtuální rozhraní v jiné podsíti. Aktuální výchozí bránu můžete zkontrolovat pomocí příkazu ip r
Vytvořte statickou trasu pro vzdálený server SOCKS
Pokud váš server SOCKS není lokální, ale vzdálený, musíte pro něj vytvořit statickou trasu. Chcete-li to provést, přidejte sekci Route na konec vámi vytvořeného konfiguračního souboru bezdrátového rozhraní s následujícím obsahem:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway je výchozí brána nebo adresa vašeho původního přístupového bodu.
Destination - Adresa serveru SOCKS.
Nastavte wpa_supplicant pro systemd-networkd
systemd-networkd používá wpa_supplicant k připojení k zabezpečenému přístupovému bodu. Při pokusu o „vyvolání“ bezdrátového rozhraní systemd-networkd spustí službu wpa_supplicant@имяKde Název je název bezdrátového rozhraní. Pokud jste až do tohoto bodu nepoužívali systemd-networkd, pak pravděpodobně tuto službu ve vašem systému nemáte.
Vytvořte jej tedy příkazem:
systemctl enable wpa_supplicant@wlp6s0
Použil jsem wlp6s0 jako název vašeho bezdrátového rozhraní. Vaše jméno může být jiné. Poznáte to pomocí příkazu ip l.
Nyní vytvořená služba wpa_supplicant@wlp6s0 se spustí, když je bezdrátové rozhraní „up“, ale naopak bude v souboru hledat nastavení SSID a hesla přístupového bodu /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Proto jej musíte vytvořit pomocí nástroje wpa_passphrase.
kde SSID je název vašeho přístupového bodu, heslo je heslo a wlp6s0 je název vašeho bezdrátového rozhraní.
Inicializujte virtuální rozhraní pro tun2socks
Vytvořte soubor pro inicializaci nového virtuálního rozhraní v systému/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
Příjmení je název, který systemd-networkd přiřadí budoucímu virtuálnímu rozhraní při jeho inicializaci.
Druh je typ virtuálního rozhraní. Podle názvu služby tun2socks můžete hádat, že používá rozhraní jako tun.
netdev je přípona souborů, které systemd-networkd používá k inicializaci virtuálních síťových rozhraní. Adresa a další síťová nastavení pro tato rozhraní jsou specifikována v .síť-soubory.
Vytvořte takový soubor /etc/systemd/network/25-tun2socks.network s následujícím obsahem:
Name je název virtuálního rozhraní, které jste zadali v netdev-soubor.
Address — IP adresa, která bude přidělena virtuálnímu rozhraní. Musí být ve stejné síti jako adresa, kterou jste uvedli ve službě tun2socks
Gateway - IP adresa "routeru" tun2socks, který jste zadali při vytváření služby systemd.
Takže rozhraní tun2socks má adresu 172.16.1.2a službu tun2socks - 172.16.1.1, to znamená, že je to brána pro všechna připojení z virtuálního rozhraní.
Nastavte virtuální hotspot
Instalovat závislosti:
apt install util-linux procps hostapd iw haveged
Stáhněte si úložiště create_ap do vašeho auta:
git clone https://github.com/oblique/create_ap
Přejděte do složky úložiště na vašem počítači:
cd create_ap
Nainstalujte do systému:
make install
config se objeví ve vašem systému /etc/create_ap.conf. Zde jsou hlavní možnosti úprav:
GATEWAY=10.0.0.1 - je lepší vytvořit samostatnou vyhrazenou podsíť.
NO_DNS=1 - vypnout, protože tento parametr bude řízen virtuálním rozhraním systemd-networkd.
NO_DNSMASQ=1 - vypněte ze stejného důvodu.
WIFI_IFACE=wlp6s0 — bezdrátové rozhraní notebooku.
INTERNET_IFACE=tun2socks je virtuální rozhraní vytvořené pro tun2socks.
SSID=hostapd — název virtuálního přístupového bodu.
PASSPHRASE=12345678 - Heslo.
Nezapomeňte povolit službu:
systemctl enable create_ap
Povolte server DHCP v systemd-networkd
Služby create_ap inicializuje virtuální rozhraní v systému ap0. Teoreticky dnsmasq „visí“ na tomto rozhraní, ale proč instalovat další služby, pokud systemd-networkd obsahuje vestavěný server DHCP?
Chcete-li to povolit, definujme nastavení sítě pro virtuální bod. Chcete-li to provést, vytvořte soubor /etc/systemd/network/25-ap0.network s následujícím obsahem:
Poté, co služba create_ap inicializuje virtuální rozhraní ap0, systemd-networkd mu automaticky přiřadí IP adresu a povolí DHCP server.
Struny EmitDNS=yes и DNS=10.0.0.1 přenést nastavení serveru DNS do zařízení připojených k přístupovému bodu.
Pokud neplánujete používat místní DNS server - v mém případě je to dnscrypt-proxy - můžete nainstalovat DNS=10.0.0.1 в DNS=192.168.1.1Kde 192.168.1.1 je adresa vaší původní brány. Dotazy DNS vašeho hostitele a místní sítě pak projdou nešifrované přes servery poskytovatele.
EmitNTP=yes и NTP=192.168.1.1 předat nastavení NTP.
Totéž platí pro linku NTP=10.0.0.1.
Nainstalujte a nakonfigurujte server NTP
Nainstalujte do systému:
apt install ntp
Upravte konfiguraci /etc/ntp.conf. Do komentáře uveďte adresy standardních bazénů:
Přidejte adresy veřejných serverů, jako je Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Udělte přístup k serveru klientům z vaší sítě:
restrict 10.0.0.0 mask 255.255.255.0
Povolte vysílání ve vaší síti:
broadcast 10.0.0.255
Nakonec přidejte adresy těchto serverů do statické směrovací tabulky. Chcete-li to provést, otevřete konfigurační soubor bezdrátového rozhraní /etc/systemd/network/25-wlp6s0.network a přidejte na konec oddílu Route.
Po restartu nebo restartu budete mít druhý přístupový bod, který směruje hostitele a zařízení LAN do SOCKS.
Výstup vypadá takto ip a běžný notebook:
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
V důsledku toho,
Poskytovatel vidí pouze šifrované připojení k vašemu serveru SOCKS, což znamená, že nevidí nic.
Stále vidí vaše požadavky NTP, abyste tomu zabránili, odstraňte statické trasy pro servery NTP. Není však jisté, že váš server SOCKS umožňuje protokol NTP.
Berlička viděná na Debain 10
Pokud se pokusíte restartovat síťovou službu z konzoly, dojde k jejímu selhání s chybou. Je to dáno tím, že jeho část v podobě virtuálního rozhraní je vázána na službu tun2socks, tedy je využívána. Chcete-li restartovat síťovou službu, musíte nejprve zastavit službu tun2socks. Ale myslím, že pokud jste dočetli až do konce, rozhodně to pro vás není problém!