Tā kā WireGuard
Оборудование
- Raspberry Pi 3 ar LTE moduli un publisko IP adresi. Šeit būs VPN serveris (turpmāk tekstā tas tiek saukts edgewalker)
- Android tālrunis, kuram visiem sakariem jāizmanto VPN
- Linux klēpjdators, kuram tīklā jāizmanto tikai VPN
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 (
Programmatūras instalēšana
WireGuard nodrošina
Man ir jaunākā Fedora Linux 31, un es biju pārāk slinks, lai pirms instalēšanas izlasītu rokasgrāmatu. Tikko atradu pakas 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 wireguard
Savā Android tālrunī es instalēju lietojumprogrammu
Atslēgu uzstādīšana
Vienādranga autentifikācijai Wireguard izmanto vienkāršu privātās/publiskās atslēgas shēmu, lai autentificētu VPN vienaudžus. Varat viegli izveidot VPN atslēgas, izmantojot š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.key
Tā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/32
Pā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
/PostDown
Man 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=wg0
Turklā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 ACCEPT
Tagad, kad viss darbojas, mēs varam iestatīt automātisku VPN tuneļa palaišanu:
$ sudo systemctl enable [email protected]
Klienta 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:51820
Piezīmes:
- Edgewalker vietā ir jānorāda publiskais IP vai VPN servera resursdators
- Iestatot
AllowedIPs
par10.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 [email protected]
Klienta iestatīšana Android tālrunī
Android tālrunim mēs izveidojam ļoti līdzīgu konfigurācijas failu (sauksim to 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.conf
QR kods tiks izvadīts konsolē kā ASCII. To var skenēt no Android VPN lietotnes, un tas automātiski iestatīs VPN tuneli.
secinājums
WireGuard iestatīšana ir vienkārši maģiska salīdzinājumā ar OpenVPN.
Avots: www.habr.com