Router készítése a SOCKS-ban egy laptopon Debian 10-zel
Egy egész évig (vagy két) halogattam ennek a cikknek a közzétételét a fő ok miatt - már két cikket publikáltam, amelyekben leírtam egy útválasztó létrehozásának folyamatát a SOCKS-ban egy nagyon hétköznapi laptopról Debiannal.
Azóta azonban a Debian stabil verziója frissült Busterre, elég sokan kerestek meg privátban és kértek segítséget a beállításhoz, ami azt jelenti, hogy korábbi cikkeim nem teljesek. Nos, én magam is sejtettem, hogy a bennük felvázolt módszerek nem fedik fel teljesen a Linux SOCKS-ban történő útválasztásra való beállításának minden bonyolultságát. Ráadásul Debian Stretch-re írták, és a Busterre való frissítés után a systemd init rendszerben apró változásokat észleltem a szolgáltatások interakciójában. És magukban a cikkekben nem használtam a systemd-networkd-t, bár ez a legalkalmasabb összetett hálózati konfigurációkhoz.
A fenti változtatásokon kívül a következő szolgáltatásokkal bővült a konfigurációm: hostapd - hozzáférési pont virtualizációs szolgáltatás, ntp a helyi hálózati kliensek idejének szinkronizálása, dnscrypt-proxy a DNS-en keresztüli kapcsolatok titkosítására és a helyi hálózati klienseken a hirdetések letiltására, valamint, ahogy korábban említettem, systemd-networkd hálózati interfészek konfigurálásához.
Itt van egy egyszerű blokkdiagram egy ilyen útválasztó belső felépítéséről.
Tehát hadd emlékeztesselek, mi a célja ennek a cikksorozatnak:
Az összes operációs rendszer-kapcsolatot irányítsa a SOCKS-ba, valamint a laptoppal azonos hálózaton lévő összes eszköz kapcsolatait.
Az én esetemben a laptopnak teljesen mobilnak kell maradnia. Azaz, hogy lehetőséget adjunk az asztali környezet használatára, és ne legyen fizikai helyhez kötve.
Az utolsó pont csak a beépített vezeték nélküli interfészen keresztüli csatlakozást és útválasztást jelenti.
No, és persze egy átfogó útmutató elkészítése, valamint szerény tudásom szerint a vonatkozó technológiák elemzése.
Miről lesz szó ebben a cikkben:
csoportos it — projekt tárolók letöltése tun2socksszükséges a TCP-forgalom SOCKS-ba irányításához, és create_ap — egy parancsfájl, amely automatizálja a virtuális hozzáférési pont beállítását hostapd.
tun2socks — felépíteni és telepíteni a systemd szolgáltatást a rendszerre.
systemd-networkd — vezeték nélküli és virtuális interfészek, statikus útválasztási táblák és csomagátirányítás konfigurálása.
create_ap — telepítse a rendszerszolgáltatást a rendszerre, konfigurálja és indítsa el a virtuális hozzáférési pontot.
Választható lépések:
ntp — kiszolgáló telepítése és konfigurálása az idő szinkronizálásához a virtuális hozzáférési pont klienseken.
dnscrypt-proxy — titkosítjuk a DNS-kéréseket, a SOCKS-ba irányítjuk, és letiltjuk a hirdetési tartományokat a helyi hálózaton.
Miért ez az egész?
Ez az egyik módja a TCP-kapcsolatok biztonságossá tételének a helyi hálózaton. A fő előny, hogy minden kapcsolat SOCKS-ban történik, kivéve, ha statikus útvonalat építenek ki számukra az eredeti átjárón keresztül. Ez azt jelenti, hogy nem kell megadnia a SOCKS kiszolgáló beállításait sem az egyes programokhoz, sem a helyi hálózaton lévő kliensekhez – ezek alapértelmezés szerint mind a SOCKS-ba kerülnek, mivel ez az alapértelmezett átjáró, amíg másképp nem jelezzük.
Lényegében egy második titkosító útválasztót adunk hozzá laptopként az eredeti útválasztó elé, és az eredeti útválasztó internetkapcsolatát használjuk a laptop már titkosított SOCKS kéréseihez, amely viszont továbbítja és titkosítja a LAN-kliensektől érkező kéréseket.
A szolgáltató szempontjából folyamatosan egy szerverhez kapcsolódunk titkosított forgalommal.
Ennek megfelelően minden eszköz csatlakozik a laptop virtuális hozzáférési pontjához.
Telepítse a tun2socks-t a rendszerre
Amíg a gépén van internet, töltsön le minden szükséges eszközt.
apt update
apt install git make cmake
Töltse le a badvpn csomagot
git clone https://github.com/ambrop72/badvpn
Megjelenik egy mappa a rendszeren badvpn. Hozzon létre egy külön mappát a build számára
NetworkManager-wait-online egy olyan szolgáltatás, amely működő hálózati kapcsolatra vár, mielőtt a systemd folytatja a hálózat jelenlététől függő egyéb szolgáltatások elindítását. Letiltjuk, amikor a systemd-networkd analógra váltunk.
Azonnal engedélyezzük:
systemctl enable systemd-networkd-wait-online
Állítsa be a vezeték nélküli hálózati interfészt
Hozzon létre egy systemd-networkd konfigurációs fájlt a vezeték nélküli hálózati interfészhez /etc/systemd/network/25-wlp6s0.network.
Név a vezeték nélküli interfész neve. Azonosítsa a paranccsal ip a.
IPForward - egy direktíva, amely lehetővé teszi a csomagok átirányítását a hálózati interfészen.
Székhely felelős az IP-cím hozzárendeléséért a vezeték nélküli interfészhez. Statikusan adjuk meg, mert az ekvivalens direktívával DHCP=yes, a systemd-networkd alapértelmezett átjárót hoz létre a rendszeren. Ekkor az összes forgalom az eredeti átjárón keresztül fog haladni, nem pedig egy másik alhálózat jövőbeli virtuális felületén. Az aktuális alapértelmezett átjárót a paranccsal ellenőrizheti ip r
Hozzon létre egy statikus útvonalat a távoli SOCKS szerver számára
Ha a SOCKS szervere nem helyi, hanem távoli, akkor létre kell hoznia egy statikus útvonalat. Ehhez adjon hozzá egy szakaszt Route a következő tartalommal létrehozott vezeték nélküli interfész konfigurációs fájl végére:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway — ez az alapértelmezett átjáró vagy az eredeti hozzáférési pont címe.
Destination — SOCKS szerver címe.
A wpa_supplicant konfigurálása a systemd-networkd számára
A systemd-networkd a wpa_supplicant használatával csatlakozik egy biztonságos hozzáférési ponthoz. Amikor megpróbálja "emelni" a vezeték nélküli interfészt, a systemd-networkd elindítja a szolgáltatást wpa_supplicant@имяAhol név a vezeték nélküli interfész neve. Ha eddig nem használta a systemd-networkd programot, akkor valószínűleg ez a szolgáltatás hiányzik a rendszerről.
Tehát hozza létre a következő paranccsal:
systemctl enable wpa_supplicant@wlp6s0
használtam wlp6s0 vezeték nélküli interfészének neveként. Eltérhet a neved. paranccsal ismerheti fel ip l.
Most a létrehozott szolgáltatás wpa_supplicant@wlp6s0 a vezeték nélküli interfész „emelésekor” indul el, viszont megkeresi a fájlban a hozzáférési pont SSID és jelszó beállításait /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Ezért a segédprogrammal kell létrehoznia wpa_passphrase.
ahol SSID a hozzáférési pont neve, a jelszó a jelszó, és wlp6s0 — a vezeték nélküli interfész neve.
Inicializálja a tun2socks virtuális felületét
Hozzon létre egy fájlt egy új virtuális felület inicializálásához a rendszerben/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
Név az a név, amelyet a systemd-networkd a jövőbeli virtuális felülethez rendel az inicializáláskor.
Kedves egyfajta virtuális interfész. A tun2socks szolgáltatás nevéből sejthető, hogy olyan felületet használ, mint pl tun.
netdev a fájlok kiterjesztése systemd-networkd A virtuális hálózati interfészek inicializálására szolgál. Ezen interfészek címét és egyéb hálózati beállításait a következő tartalmazza: .hálózat- fájlok.
Hozzon létre egy ilyen fájlt /etc/systemd/network/25-tun2socks.network a következő tartalommal:
Name - a virtuális felület neve, amelyet megadott netdev- fájl.
Address — A virtuális interfészhez hozzárendelendő IP-cím. Ugyanazon a hálózaton kell lennie, mint a tun2socks szolgáltatásban megadott címnek
Gateway - a „router” IP-címe tun2socks, amelyet a systemd szolgáltatás létrehozásakor adott meg.
Tehát a felület tun2socks van címe 172.16.1.2, és a szolgáltatás tun2socks - 172.16.1.1, azaz a virtuális felületről érkező összes kapcsolat átjárója.
Állítson be egy virtuális hozzáférési pontot
Függőségek telepítése:
apt install util-linux procps hostapd iw haveged
Töltse le az adattárat create_ap az autódhoz:
git clone https://github.com/oblique/create_ap
Lépjen a lerakat mappába a gépén:
cd create_ap
Telepítés a rendszerre:
make install
A rendszeren megjelenik egy konfiguráció /etc/create_ap.conf. Íme a fő szerkesztési lehetőségek:
GATEWAY=10.0.0.1 - jobb, ha külön fenntartott alhálózatot készít.
NO_DNS=1 - disable, mivel ezt a paramétert a systemd-networkd virtuális interfész fogja kezelni.
NO_DNSMASQ=1 - kapcsolja ki ugyanezért.
WIFI_IFACE=wlp6s0 — laptop vezeték nélküli interfész.
INTERNET_IFACE=tun2socks - a tun2socks számára létrehozott virtuális felület.
SSID=hostapd — a virtuális hozzáférési pont neve.
PASSPHRASE=12345678 - Jelszó.
Ne felejtse el engedélyezni a szolgáltatást:
systemctl enable create_ap
DHCP-kiszolgáló engedélyezése a systemd-networkd-ben
iroda create_ap inicializál egy virtuális interfészt a rendszerben ap0. Elméletileg a dnsmasq lóg ezen a felületen, de miért telepítsünk extra szolgáltatásokat, ha a systemd-networkd tartalmaz egy beépített DHCP-kiszolgálót?
Ennek engedélyezéséhez meghatározzuk a virtuális pont hálózati beállításait. Ehhez hozzon létre egy fájlt /etc/systemd/network/25-ap0.network a következő tartalommal:
Miután a create_ap szolgáltatás inicializálja a virtuális felületet ap0, a systemd-networkd automatikusan hozzárendel egy IP-címet, és engedélyezi a DHCP-kiszolgálót.
Húrok EmitDNS=yes и DNS=10.0.0.1 DNS-kiszolgáló beállításainak továbbítása a hozzáférési ponthoz csatlakoztatott eszközökre.
Ha nem tervezi helyi DNS szerver használatát - az én esetemben ez a dnscrypt-proxy - telepítheti DNS=10.0.0.1 в DNS=192.168.1.1Ahol 192.168.1.1 — az eredeti átjáró címe. Ezután a gazdagép és a helyi hálózat DNS-kérelmei titkosítatlanok lesznek a szolgáltató szerverein keresztül.
EmitNTP=yes и NTP=192.168.1.1 NTP beállítások átvitele.
Ugyanez vonatkozik a vonalra is NTP=10.0.0.1.
Telepítse és konfigurálja az NTP-kiszolgálót
Telepítés a rendszerre:
apt install ntp
Szerkessze a konfigurációt /etc/ntp.conf. Írja megjegyzésbe a szabványos készletek címét:
Nyilvános szervercímek hozzáadása, például Google nyilvános NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Hozzáférés biztosítása a szerverhez a hálózaton lévő ügyfelek számára:
restrict 10.0.0.0 mask 255.255.255.0
Engedélyezze a sugárzást a hálózaton:
broadcast 10.0.0.255
Végül adja hozzá ezeknek a kiszolgálóknak a címeit a statikus útválasztási táblához. Ehhez nyissa meg a vezeték nélküli interfész konfigurációs fájlját /etc/systemd/network/25-wlp6s0.network és add hozzá a rész végéhez Route.
A segédprogram segítségével megtudhatja az NTP-kiszolgálók címét host az alábbiak szerint:
host time1.google.com
Telepítse a dnscrypt-proxyt, távolítsa el a hirdetéseket és rejtse el a DNS-forgalmat a szolgáltatója elől
apt install dnscrypt-proxy
A gazdagép és a helyi hálózati DNS-lekérdezések kiszolgálásához szerkessze a socketet /lib/systemd/system/dnscrypt-proxy.socket. Módosítsa a következő sorokat:
ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53
Újrakezd systemd:
systemctl daemon-reload
Szerkessze a konfigurációt /etc/dnscrypt-proxy/dnscrypt-proxy.toml:
server_names = ['adguard-dns']
A dnscrypt-proxy kapcsolatok tun2sockon keresztül történő irányításához adja hozzá az alábbiakat:
force_tcp = true
Szerkessze a konfigurációt /etc/resolv.conf, amely közli a DNS-kiszolgálót a gazdagépnek.
nameserver 127.0.0.1
nameserver 192.168.1.1
Az első sor lehetővé teszi a dnscrypt-proxy használatát, a második sor az eredeti átjárót használja arra az esetre, ha a dnscrypt-proxy szerver nem elérhető.
Kész!
Indítsa újra vagy állítsa le a hálózati szolgáltatások futtatását:
Újraindítás vagy újraindítás után lesz egy második hozzáférési pontja, amely a gazdagépet és a LAN-eszközöket a SOCKS-hoz irányítja.
Így néz ki a kimenet ip a normál laptop:
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
Ennek eredményeképpen,
A szolgáltató csak a titkosított kapcsolatot látja a SOCKS-kiszolgálóval, ami azt jelenti, hogy semmit sem lát.
Ennek ellenére látja az NTP-kéréseket, ennek megakadályozása érdekében távolítsa el az NTP-kiszolgálók statikus útvonalait. Azonban nem biztos, hogy a SOCKS szervere engedélyezi az NTP protokollt.
Mankót a Debain 10-en észlelték
Ha megpróbálja újraindítani a hálózati szolgáltatást a konzolról, az hibával meghiúsul. Ez annak köszönhető, hogy egy része virtuális interfész formájában a tun2socks szolgáltatáshoz van kötve, vagyis használatban van. A hálózati szolgáltatás újraindításához először le kell állítania a tun2socks szolgáltatást. De azt hiszem, ha a végéig elolvasod, ez biztosan nem jelent problémát neked!