Dahil WireGuard
ΠΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
- Raspberry Pi 3 na may LTE module at pampublikong IP address. Magkakaroon ng VPN server dito (simula dito sa text na ito ay tinatawag edgewalker)
- Isang Android phone na dapat gumamit ng VPN para sa lahat ng komunikasyon
- Linux laptop na dapat lang gumamit ng VPN sa loob ng network
Ang bawat device na kumokonekta sa VPN ay dapat na makakonekta sa lahat ng iba pang device. Halimbawa, ang isang telepono ay dapat na makakonekta sa isang web server sa isang laptop kung ang parehong mga aparato ay bahagi ng isang VPN network. Kung ang pag-setup ay naging medyo simple, maaari mong isipin ang tungkol sa pagkonekta sa desktop sa VPN (sa pamamagitan ng Ethernet).
Isinasaalang-alang na ang mga wired at wireless na koneksyon ay nagiging mas ligtas sa paglipas ng panahon (
Pag-install ng software
Nagbibigay ang WireGuard
Mayroon akong pinakabagong Fedora Linux 31, at tinatamad akong basahin ang manual bago i-install. Kakahanap lang ng packages wireguard-tools
, na-install ang mga ito, at pagkatapos ay hindi malaman kung bakit walang gumagana. Ang karagdagang pagsisiyasat ay nagsiwalat na hindi ko naka-install ang package wireguard-dkms
(na may isang driver ng network), ngunit wala ito sa imbakan ng aking pamamahagi.
Kung nabasa ko ang mga tagubilin, ginawa ko ang mga tamang hakbang:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Mayroon akong pamamahagi ng Raspbian Buster na naka-install sa aking Raspberry Pi, mayroon nang isang pakete doon wireguard
, i-install ito:
$ sudo apt install wireguard
Sa aking Android phone na-install ko ang application
Pag-install ng mga susi
Para sa pagpapatotoo ng peer, ang Wireguard ay gumagamit ng isang simpleng pribado/pampublikong key scheme upang patotohanan ang mga kapantay ng VPN. Madali kang makakagawa ng mga VPN key gamit ang sumusunod na command:
$ 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
Nagbibigay ito sa amin ng tatlong key pares (anim na file). Hindi kami magre-refer sa mga file sa mga config, ngunit kopyahin ang mga nilalaman dito: bawat key ay isang linya sa base64.
Paglikha ng configuration file para sa VPN server (Raspberry Pi)
Ang pagsasaayos ay medyo simple, nilikha ko ang sumusunod na file /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
Isang pares ng mga tala:
- Sa naaangkop na mga lugar kailangan mong magpasok ng mga linya mula sa mga file na may mga susi
- Ang aking VPN ay gumagamit ng panloob na banda
10.200.200.0/24
- Para sa mga koponan
PostUp
/PostDown
Mayroon akong panlabas na interface ng network na wwan0, maaaring mayroon kang iba (halimbawa, eth0)
Ang VPN network ay madaling itataas gamit ang sumusunod na command:
$ sudo wg-quick up wg0
Isang maliit na detalye: bilang DNS server na ginamit ko dnsmasq
nakatali sa isang interface ng network br0
, nagdagdag din ako ng mga device wg0
sa listahan ng mga pinapayagang device. Sa dnsmasq ito ay ginagawa sa pamamagitan ng pagdaragdag ng bagong network interface line sa configuration file /etc/dnsmasq.conf
, halimbawa:
interface=br0
interface=wg0
Bukod pa rito, nagdagdag ako ng iptable na panuntunan upang payagan ang trapiko sa UDP listening port (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Ngayon na gumagana na ang lahat, maaari naming i-set up ang awtomatikong paglulunsad ng VPN tunnel:
$ sudo systemctl enable [email protected]
Configuration ng kliyente sa laptop
Gumawa ng configuration file sa isang laptop /etc/wireguard/wg0.conf
na may parehong mga setting:
[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
remarks:
- Sa halip na edgewalker kailangan mong tukuyin ang pampublikong IP o VPN server host
- Sa pamamagitan ng pagtatakda
AllowedIPs
sa10.200.200.0/24
, gumagamit lang kami ng VPN para ma-access ang panloob na network. Ang trapiko sa lahat ng iba pang mga IP address/server ay patuloy na dadaan sa "normal" na mga bukas na channel. Gagamitin din nito ang paunang na-configure na DNS server sa laptop.
Para sa pagsubok at awtomatikong paglulunsad, ginagamit namin ang parehong mga utos wg-quick
ΠΈ systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Pagse-set up ng kliyente sa isang Android phone
Para sa isang Android phone, gumawa kami ng halos kaparehong configuration file (tawagan natin ito 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
Hindi tulad ng configuration sa laptop, dapat gamitin ng telepono ang aming VPN server bilang DNS server (line DNS
), at ipasa din ang lahat ng trapiko sa VPN tunnel (AllowedIPs = 0.0.0.0/0
).
Sa halip na kopyahin ang file sa iyong mobile device, maaari mo itong i-convert sa isang QR code:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
Ang QR code ay maglalabas sa console bilang ASCII. Maaari itong ma-scan mula sa Android VPN app at awtomatikong magse-set up ng VPN tunnel.
Pagbubuhos
Ang pag-set up ng WireGuard ay simpleng mahiwagang kumpara sa OpenVPN.
Pinagmulan: www.habr.com