Ekde WireGuard
Ekipaĵo
- Raspberry Pi 3 kun LTE-modulo kaj publika IP. Estos VPN-servilo (ĉi-poste nomata kiel edgewalker)
- Android-telefono, kiu devas uzi VPN por ĉiuj komunikadoj
- Linuksa tekkomputilo, kiu bezonas 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 (
Programaro
WireGuard provizas
Mi havas la plej novan Fedora Linukso 31 kaj mi estis tro mallaborema legi la manlibron antaŭ ol instali. Ĵ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
Mi instalis la apon sur mia androida telefono
Instalante ŝlosilojn
Por aŭtentikigi nodojn, Wireguard uzas simplan privatan/publikan ŝlosilskemon por aŭtentikigi VPN-nodojn. Vi povas facile krei VPN-ŝlosilojn per la sekva 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.conf
ekzemple:
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 [email protected]
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
sur10.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 [email protected]
Agordi klienton sur Android-telefono
Por Android-telefono, ni kreas tre similan agordan dosieron (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 de la Android VPN-aplikaĵo kaj agordi VPN-tunelon aŭtomate.
konkludo
Agordo de WireGuard estas nur magia kompare kun OpenVPN.
fonto: www.habr.com