Egy egész éven (vagy kettőn) át halogattam ennek a cikknek a közzétételét azzal az egy fő okkal, hogy már két cikket publikáltam, amelyekben leírtam, hogyan lehet egy egyszerű laptopot Debianból SOCKS routerré alakítani.
Azóta azonban a Debian stabil verziója frissült Buster verzióra, és elegendő számú ember keresett meg privát üzenetben, hogy segítsenek a konfigurálásban, tehát a korábbi cikkeim nem teljesek. Nos, én is sejtettem, hogy azok a módszerek, amiket ott ismertettem, nem fedik le teljesen a Linux konfigurálásának minden finomságát a SOCKS routerekhez. Ráadásul ezek a Debian Stretchre készültek, és a Busterre való frissítés után a systemd indítási rendszerben észleltem néhány apró változást a szolgáltatások interakciójában. Sőt, a cikkekben nem használtam a systemd-networkd-t, holott az a legjobban illeszkedik a bonyolult hálózati konfigurációkhoz.
A fent említett változásokon kívül a konfigurációmba olyan szolgáltatások kerültek, mint hostapd — egy hozzáférési pont virtualizáló szolgáltatás, ntp amely a helyi hálózat ügyfeleinek időszinkronizálásáért felelős, dnscrypt-proxy az ügyfél helyi hálózaton történő DNS titkosításáért és a hirdetések blokkolásáért, valamint ahogy korábban említettem, systemd-networkd a hálózati interfészek konfigurálásáért.
Íme egy egyszerű blokkvázlat az ilyen típusú router belső felépítéséről.

Tehát, emlékeztetni szeretnélek, hogy milyen célokat követ ez a cikkciklus:
- Minden operációs rendszer és a laptop hálózatában lévő összes eszköz SOCKS átjárón keresztül történő irányítása.
- A laptopnak teljesen mobilnak kell maradnia. Ami azt jelenti, hogy lehetővé kell tennie a grafikus felület használatát, és nem szabad állandóan egy fizikai helyhez kötődni.
- Az utolsó pont megköveteli, hogy csak a beépített vezeték nélküli interfészen keresztül történjen a csatlakozás és az irányítás.
- Természetesen, egy átfogó útmutató létrehozása és a megfelelő technológiák részletes bemutatása a szerény ismereteim keretein belül.
Ami a cikk témáját illeti:
- git — letölteni a projektek repóit tun2socks, amely a TCP forgalom SOCKS-ba történő irányításához szükséges, és create_ap — egy szkript a virtuális hozzáférési pont konfigurálásának automatizálásához hostapd.
- tun2socks — létrehozzuk és telepítjük a systemd szolgáltatást a rendszerbe.
- systemd-networkd — konfiguráljuk a vezeték nélküli és a virtuális interfészeket, a statikus irányítási táblázatokat és a csomagok továbbítását.
- create_ap — telepítjük a systemd szolgáltatást a rendszerbe, beállítjuk és elindítjuk a virtuális hozzáférési pontot.
Opcionális lépések:
- ntp — telepítjük és beállítjuk a szervert az időszinkronizáláshoz a virtuális hozzáférési pont ügyfelein.
- dnscrypt-proxy — titkosítjuk a DNS kéréseket, SOCKS-ba irányítjuk őket, és letiltjuk a hirdetési domaineket a helyi hálózatra.
Miért mindez?
Ez az egyik módja a TCP-kapcsolatok védelmének megszervezésének a helyi hálózaton. A legfőbb előnye, hogy az összes kapcsolat SOCKS-on keresztül megy, ha nem építünk statikus útvonalat az eredeti átjárón keresztül. Ez azt jelenti, hogy nem kell beállítanunk a SOCKS-szerver beállításait sem a különböző programoknak, sem a helyi hálózat ügyfeleinek - mindezek automatikusan a SOCKS-ba mennek, mivel az az alapértelmezett átjáró, amíg mi el nem mondjuk az ellenkezőjét.
Lényegében egy második titkosító routert adunk hozzá, mint egy laptop az eredeti router előtt, és az eredeti router internetkapcsolatát használjuk a laptop által titkosított SOCKS-kérésekhez, amely viszont irányítja és titkosítja a helyi hálózat ügyfeleinek kéréseit.
A szolgáltató szempontjából folyamatosan csatlakozva vagyunk egy szerverhez titkosított forgalommal.
Így minden eszköz csatlakozik a laptop virtuális hozzáférési pontjához.
Telepítse a tun2socks-ot a rendszerbe.
Amíg az Ön gépén van internet, töltse le az összes szükséges eszközt.
apt updateapt install git make cmakeTöltse le a badvpn csomagot.
git clone https://github.com/ambrop72/badvpn
A rendszerében létrejön egy mappa badvpn. Hozzon létre egy külön mappát a buildhez.
mkdir badvpn-build
Lépjen be ebbe a mappába.
cd badvpn-build
Építse meg. tun2socks
cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1
Telepítse a rendszert.
make install
- A parameter
-DBUILD_NOTHING_BY_DEFAULT=1letiltja a badvpn repository összes összetevőjének építését. - —
DBUILD_TUN2SOCKS=1belefoglalja a tun2socks összetevőt az építésbe. tun2socks. make install— a bináris fájl tun2socks a rendszerében lesz elérhető a következő címen./usr/local/bin/badvpn-tun2socks.
Telepítse a tun2socks szolgáltatást a systemd-be.
Hozzon létre egy fájlt. /etc/systemd/system/tun2socks.service a következő tartalommal:
[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— megadja a virtuális interfész nevét, amelyet a systemd-networkd segítségével inicializálunk.--netif-ipaddr— a tun2socks "router" hálózati címe, amelyhez a virtuális interfész csatlakozik. Jobb, ha külön. .--socks-server-addr— elfogadja a socket-et (cím:porta SOCKS szerverhez).
Ha a SOCKS szerver hitelesítést igényel, akkor megadhatja a paramétereket --felhasználónév és --jelszó.
Ezután regisztrálja a szolgáltatást
systemctl daemon-reloadÉs engedélyezzük
systemctl enable tun2socksMielőtt elindítanánk a szolgáltatást, biztosítsuk számára a virtuális hálózati interfészt.
Lépjünk át az systemd-networkd-ra
Engedélyezzük systemd-networkd:
systemctl enable systemd-networkdKikapcsoljuk a jelenlegi hálózati szolgáltatásokat.
systemctl disable networking NetworkManager NetworkManager-wait-online- NetworkManager-wait-online — ez egy olyan szolgáltatás, amely vár a működő hálózati kapcsolat létrejöttére, mielőtt a systemd folytatná más, a hálózati kapcsolattól függő szolgáltatások indítását. Kikapcsoljuk, mivel az systemd-networkd-ra 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.
[Match]
Név=wlp6s0
[Network]
Cím=192.168.1.2/24
IPForward=yes
- Név — ez a vezeték nélküli interfész neve. Az azonosításához használja a parancsot
ip a. - IPForward — ez egy irányelv, amely engedélyezi a csomagok átirányítását a hálózati interfészen.
- Cím felelős a vezeték nélküli interfész IP-címének hozzárendeléséért. Statikusan adjuk meg, mert ha az equivalens irányelvet használjuk
DHCP=yes, az systemd-networkd alapértelmezett átjárót hoz létre a rendszerben. Akkor az összes forgalom az eredeti átjárón keresztül megy, nem a jövőbeli virtuális interfészen egy másik alhálózaton. A jelenlegi alapértelmezett átjárót a következő parancs segítségével ellenőrizhetiip r
Hozzon létre egy statikus útvonalat a távoli SOCKS szerverhez
Ha a SOCKS szerver nem helyi, hanem távoli, statikus útvonalat kell létrehoznia. Ehhez adja hozzá a szekciót Route a létrehozott vezeték nélküli interfész konfigurációs fájlja végéhez a következő tartalommal:
[Route]
Gateway=192.168.1.1
Cél=0.0.0.0
Gateway— ez az alapértelmezett átjáró vagy az Ön eredeti hozzáférési pontjának címe.Cél— a SOCKS szerver címe.
Állítsa be a wpa_supplicant-ot az systemd-networkd-hoz
Az systemd-networkd a wpa_supplicant-ot használja a védett hozzáférési ponthoz való csatlakozáshoz. Amikor megpróbálja "aktiválni" a vezeték nélküli interfészt, az systemd-networkd elindítja a szolgáltatást wpa_supplicant@név, ahol név — ez a vezeték nélküli interfész neve. Ha eddig nem használta az systemd-networkd-t, valószínűleg ez a szolgáltatás nem található a rendszerében.
Ezért hozza létre a következő parancs segítségével:
systemctl enable wpa_supplicant@wlp6s0Használom wlp6s0 mint a vezeték nélküli interfész neve. Ez a név eltérhet. Ezt a parancsot használva tudhatja meg: ip l.
Most a létrehozott szolgáltatás wpa_supplicant@wlp6s0 akkor fog elindulni, amikor a vezeték nélküli interfész "fel van emelve", azonban ez keresni fogja az SSID és a hozzáférési pont jelszavának beállításait a fájlban. /etc/wpa_supplicant/wpa_supplicant-wlp6s0Ezért létre kell hoznia azt a wpa_passphrase.
Az alábbi parancsot hajtsa végre:
wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.confahol SSID ez az Ön hozzáférési pontjának neve, a jelszó pedig azt jelenti, hogy wlp6s0 ez a vezeték nélküli interfész neve.
Inicializálja a virtuális interfészt a tun2socks számára
Hozzon létre egy fájlt az új virtuális interfész inicializálásához a rendszerben:/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
- Név ez az a név, amelyet a systemd-networkd a jövőbeli virtuális interfész inicializálásakor fog adni.
- Kind ez a virtuális interfész típusa. Az tun2socks szolgáltatás nevéből kitalálhatja, hogy ez egy
tun. - netdev ezek a fájl kiterjesztések, amelyeket
systemd-networkda virtuális hálózati interfészek inicializálásához használ. .hálózatA cím és a többi hálózati beállítás ezekhez a interfészekhez
-fájlokban vannak megadva. /etc/systemd/network/25-tun2socks.network a következő tartalommal:
Hozzon létre egy ilyen fájlt:
Név[Match] Name=tun2socks[Network] Address=172.16.1.2/24 Gateway=172.16.1.1 netdevez a virtuális interfész neve, amelyet Ön megadottCím-fájlban.GatewayEz az IP cím, amelyet a virtuális interfésznek fog biztosítani. Ugyanabban a hálózatban kell lennie, mint a cím, amelyet a tun2socks szolgáltatásnál megadott. tun2socksEz az IP cím a "router"-ének,
amit a systemd szolgáltatás létrehozásakor adott meg. tun2socks Így a interfésznek van egy címe, 172.16.1.2és a szolgáltatás, tun2socks — 172.16.1.1ezáltal egy átjáró a virtuális interfész összes kapcsolatának.
Állítsa be a virtuális hozzáférési pontot
Telepítse a szükséges csomagokat:
apt install util-linux procps hostapd iw havegedTöltse le a repót create_ap a gépére:
git clone https://github.com/oblique/create_apLépjen be a repó mappájába a gépén:
cd create_apTelepítse a rendszert:
make installAz Ön rendszerében megjelenik a konfiguráció: /etc/create_ap.conf. Ezek a legfontosabb lehetőségek, amelyeket módosíthat:
GATEWAY=10.0.0.1jobban, ha külön, fenntartott alhálózatot hoz létre.NO_DNS=1kapcsolja ki, mivel ezt a funkciót a virtuális interfész systemd-networkd fogja kezelni.NO_DNSMASQ=1kapcsolja ki ugyanezen okból.WIFI_IFACE=wlp6s0ez a laptop vezeték nélküli interfésze.INTERNET_IFACE=tun2socksez a tun2socks számára létrehozott virtuális interfész.SSID=hostapdez a virtuális hozzáférési pont neve.PASSPHRASE=12345678ez a jelszó.
Ne felejtsd el bekapcsolni a szolgáltatást:
systemctl enable create_apKapcsolja be a DHCP szervert a systemd-networkd-ben
Szolgáltatás create_ap kezdeményezi a virtuális interfész létrehozását a rendszerben ap0. Elvileg ezen az interfészen fut a dnsmasq, de miért telepítenénk felesleges szolgáltatásokat, ha a systemd-networkd beépített DHCP-szerverrel rendelkezik?
A bekapcsolásához határozzuk meg a hálózati beállításokat a virtuális ponthoz. Ehhez hozzon létre egy fájlt /etc/systemd/network/25-ap0.network a következő tartalommal:
[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
Miután a create_ap szolgáltatás inicializálta a virtuális interfészt ap0, a systemd-networkd automatikusan IP-címet rendel hozzá és bekapcsolja a DHCP szervert.
A sorok EmitDNS=yes és DNS=10.0.0.1 a DNS szerver beállításait továbbítják a csatlakoztatott eszközöknek a hozzáférési ponthoz.
Ha nem tervezed a helyi DNS szerver használatát — az én esetemben ez a dnscrypt-proxy — akkor beállíthatod DNS=10.0.0.1 be. DNS=192.168.1.1, ahol 192.168.1.1 — a te eredeti átjáród címe. Ekkor a DNS-lekérdezéseid és a helyi hálózat forgalma a szolgáltató szervereihez fognak érkezni titkosítatlan formában.
EmitNTP=yes és NTP=192.168.1.1 azonosítókat továbbítanak az NTP-hez.
Ugyanez vonatkozik a sorra NTP=10.0.0.1.
Telepítse és konfigurálja az NTP szervert
Telepítse a rendszert:
apt install ntp
Szerkeszd a konfigurációt /etc/ntp.conf. Kommentezze ki a standard poolok címeit:
#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
Adja hozzá a nyilvános szerverek címeit, például a Google Public NTP-t:
server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst
Biztosítson hozzáférést a szerverhez az Ön hálózatából:
restrict 10.0.0.0 mask 255.255.255.0
Kapcsolja be a terjesztést a hálózatába:
broadcast 10.0.0.255
Végül adja hozzá ezen szerverek címeit a statikus útvonal táblázathoz. Ehhez nyissa meg a vezeték nélküli interfész konfigurációs fájlját /etc/systemd/network/25-wlp6s0.network és adja hozzá az alábbi szakasz végéhez 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.12Megtudhatja az NTP szerverek címeit a következő segédprogram használatával: host így:
host time1.google.comTelepítse a dnscrypt-proxy-t, távolítsa el a reklámokat és rejtse el a DNS forgalmat a szolgáltatótól
apt install dnscrypt-proxyAhhoz, hogy a gazdagép és a helyi hálózat DNS lekérdezéseit kiszolgálja, szerkeszd a socketet /lib/systemd/system/dnscrypt-proxy.socket. Módosítsd a következő sorokat:
ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53Indítsa újra systemd:
systemctl daemon-reloadSzerkeszd a konfigurációt /etc/dnscrypt-proxy/dnscrypt-proxy.toml:
server_names = ['adguard-dns']
A dnscrypt-proxy kapcsolatainak tun2socks-n keresztüli irányításához adja hozzá alul:
force_tcp = true
Szerkeszd a konfigurációt /etc/resolv.conf, amely tájékoztatja a DNS szervert a gazdagépről.
nameserver 127.0.0.1
nameserver 192.168.1.1Az első sor tartalmazza a dnscrypt-proxy használatát, a második az eredeti átjárót használja, ha a dnscrypt-proxy szerver nem áll rendelkezésre.
Kész!
Indítsa újra, vagy állítsa le a működő hálózati szolgáltatásokat:
systemctl stop networking NetworkManager NetworkManager-wait-onlineÉs indítsa újra az összes szükségeset:
systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntpAz újraindítás vagy újraindítás után második hozzáférési pontja lesz, amely a hostot és a helyi hálózati eszközöket SOCKS-ba irányítja.
Körülbelül így néz ki a kimenet ip a egy átlagos laptopból:
1: lo: 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: 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: 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: 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: 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égül
- A szolgáltató csak az Ön SOCKS szerveréhez irányuló titkosított kapcsolatot látja, így semmit sem lát.
- Még mindig látja az Ön NTP kéréseit, ezért ennek megakadályozására törölje az NTP szerverek statikus útvonalait. Azonban nem biztos, hogy a SOCKS szervere engedélyezi az NTP protokollt.
Kis megoldás, amelyet a Debain 10-en észleltek
Ha megpróbálja újraindítani a hálózati szolgáltatást a konzolon, az hibával leáll. Ennek oka, hogy a virtuális interfész egy része a tun2socks szolgáltatáshoz van kötve, így az használatban van. A hálózati szolgáltatás újraindításához először le kell állítani a tun2socks szolgáltatást. De azt hiszem, ha idáig eljutott, ez biztosan nem lesz önnek probléma!
Hivatkozások
Forrás: habr.com
