Adeiladu llwybrydd yn SOCKS ar liniadur gyda Debian 10
Am flwyddyn gyfan (neu ddwy) fe wnes i ohirio cyhoeddi'r erthygl hon am y prif reswm - roeddwn eisoes wedi cyhoeddi dwy erthygl lle disgrifiais y broses o greu llwybrydd yn SOCKS o liniadur cyffredin iawn gyda Debian.
Fodd bynnag, ers hynny mae'r fersiwn sefydlog o Debian wedi'i diweddaru i Buster, mae nifer ddigonol o bobl wedi cysylltu â mi yn breifat yn gofyn am help gyda'r setup, sy'n golygu nad yw fy erthyglau blaenorol yn gynhwysfawr. Wel, fe wnes i fy hun ddyfalu nad yw'r dulliau a amlinellir ynddynt yn datgelu'n llawn yr holl gymhlethdodau o sefydlu Linux ar gyfer llwybro yn SOCKS. Yn ogystal, maent wedi'u hysgrifennu ar gyfer Debian Stretch, ac ar ôl uwchraddio i Buster, yn y system init systemd, sylwais ar newidiadau bach yn y rhyngweithio rhwng gwasanaethau. Ac yn yr erthyglau eu hunain, ni ddefnyddiais systemd-networkd, er ei fod yn fwyaf addas ar gyfer cyfluniadau rhwydwaith cymhleth.
Yn ogystal â'r newidiadau uchod, ychwanegwyd y gwasanaethau canlynol at fy nghyfluniad: hostapd - gwasanaeth ar gyfer rhithwiroli pwynt mynediad, ntp i gydamseru amser cleientiaid rhwydwaith lleol, dnscrypt-procsi i amgryptio cysylltiadau trwy DNS ac analluogi hysbysebu ar gleientiaid rhwydwaith lleol, a hefyd, fel y soniais yn gynharach, systemd-rhwydwaith ar gyfer ffurfweddu rhyngwynebau rhwydwaith.
Dyma ddiagram bloc syml o strwythur mewnol llwybrydd o'r fath.
Felly, gadewch imi eich atgoffa beth yw nodau'r gyfres hon o erthyglau:
Llwybro pob cysylltiad OS i SOCKS, yn ogystal â chysylltiadau o bob dyfais ar yr un rhwydwaith â'r gliniadur.
Dylai'r gliniadur yn fy achos i aros yn gwbl symudol. Hynny yw, i roi'r cyfle i ddefnyddio'r amgylchedd bwrdd gwaith a pheidio â bod yn gysylltiedig â lleoliad ffisegol.
Mae'r pwynt olaf yn awgrymu cysylltiad a llwybro trwy'r rhyngwyneb diwifr adeiledig yn unig.
Wel, ac wrth gwrs, creu canllaw cynhwysfawr, yn ogystal â dadansoddiad o'r technolegau perthnasol hyd eithaf fy ngwybodaeth gymedrol.
Beth fydd yn cael sylw yn yr erthygl hon:
git — lawrlwytho storfeydd prosiect tun2sanauofynnol i gyfeirio traffig TCP i SOCKS, a creu_ap — sgript i awtomeiddio gosodiad pwynt mynediad rhithwir gan ddefnyddio hostapd.
tun2sanau — adeiladu a gosod y gwasanaeth systemd ar y system.
systemd-rhwydwaith — ffurfweddu rhyngwynebau di-wifr a rhithwir, tablau llwybro statig ac ailgyfeirio pecynnau.
creu_ap — gosod y gwasanaeth systemd ar y system, ffurfweddu a lansio pwynt mynediad rhithwir.
Camau dewisol:
ntp — gosod a ffurfweddu gweinydd i gydamseru amser ar gleientiaid pwynt mynediad rhithwir.
dnscrypt-procsi — byddwn yn amgryptio ceisiadau DNS, yn eu cyfeirio at SOCKS ac yn analluogi parthau hysbysebu ar gyfer y rhwydwaith lleol.
Beth yw pwrpas hwn i gyd?
Dyma un o'r ffyrdd o sicrhau cysylltiadau TCP ar rwydwaith lleol. Y brif fantais yw bod pob cysylltiad yn cael ei wneud yn SOCKS, oni bai bod llwybr sefydlog yn cael ei adeiladu ar eu cyfer trwy'r porth gwreiddiol. Mae hyn yn golygu nad oes angen i chi nodi gosodiadau gweinydd SOCKS ar gyfer naill ai rhaglenni unigol neu gleientiaid ar y rhwydwaith lleol - maen nhw i gyd yn mynd i SOCKS yn ddiofyn, gan mai dyma'r porth rhagosodedig nes i ni nodi fel arall.
Yn y bôn rydym yn ychwanegu ail lwybrydd amgryptio fel gliniadur o flaen y llwybrydd gwreiddiol ac yn defnyddio cysylltiad Rhyngrwyd y llwybrydd gwreiddiol ar gyfer ceisiadau SOCKS y gliniadur sydd eisoes wedi'u hamgryptio, sydd yn ei dro yn llwybro ac yn amgryptio ceisiadau gan gleientiaid LAN.
O safbwynt y darparwr, rydym yn gyson yn gysylltiedig ag un gweinydd gyda thraffig wedi'i amgryptio.
Yn unol â hynny, mae pob dyfais wedi'i gysylltu â phwynt mynediad rhithwir y gliniadur.
Gosod tun2socks ar y system
Cyn belled â bod gan eich peiriant rhyngrwyd, lawrlwythwch yr holl offer angenrheidiol.
apt update
apt install git make cmake
Lawrlwythwch y pecyn badvpn
git clone https://github.com/ambrop72/badvpn
Bydd ffolder yn ymddangos ar eich system badvpn. Creu ffolder ar wahân ar gyfer yr adeilad
--tundev - yn cymryd enw'r rhyngwyneb rhithwir rydyn ni'n ei gychwyn â systemd-networkd.
--netif-ipaddr — cyfeiriad rhwydwaith y “llwybrydd” tun2socks y mae'r rhyngwyneb rhithwir wedi'i gysylltu ag ef. Mae'n well ei wneud ar wahân is-rwydwaith neilltuedig.
--socks-server-addr - yn derbyn soced (адрес:порт gweinyddwyr SOCKS).
Os oes angen dilysu eich gweinydd SOCKS, gallwch chi nodi'r paramedrau --username и --password.
Nesaf, cofrestrwch y gwasanaeth
systemctl daemon-reload
A'i droi ymlaen
systemctl enable tun2socks
Cyn dechrau'r gwasanaeth, byddwn yn darparu rhyngwyneb rhwydwaith rhithwir iddo.
NetworkManager-aros-ar-lein yn wasanaeth sy'n aros am gysylltiad rhwydwaith gweithredol cyn i systemd barhau i gychwyn gwasanaethau eraill sy'n dibynnu ar bresenoldeb rhwydwaith. Rydym yn ei analluogi wrth i ni newid i'r analog rhwydwaith systemd.
Gadewch i ni ei alluogi ar unwaith:
systemctl enable systemd-networkd-wait-online
Sefydlu'r rhyngwyneb rhwydwaith diwifr
Creu ffeil ffurfweddu systemd-rhwydwaith ar gyfer y rhyngwyneb rhwydwaith diwifr /etc/systemd/network/25-wlp6s0.network.
Enw yw enw eich rhyngwyneb diwifr. Ei adnabod gyda'r gorchymyn ip a.
IPForward - cyfarwyddeb sy'n galluogi ailgyfeirio pecynnau ar ryngwyneb rhwydwaith.
cyfeiriad yn gyfrifol am aseinio cyfeiriad IP i'r rhyngwyneb diwifr. Rydym yn ei nodi'n statig oherwydd gyda'r gyfarwyddeb gyfatebol DHCP=yes, systemd-networkd yn creu porth rhagosodedig ar y system. Yna bydd yr holl draffig yn mynd trwy'r porth gwreiddiol, ac nid trwy'r rhyngwyneb rhithwir yn y dyfodol ar is-rwydwaith gwahanol. Gallwch wirio'r porth rhagosodedig cyfredol gyda'r gorchymyn ip r
Creu llwybr statig ar gyfer y gweinydd SOCKS o bell
Os nad yw eich gweinydd SOCKS yn lleol, ond yn anghysbell, yna mae angen i chi greu llwybr sefydlog ar ei gyfer. I wneud hyn, ychwanegwch adran Route i ddiwedd y ffeil ffurfweddu rhyngwyneb diwifr a grëwyd gennych gyda'r cynnwys canlynol:
Ffurfweddu wpa_supplicant ar gyfer systemd-networkd
Mae systemd-networkd yn defnyddio wpa_supplicant i gysylltu â phwynt mynediad diogel. Wrth geisio "codi" y rhyngwyneb diwifr, mae systemd-networkd yn cychwyn y gwasanaeth wpa_supplicant@имяlle Enw yw enw'r rhyngwyneb diwifr. Os nad ydych wedi defnyddio systemd-networkd cyn y pwynt hwn, yna mae'n debyg bod y gwasanaeth hwn ar goll ar eich system.
Felly crewch ef gyda'r gorchymyn:
systemctl enable wpa_supplicant@wlp6s0
Defnyddiais i wlp6s0 fel enw ei ryngwyneb diwifr. Gall eich enw fod yn wahanol. Gallwch ei adnabod gyda'r gorchymyn ip l.
Nawr y gwasanaeth a grëwyd wpa_supplicant@wlp6s0 yn cael ei lansio pan fydd y rhyngwyneb diwifr yn cael ei “godi”, fodd bynnag, bydd, yn ei dro, yn edrych am y gosodiadau SSID a chyfrinair y pwynt mynediad yn y ffeil /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Felly, mae angen i chi ei greu gan ddefnyddio'r cyfleustodau wpa_passphrase.
lle SSID yw enw eich pwynt mynediad, cyfrinair yw'r cyfrinair, a wlp6s0 - enw eich rhyngwyneb diwifr.
Cychwyn y rhyngwyneb rhithwir ar gyfer tun2socks
Creu ffeil i gychwyn rhyngwyneb rhithwir newydd yn y system/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
Enw yw'r enw y bydd systemd-networkd yn ei aseinio i'r rhyngwyneb rhithwir yn y dyfodol pan gaiff ei gychwyn.
Plant yn fath o ryngwyneb rhithwir. O enw'r gwasanaeth tun2socks, gallwch chi ddyfalu ei fod yn defnyddio rhyngwyneb fel tun.
netdev yw'r estyniad o ffeiliau sy'n systemd-networkd Yn defnyddio i gychwyn rhyngwynebau rhwydwaith rhithwir. Mae'r cyfeiriad a gosodiadau rhwydwaith eraill ar gyfer y rhyngwynebau hyn wedi'u nodi yn .netwaith-ffeiliau.
Creu ffeil fel hyn /etc/systemd/network/25-tun2socks.network gyda'r cynnwys canlynol:
Name — enw'r rhyngwyneb rhithwir a nodwyd gennych netdev-ffeil.
Address — Cyfeiriad IP a fydd yn cael ei neilltuo i'r rhyngwyneb rhithwir. Rhaid iddo fod ar yr un rhwydwaith â'r cyfeiriad a nodwyd gennych yn y gwasanaeth tun2socks
Gateway — Cyfeiriad IP y “llwybrydd” tun2sanau, a nodwyd gennych wrth greu'r gwasanaeth systemd.
Felly y rhyngwyneb tun2sanau mae ganddo gyfeiriad 172.16.1.2, a'r gwasanaeth tun2sanau - 172.16.1.1, hynny yw, dyma'r porth ar gyfer pob cysylltiad o'r rhyngwyneb rhithwir.
Sefydlu pwynt mynediad rhithwir
Gosod dibyniaethau:
apt install util-linux procps hostapd iw haveged
Lawrlwythwch yr ystorfa creu_ap i'ch car:
git clone https://github.com/oblique/create_ap
Ewch i'r ffolder ystorfa ar eich peiriant:
cd create_ap
Gosod ar y system:
make install
Bydd ffurfwedd yn ymddangos ar eich system /etc/create_ap.conf. Dyma'r prif opsiynau golygu:
GATEWAY=10.0.0.1 - mae'n well ei wneud yn is-rwydwaith neilltuedig ar wahân.
NO_DNS=1 - analluogi, gan y bydd y paramedr hwn yn cael ei reoli gan y rhyngwyneb rhithwir systemd-network.
NO_DNSMASQ=1 - trowch ef i ffwrdd am yr un rheswm.
WIFI_IFACE=wlp6s0 - rhyngwyneb diwifr gliniadur.
INTERNET_IFACE=tun2socks - rhyngwyneb rhithwir wedi'i greu ar gyfer tun2socks.
SSID=hostapd — enw'r pwynt mynediad rhithwir.
PASSPHRASE=12345678 - cyfrinair.
Peidiwch ag anghofio galluogi'r gwasanaeth:
systemctl enable create_ap
Galluogi gweinydd DHCP mewn systemd-networkd
Gwasanaeth create_ap yn cychwyn rhyngwyneb rhithwir yn y system ap0. Mewn theori, mae dnsmasq yn hongian ar y rhyngwyneb hwn, ond pam gosod gwasanaethau ychwanegol os yw systemd-networkd yn cynnwys gweinydd DHCP adeiledig?
Er mwyn ei alluogi, byddwn yn diffinio'r gosodiadau rhwydwaith ar gyfer y pwynt rhithwir. I wneud hyn, crëwch ffeil /etc/systemd/network/25-ap0.network gyda'r cynnwys canlynol:
Ar ôl i'r gwasanaeth create_ap gychwyn y rhyngwyneb rhithwir ap0, bydd systemd-networkd yn aseinio cyfeiriad IP yn awtomatig iddo ac yn galluogi'r gweinydd DHCP.
Llinellau EmitDNS=yes и DNS=10.0.0.1 trosglwyddo gosodiadau gweinydd DNS i ddyfeisiau sy'n gysylltiedig â'r pwynt mynediad.
Os nad ydych yn bwriadu defnyddio gweinydd DNS lleol - yn fy achos i mae'n dnscrypt-proxy - gallwch chi osod DNS=10.0.0.1 в DNS=192.168.1.1lle 192.168.1.1 — cyfeiriad eich porth gwreiddiol. Yna bydd ceisiadau DNS am eich gwesteiwr a'ch rhwydwaith lleol yn mynd heb eu hamgryptio trwy weinyddion y darparwr.
EmitNTP=yes и NTP=192.168.1.1 trosglwyddo gosodiadau NTP.
Mae'r un peth yn wir am y llinell NTP=10.0.0.1.
Gosod a ffurfweddu gweinydd NTP
Gosod ar y system:
apt install ntp
Golygu'r ffurfwedd /etc/ntp.conf. Rhowch sylwadau ar gyfeiriadau pyllau safonol:
Ychwanegu cyfeiriadau gweinydd cyhoeddus, er enghraifft Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Rhowch fynediad i'r gweinydd i gleientiaid ar eich rhwydwaith:
restrict 10.0.0.0 mask 255.255.255.0
Galluogi darlledu i'ch rhwydwaith:
broadcast 10.0.0.255
Yn olaf, ychwanegwch gyfeiriadau'r gweinyddion hyn at y tabl llwybro statig. I wneud hyn, agorwch y ffeil ffurfweddu rhyngwyneb diwifr /etc/systemd/network/25-wlp6s0.network ac ychwanegu at ddiwedd yr adran Route.
I lwybro cysylltiadau dnscrypt-proxy trwy tun2socks, ychwanegwch isod:
force_tcp = true
Golygu'r ffurfwedd /etc/resolv.conf, sy'n dweud wrth y gweinydd DNS i'r gwesteiwr.
nameserver 127.0.0.1
nameserver 192.168.1.1
Mae'r llinell gyntaf yn galluogi defnyddio dnscrypt-proxy, mae'r ail linell yn defnyddio'r porth gwreiddiol rhag ofn na fydd y gweinydd dnscrypt-proxy ar gael.
Wedi'i wneud!
Ailgychwyn neu stopio rhedeg gwasanaethau rhwydwaith:
Ar ôl ailgychwyn neu ailgychwyn, bydd gennych ail bwynt mynediad sy'n llwybro'r dyfeisiau gwesteiwr a LAN i SOCKS.
Dyma sut olwg sydd ar yr allbwn ip a gliniadur arferol:
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
O ganlyniad,
Dim ond y cysylltiad wedi'i amgryptio i'ch gweinydd SOCKS y mae'r darparwr yn ei weld, sy'n golygu nad yw'n gweld dim.
Ac eto mae'n gweld eich ceisiadau NTP, i atal hyn, dileu llwybrau statig ar gyfer gweinyddwyr NTP. Fodd bynnag, nid yw'n sicr a yw eich gweinydd SOCKS yn caniatáu'r protocol NTP.
Crutch a welwyd ar Debain 10
Os ceisiwch ailgychwyn y gwasanaeth rhwydwaith o'r consol, bydd yn methu â gwall. Mae hyn oherwydd y ffaith bod rhan ohono ar ffurf rhyngwyneb rhithwir yn gysylltiedig â'r gwasanaeth tun2socks, sy'n golygu ei fod yn cael ei ddefnyddio. I ailgychwyn y gwasanaeth rhwydwaith, yn gyntaf rhaid i chi atal y gwasanaeth tun2socks. Ond, dwi'n meddwl, os ydych chi'n darllen hyd y diwedd, yn bendant nid yw hyn yn broblem i chi!