Dum tuta jaro (aŭ du) mi prokrastis la publikigon de ĉi tiu artikolo pro la ĉefa kialo - mi jam publikigis du artikolojn, en kiuj mi priskribis la procezon de kreado de enkursigilo en SOCKS el tre ordinara tekokomputilo kun Debian.
Tamen, ekde tiam la stabila versio Debian Mi ĝisdatigis al Buster, kaj sufiĉe multaj homoj kontaktis min private petante helpon pri la agordo, kio signifas, ke miaj antaŭaj artikoloj ne estas ĝisfundaj. Nu, mi jam suspektis, ke la metodoj priskribitaj en ili ne plene kovras ĉiujn detalojn pri la agordo. Linux por vojigo en ŜTRUMPETOJ. Krome, ili estas skribitaj por Debian Stretch, kaj post ĝisdatigo al Buster, mi rimarkis kelkajn malgrandajn ŝanĝojn en kiel servoj interagas kun la systemd-inicialiga sistemo. Mi ankaŭ ne uzis systemd-networkd en la artikoloj mem, kvankam ĝi plej taŭgas por kompleksaj retkonfiguracioj.
Krom ĉi-supraj ŝanĝoj, la sekvaj servoj estis aldonitaj al mia agordo: hostapd - servo por virtualigo de alirpunkto, ntp sinkronigi la tempon de lokaj retaj klientoj, dnscrypt-proxy por ĉifri konektojn per DNS kaj malŝalti reklamadon ĉe lokaj retaj klientoj, kaj ankaŭ, kiel mi menciis antaŭe, systemd-networkd por agordi retajn interfacojn.
Jen simpla blokdiagramo de la interna strukturo de tia enkursigilo.

Do, mi memorigu vin, kiaj estas la celoj de ĉi tiu serio de artikoloj:
- Itineru ĉiujn OS-konektojn al SOCKS, same kiel konektojn de ĉiuj aparatoj en la sama reto kiel la tekkomputilo.
- La tekkomputilo en mia kazo devus resti tute movebla. Tio estas, doni la ŝancon uzi la labortablan medion kaj ne esti ligita al fizika loko.
- La lasta punkto implicas konekton kaj vojigon nur per la enkonstruita sendrata interfaco.
- Nu, kaj kompreneble, la kreado de ampleksa gvidilo, kaj ankaŭ analizo de la koncernaj teknologioj laŭ mia modesta scio.
Kio estos kovrita en ĉi tiu artikolo:
- iri — elŝutu projektajn deponejojn tun2ŝtrumpetojpostulata por direkti TCP-trafikon al SOCKS, kaj krei_ap — skripto por aŭtomatigi la aranĝon de virtuala alirpunkto uzante hostapd.
- tun2ŝtrumpetoj — konstrui kaj instali la systemd-servon sur la sistemo.
- systemd-networkd — agordi sendratajn kaj virtualajn interfacojn, senmovajn enrutigajn tabelojn kaj pakaĵet-alidirektilon.
- krei_ap — instalu la systemd-servon en la sistemo, agordu kaj lanĉu virtualan alirpunkton.
Laŭvolaj paŝoj:
- ntp — instali kaj agordi servilon por sinkronigi tempon ĉe virtualaj alirpunktoklientoj.
- dnscrypt-proxy — ni ĉifris DNS-petojn, direktos ilin al SOCKS kaj malŝaltos reklamajn domajnojn por la loka reto.
Por kio ĉi tio ĉio?
Ĉi tio estas unu el la manieroj sekurigi TCP-konektojn en loka reto. La ĉefa avantaĝo estas, ke ĉiuj ligoj estas faritaj en Ŝtrumpetoj, krom se statika itinero estas konstruita por ili tra la origina enirejo. Ĉi tio signifas, ke vi ne bezonas specifi SOCKS-servilagordojn por aŭ individuaj programoj aŭ klientoj en la loka reto - ili ĉiuj iras al SOCKS defaŭlte, ĉar ĝi estas la defaŭlta enirejo ĝis ni indikas alie.
Esence ni aldonas duan ĉifran enkursigilon kiel tekkomputilon antaŭ la origina enkursigilo kaj uzas la interretan konekton de la originala enkursigilo por la jam ĉifritaj SOCKS-petoj de la tekokomputilo, kiuj siavice direktas kaj ĉifras petojn de LAN-klientoj.
De la vidpunkto de la provizanto, ni estas konstante konektitaj al unu servilo kun ĉifrita trafiko.
Sekve, ĉiuj aparatoj estas konektitaj al la virtuala alirpunkto de la tekkomputilo.
Instalu tun2socks sur la sistemo
Dum via maŝino havas interreton, elŝutu ĉiujn necesajn ilojn.
apt updateapt install git make cmakeElŝutu la pakaĵon badvpn
git clone https://github.com/ambrop72/badvpn
Dosierujo aperos en via sistemo badvpn. Kreu apartan dosierujon por la konstruo
mkdir badvpn-build
Iru al ĝi
cd badvpn-build
Kolekti tun2socks
cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1
Instalu en la sistemo
make install
- Parametro
-DBUILD_NOTHING_BY_DEFAULT=1malŝaltas la konstruon de ĉiuj komponantoj de la deponejo badvpn. - -
DBUILD_TUN2SOCKS=1inkluzivas komponanton en la aro tun2ŝtrumpetoj. make install— instalos la binaron tun2socks sur via sistemo ĉe/usr/local/bin/badvpn-tun2socks.
Instalu la servon tun2socks en systemd
Kreu dosieron /etc/systemd/system/tun2socks.service kun la jena enhavo:
[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- prenas la nomon de la virtuala interfaco, kiun ni pracigas per systemd-networkd.--netif-ipaddr— la retadreso de la tun2socks "enkursigilo" al kiu la virtuala interfaco estas konektita. Estas pli bone apartigi ĝin .--socks-server-addr- akceptas ingon (адрес:портSOCKS-serviloj).
Se via SOCKS-servilo postulas aŭtentikigon, vi povas specifi la parametrojn --username и --password.
Poste, registri la servon
systemctl daemon-reloadKaj ŝaltu ĝin
systemctl enable tun2socksAntaŭ ol komenci la servon, ni provizos al ĝi virtualan retan interfacon.
Ŝanĝante al systemd-networkd
Ni inkluzivas systemd-networkd:
systemctl enable systemd-networkdMalebligu nunajn retajn servojn.
systemctl disable networking NetworkManager NetworkManager-wait-online- NetworkManager-atendo-enreta estas servo, kiu atendas funkciantan retkonekton antaŭ ol systemd daŭre lanĉas aliajn servojn, kiuj dependas de la ĉeesto de reto. Ni malŝaltas ĝin dum ni ŝanĝas al la analoga systemd-networkd.
Ni ebligu ĝin tuj:
systemctl enable systemd-networkd-wait-onlineAgordu la sendratan retan interfacon
Kreu agordan dosieron systemd-networkd por la sendrata reto-interfaco /etc/systemd/network/25-wlp6s0.network.
[Match]
Name=wlp6s0
[Network]
Address=192.168.1.2/24
IPForward=yes
- Nomo estas la nomo de via sendrata interfaco. Identigu ĝin per la komando
ip a. - IPForward - direktivo kiu ebligas pakaĵetan alidirekton sur retinterfaco.
- Adreso respondecas pri asignado de IP-adreso al la sendrata interfaco. Ni specifas ĝin statike ĉar kun la ekvivalenta direktivo
DHCP=yes, systemd-networkd kreas defaŭltan enirejon sur la sistemo. Tiam la tuta trafiko iros tra la originala enirejo, kaj ne tra la estonta virtuala interfaco sur malsama subreto. Vi povas kontroli la nunan defaŭltan enirejon per la komandoip r
Kreu senmovan itineron por la fora SOCKS-servilo
Se via SOCKS-servilo ne estas loka, sed malproksima, tiam vi devas krei statikan itineron por ĝi. Por fari tion, aldonu sekcion Route ĝis la fino de la sendrata interfaca agorda dosiero, kiun vi kreis kun la sekva enhavo:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway— ĉi tio estas la defaŭlta enirejo aŭ la adreso de via originala alirpunkto.Destination— SOCKS servila adreso.
Agordu wpa_supplicant por systemd-networkd
systemd-networkd uzas wpa_supplicant por konekti al sekura alirpunkto. Provante "altigi" la sendratan interfacon, systemd-networkd lanĉas la servon wpa_supplicant@имяkie имя estas la nomo de la sendrata interfaco. Se vi ne uzis systemd-networkd antaŭ ĉi tiu punkto, tiam ĉi tiu servo verŝajne mankas en via sistemo.
Do kreu ĝin per la komando:
systemctl enable wpa_supplicant@wlp6s0mi uzis wlp6s0 kiel la nomo de ĝia sendrata interfaco. Via nomo povas esti malsama. Vi povas rekoni ĝin per la komando ip l.
Nun la kreita servo wpa_supplicant@wlp6s0 estos lanĉita kiam la sendrata interfaco estas "levita", tamen ĝi, siavice, serĉos la SSID kaj pasvortajn agordojn de la alirpunkto en la dosiero. /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Tial vi devas krei ĝin per la utileco wpa_passphrase.
Por fari tion, rulu la komandon:
wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.confkie SSID estas la nomo de via alirpunkto, pasvorto estas la pasvorto, kaj wlp6s0 — la nomo de via sendrata interfaco.
Komencu la virtualan interfacon por tun2socks
Kreu dosieron por pravalorigi novan virtualan interfacon en la sistemo/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
- Nomo estas la nomo, kiun systemd-networkd asignos al la estonta virtuala interfaco kiam ĝi estas pravalorigita.
- speco estas speco de virtuala interfaco. El la nomo de la servo tun2socks, vi povas diveni, ke ĝi uzas interfacon kiel
tun. - netdev estas la etendo de dosieroj kiuj
systemd-networkdUzas por pravalorigi virtualajn retajn interfacojn. La adreso kaj aliaj retaj agordoj por ĉi tiuj interfacoj estas specifitaj en .reto-dosieroj.
Kreu dosieron kiel ĉi tion /etc/systemd/network/25-tun2socks.network kun la jena enhavo:
[Match]
Name=tun2socks
[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
Name— la nomo de la virtuala interfaco, en kiu vi specifis netdev-dosiero.Address— IP-adreso, kiu estos asignita al la virtuala interfaco. Devas esti en la sama reto kiel la adreso, kiun vi specifis en la servo tun2socksGateway- IP-adreso de la "enkursigilo" tun2ŝtrumpetoj, kiun vi specifis dum kreado de la systemd-servo.
Do la interfaco tun2ŝtrumpetoj havas adreson 172.16.1.2, kaj la servo tun2ŝtrumpetoj - 172.16.1.1, tio estas, ĝi estas la enirejo por ĉiuj ligoj de la virtuala interfaco.
Agordu virtualan alirpunkton
Instalu dependecojn:
apt install util-linux procps hostapd iw havegedElŝutu la deponejon krei_ap al via aŭto:
git clone https://github.com/oblique/create_apIru al la dosierujo de deponejo sur via maŝino:
cd create_apInstalu en la sistemo:
make installAgordo aperos en via sistemo /etc/create_ap.conf. Jen la ĉefaj redaktaj opcioj:
GATEWAY=10.0.0.1— estas pli bone fari ĝin aparta rezervita subreto.NO_DNS=1- malŝaltu, ĉar ĉi tiu parametro estos administrita de la virtuala interfaco systemd-networkd.NO_DNSMASQ=1- malŝaltu ĝin pro la sama kialo.WIFI_IFACE=wlp6s0- sendrata interfaco por tekkomputilo.INTERNET_IFACE=tun2socks- virtuala interfaco kreita por tun2socks.SSID=hostapd— nomo de la virtuala alirpunkto.PASSPHRASE=12345678- Pasvorto.
Ne forgesu ebligi la servon:
systemctl enable create_apEbligu DHCP-servilon en systemd-networkd
Servo create_ap pravigigas virtualan interfacon en la sistemo ap0. En teorio, dnsmasq pendas sur ĉi tiu interfaco, sed kial instali kromajn servojn se systemd-networkd enhavas enkonstruitan DHCP-servilon?
Por ebligi ĝin, ni difinos la retajn agordojn por la virtuala punkto. Por fari tion, kreu dosieron /etc/systemd/network/25-ap0.network kun la jena enhavo:
[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
Post kiam la servo create_ap pravalorigas la virtualan interfacon ap0, systemd-networkd aŭtomate asignos al ĝi IP-adreson kaj ebligos la DHCP-servilon.
Kordoj EmitDNS=yes и DNS=10.0.0.1 transdoni DNS-servilon agordojn al aparatoj konektitaj al la alirpunkto.
Se vi ne planas uzi lokan DNS-servilon - en mia kazo ĝi estas dnscrypt-proxy - vi povas instali DNS=10.0.0.1 в DNS=192.168.1.1kie 192.168.1.1 — la adreso de via originala enirejo. Tiam DNS-petoj por via gastiganto kaj loka reto estos neĉifritaj tra la serviloj de la provizanto.
EmitNTP=yes и NTP=192.168.1.1 translokigi NTP-agordojn.
La sama validas por la linio NTP=10.0.0.1.
Instalu kaj agordu NTP-servilon
Instalu en la sistemo:
apt install ntp
Redaktu la agordon /etc/ntp.conf. Komentu la adresojn de normaj naĝejoj:
#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
Aldonu publikajn serviladresojn, ekzemple Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Provizu aliron al la servilo al klientoj en via reto:
restrict 10.0.0.0 mask 255.255.255.0
Ebligu elsendon al via reto:
broadcast 10.0.0.255
Fine, aldonu la adresojn de ĉi tiuj serviloj al la statika envojiga tabelo. Por fari tion, malfermu la sendratan interfacan agordan dosieron /etc/systemd/network/25-wlp6s0.network kaj aldonu al la fino de la sekcio 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.12Vi povas ekscii la adresojn de viaj NTP-serviloj uzante la ilon host kiel sekvas:
host time1.google.comInstalu dnscrypt-proxy, forigu reklamojn kaj kaŝu DNS-trafikon de via provizanto
apt install dnscrypt-proxyPor servi gastigajn kaj lokajn retajn DNS-demandojn, redaktu la ingon /lib/systemd/system/dnscrypt-proxy.socket. Ŝanĝu la sekvajn liniojn:
ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53Rekomenci systemd:
systemctl daemon-reloadRedaktu la agordon /etc/dnscrypt-proxy/dnscrypt-proxy.toml:
server_names = ['adguard-dns']
Por direkti dnscrypt-proxy-konektojn tra tun2socks, aldonu sube:
force_tcp = true
Redaktu la agordon /etc/resolv.conf, kiu rakontas la DNS-servilon al la gastiganto.
nameserver 127.0.0.1
nameserver 192.168.1.1La unua linio ebligas la uzon de dnscrypt-proxy, la dua linio uzas la originan enirejon se la dnscrypt-proxy-servilo estas neatingebla.
Farita!
Rekomencu aŭ ĉesu ruli retajn servojn:
systemctl stop networking NetworkManager NetworkManager-wait-onlineKaj rekomencu ĉion necesan:
systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntpPost rekomenco aŭ rekomenco, vi havos duan alirpunkton, kiu direktas la gastigantajn kaj LAN-aparatojn al SOCKS.
Jen kiel aspektas la eligo ip a regula tekkomputilo:
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
En la fino
- La provizanto nur vidas la ĉifritan konekton al via SOCKS-servilo, kio signifas, ke ili vidas nenion.
- Kaj tamen ĝi vidas viajn NTP-petojn, por malhelpi tion, forigu senmovajn itinerojn por NTP-serviloj. Tamen ne certas, ke via SOCKS-servilo permesas la NTP-protokolon.
Lambastono ekvidita sur Debain 10
Se vi provas rekomenci la retan servon de la konzolo, ĝi malsukcesos kun eraro. Ĉi tio estas pro la fakto, ke parto de ĝi en formo de virtuala interfaco estas ligita al la servo tun2socks, kio signifas, ke ĝi estas uzata. Por rekomenci la retan servon, vi unue devas ĉesigi la tun2socks-servon. Sed, mi pensas, se vi legas ĝis la fino, ĉi tio certe ne estas problemo por vi!
referencoj
fonto: www.habr.com
