Kopš WireGuard nākotnes kodols Linux 5.6, es nolēmu noskaidrot, kā vislabāk integrēt šo VPN ar manu .
Оборудование
- Raspberry Pi 3 ar LTE moduli un publisko IP adresi. Šeit būs VPN serveris (turpmāk tekstā tas tiek saukts edgewalker)
- Tālrunis ieslēgts Android, kurai visiem sakariem jāizmanto VPN
- Klēpjdatoru Linux, kam VPN jāizmanto tikai tīkla ietvaros
Katrai ierīcei, kas izveido savienojumu ar VPN, jāspēj izveidot savienojumu ar visām pārējām ierīcēm. Piemēram, tālrunim ir jāspēj izveidot savienojumu ar klēpjdatora tīmekļa serveri, ja abas ierīces ir daļa no VPN tīkla. Ja iestatīšana izrādās diezgan vienkārša, varat padomāt par darbvirsmas savienošanu ar VPN (izmantojot Ethernet).
Ņemot vērā, ka vadu un bezvadu savienojumi laika gaitā kļūst arvien mazāk droši (, и ), es nopietni apsveru iespēju izmantot WireGuard visām manām ierīcēm neatkarīgi no vides, kurā tās darbojas.
Programmatūras instalēšana
WireGuard nodrošina lielākajai daļai izplatījumu Linux, Windows и macOSPieteikumi Android un iOS tiek piegādātas, izmantojot lietotņu veikalus.
Man ir jaunākā Fedora Linux 31, un pirms instalēšanas man bija pārāk slinkums lasīt rokasgrāmatu. Es tikko atradu pakotnes. wireguard-tools, instalēja tos un pēc tam nevarēja saprast, kāpēc nekas nedarbojas. Turpmākā izmeklēšana atklāja, ka man nav instalēta pakotne wireguard-dkms (ar tīkla draiveri), bet tas nebija mana izplatīšanas repozitorijā.
Ja es būtu izlasījis instrukcijas, es būtu veicis pareizās darbības:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Manā Raspberry Pi ir instalēta Raspbian Buster izplatīšana, tur jau ir pakotne wireguard, instalējiet to:
$ sudo apt install wireguardPa telefonu Android Es instalēju lietojumprogrammu no oficiālā Google App Store kataloga.
Atslēgu uzstādīšana
Lai autentificētu mezglus Wireguard Izmanto vienkāršu privātās/publiskās atslēgas shēmu, lai autentificētu VPN mezglus. VPN atslēgas var viegli ģenerēt ar šo komandu:
$ 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.keyTādējādi tiek iegūti trīs atslēgu pāri (seši faili). Mēs neatsaucīsimies uz failiem konfigurācijās, bet kopēsim saturu šeit: katra atslēga ir viena rindiņa base64.
Konfigurācijas faila izveide VPN serverim (Raspberry Pi)
Konfigurācija ir diezgan vienkārša, es izveidoju šādu failu /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/32Pāris piezīmes:
- Atbilstošās vietās ar taustiņiem jāievieto rindas no failiem
- Mans VPN izmanto iekšējo joslu
10.200.200.0/24 - Komandām
PostUp/PostDownMan ir ārējā tīkla saskarne wwan0, jums var būt cita (piemēram, eth0)
VPN tīklu var viegli izveidot, izmantojot šādu komandu:
$ sudo wg-quick up wg0 Viena maza detaļa: kā DNS serveris, kuru izmantoju dnsmasq piesaistīts tīkla interfeisam br0, pievienoju arī ierīces wg0 uz atļauto ierīču sarakstu. Programmā dnsmasq tas tiek darīts, konfigurācijas failam pievienojot jaunu tīkla interfeisa līniju /etc/dnsmasq.conf, piemēram:
interface=br0
interface=wg0Turklāt es pievienoju iptable noteikumu, lai atļautu trafiku uz UDP klausīšanās portu (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTTagad, kad viss darbojas, mēs varam iestatīt automātisku VPN tuneļa palaišanu:
$ sudo systemctl enable wg-quick@wg0.serviceKlienta konfigurācija klēpjdatorā
Izveidojiet konfigurācijas failu klēpjdatorā /etc/wireguard/wg0.conf ar tiem pašiem iestatījumiem:
[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:51820Piezīmes:
- Edgewalker vietā ir jānorāda publiskais IP vai VPN servera resursdators
- Iestatot
AllowedIPspar10.200.200.0/24, mēs izmantojam tikai VPN, lai piekļūtu iekšējam tīklam. Satiksme uz visām pārējām IP adresēm/serveriem turpinās iet caur “parastajiem” atvērtajiem kanāliem. Tas izmantos arī klēpjdatora iepriekš konfigurēto DNS serveri.
Testēšanai un automātiskai palaišanai mēs izmantojam tās pašas komandas wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceKlienta iestatīšana Android-telefons
Par tālruni Android Mēs izveidojam ļoti līdzīgu konfigurācijas failu (nosauksim to par 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 Atšķirībā no klēpjdatora konfigurācijas, tālrunim kā DNS serverim ir jāizmanto mūsu VPN serveris (rinda DNS), kā arī nodot visu trafiku caur VPN tuneli (AllowedIPs = 0.0.0.0/0).
Tā vietā, lai kopētu failu savā mobilajā ierīcē, varat to pārveidot par QR kodu:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR kods tiks izvadīts uz konsoli kā ASCII kods. To var noskenēt no lietotnes. Android VPN un automātiski konfigurē VPN tuneli.
secinājums
koriģēšana WireGuard vienkārši maģiski, salīdzinot ar OpenVPN.
Avots: www.habr.com
