Ekde la WireGuard estonta kerno Linux 5.6, mi decidis vidi kiel plej bone integri ĉi tiun VPN-on kun mia .
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 (, и ), mi serioze pripensas uzi WireGuard por ĉiuj miaj aparatoj, sendepende de la medio en kiu ili funkcias.
Programaro
WireGuard provizas 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 wireguardSur la telefono Android Mi instalis la aplikaĵon 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/32Kelkaj 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/PostDownMi 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=wg0Ankaŭ mi aldonis iptable-regulon por permesi trafikon al la aŭskultanta UDP-haveno (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNun kiam ĉio funkcias, ni povas registri la aŭtomatan lanĉon de la VPN-tunelo:
$ sudo systemctl enable wg-quick@wg0.serviceAgordo 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:51820Notoj:
- Anstataŭ edgewalker, vi devas specifi publikan IP aŭ VPN-servilan gastiganton
- Per agordo
AllowedIPssur10.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.serviceAgordi 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.confLa 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
