Agordi simplan VPN-on per WireGuard kaj Raspberry Pi kiel servilo

Ekde la WireGuard fariĝi parto de estonta kerno Linux 5.6, mi decidis vidi kiel plej bone integri ĉi tiun VPN-on kun mia LTE-Enkursigilo/Alirpunkto sur Raspberry Pi.

Ekipaĵo

  • Raspberry Pi 3 kun LTE-modulo kaj publika IP. Estos VPN-servilo (ĉi-poste nomata kiel edgewalker)
  • Telefono ŝaltita Android, kiu devas uzi VPN-on por ĉiuj komunikadoj
  • Tekkomputilo Linux, kiu devus uzi VPN nur ene de la reto

Ĉiu aparato, kiu konektas al VPN, devas povi konektiĝi al ĉiu alia aparato. Ekzemple, telefono devus povi konekti al retservilo sur tekkomputilo se ambaŭ aparatoj estas parto de VPN-reto. Se la aranĝo estas sufiĉe simpla, tiam vi povas pensi pri konekti al VPN kaj labortablo (per Ethernet).

Konsiderante ke kablaj kaj sendrataj konektoj fariĝas malpli sekuraj kun la tempo (celitaj atakoj, KRACK WPA2-haka atako и Dragonblood-atako kontraŭ WPA3), mi serioze pripensas uzi WireGuard por ĉiuj miaj aparatoj, sendepende de la medio en kiu ili funkcias.

Programaro

WireGuard provizas antaŭkompilitaj pakaĵoj por plej multaj distribuoj Linux, Windows и macOSAplikoj por Android kaj iOS estas liverataj per aplikaĵvendejoj.

Mi havas la plej novan Fedoron Linux 31, kaj antaŭ la instalado mi estis tro mallaborema por legi la manlibron. Mi ĵus trovis la pakaĵojn. wireguard-tools, instalis ilin, kaj tiam ne povis eltrovi kial nenio funkcias. Plia esploro malkaŝis, ke mi ne havis la pakaĵon instalita wireguard-dkms (kun retpelilo), kaj ĝi ne estis en la deponejo de mia distribuo.

Se mi estus leginta la instrukciojn, mi estus farinta la ĝustajn paŝojn:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Mi havas la Raspbian Buster-distribuon instalitan sur mia Raspberry Pi, jam ekzistas pako wireguard, instalu ĝin:

$ sudo apt install wireguard

Sur la telefono Android Mi instalis la aplikaĵon WireGuard VPN el la oficiala katalogo de la Google App Store.

Instalante ŝlosilojn

Por aŭtentikigi nodojn Wireguard Uzas simplan privatan/publikan ŝlosilskemon por aŭtentikigi VPN-nodojn. Vi povas facile generi VPN-ŝlosilojn per la jena komando:

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

Ĉi tio donas al ni tri ŝlosilparojn (ses dosieroj). Ni ne raportos al dosieroj en agordoj, sed kopios la enhavon ĉi tie: ĉiu ŝlosilo estas unu linio en base64.

Krei Agordan Dosieron por VPN-Servilo (Raspberry Pi)

La agordo estas sufiĉe simpla, mi kreis la sekvan dosieron /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Kelkaj notoj:

  • En la taŭgaj lokoj vi devas enmeti la liniojn de la dosieroj per la klavoj
  • Mia VPN uzas internan gamon 10.200.200.0/24
  • Por teamoj PostUp/PostDown Mi havas eksteran retan interfacon wwan0, vi eble havas alian (ekzemple, eth0)

La VPN-reto facile aperas per la sekva komando:

$ sudo wg-quick up wg0

Unu malgranda detalo: kiel DNS-servilon, mi uzis dnsmasq konektita al reto-interfaco br0, mi ankaŭ aldonis aparatojn wg0 al la listo de permesitaj aparatoj. En dnsmasq, tio estas farita aldonante novan linion kun la reto-interfaco al la agorda dosiero /etc/dnsmasq.confekzemple:

interface=br0
interface=wg0

Ankaŭ mi aldonis iptable-regulon por permesi trafikon al la aŭskultanta UDP-haveno (51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Nun kiam ĉio funkcias, ni povas registri la aŭtomatan lanĉon de la VPN-tunelo:

$ sudo systemctl enable wg-quick@wg0.service

Agordo de tekkomputila kliento

Sur la tekkomputilo, kreu agordan dosieron /etc/wireguard/wg0.conf kun la samaj agordoj:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Notoj:

  • Anstataŭ edgewalker, vi devas specifi publikan IP aŭ VPN-servilan gastiganton
  • Per agordo AllowedIPs sur 10.200.200.0/24, ni nur uzas la VPN por aliri la internan reton. Trafiko al ĉiuj aliaj IP-adresoj/serviloj daŭre trairos "regulajn" malfermitajn kanalojn. La antaŭ-agordita DNS-servilo sur la tekkomputilo ankaŭ estos uzata.

Por testado kaj aŭtomata lanĉo, ni uzas la samajn komandojn wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

Agordi la klienton por Android-telefono

Por telefono Android Ni kreas tre similan agordodosieron (ni nomu ĝin mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Male al la tekkomputila agordo, la telefono devus uzi nian VPN-servilon kiel sian DNS-servilon (ŝnuro DNS), kaj ankaŭ trapasi la tutan trafikon tra la VPN-tunelo (AllowedIPs = 0.0.0.0/0).

Anstataŭ kopii la dosieron al via poŝtelefono, vi povas konverti ĝin al QR-kodo:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

La QR-kodo estos eligita al la konzolo kiel ASCII. Ĝi povas esti skanita per la aplikaĵo. Android VPN kaj aŭtomate agordi la VPN-tunelon.

konkludo

alĝustigo WireGuard simple magia kompare kun OpenVPN.

fonto: www.habr.com

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster