ื”ืื WireGuard ื”ื•ื ื”-VPN ื”ื’ื“ื•ืœ ืฉืœ ื”ืขืชื™ื“?

ื”ืื WireGuard ื”ื•ื ื”-VPN ื”ื’ื“ื•ืœ ืฉืœ ื”ืขืชื™ื“?

ื”ื’ื™ืข ื”ื–ืžืŸ ืฉื‘ื• VPN ืื™ื ื• ืขื•ื“ ืื™ื–ื” ื›ืœื™ ืืงื–ื•ื˜ื™ ืฉืœ ืžื ื”ืœื™ ืžืขืจื›ื•ืช ืžื–ื•ืงื ื™ื. ืœืžืฉืชืžืฉื™ื ื™ืฉ ืžืฉื™ืžื•ืช ืฉื•ื ื•ืช, ืื‘ืœ ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื›ื•ืœื ืฆืจื™ื›ื™ื VPN.

ื”ื‘ืขื™ื” ืขื ืคืชืจื•ื ื•ืช ื”-VPN ื”ื ื•ื›ื—ื™ื™ื ื”ื™ื ืฉืงืฉื” ืœื”ื’ื“ื™ืจ ืื•ืชื ื‘ืฆื•ืจื” ื ื›ื•ื ื”, ื™ืงืจ ืœืชื—ื–ื•ืงื” ื•ื”ื ืžืœืื™ื ื‘ืงื•ื“ ืžื“ื•ืจ ืงื•ื“ื ื‘ืื™ื›ื•ืช ืžืคื•ืงืคืงืช.

ืœืคื ื™ ืžืกืคืจ ืฉื ื™ื ื”ื—ืœื™ื˜ ืžื•ืžื—ื” ืื‘ื˜ื—ืช ื”ืžื™ื“ืข ื”ืงื ื“ื™ ื’'ื™ื™ืกื•ืŸ ื. ื“ื•ื ื ืคืœื“ ืฉื ืžืืก ืœื• ื•ื”ื—ืœ ืœืขื‘ื•ื“ ืขืœ WireGuard. WireGuard ื ืขืจืš ื›ืขืช ืœื”ื›ืœืœื” ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก ื•ืืฃ ื–ื›ื” ืœืฉื‘ื—ื™ื ืœื™ื ื•ืก ื˜ื•ืจื•ื•ืืœื“ืก ื• - ื”ืกื ืื˜ ื”ืืžืจื™ืงืื™.

ื”ื™ืชืจื•ื ื•ืช ื”ื ื˜ืขื ื™ื ืฉืœ WireGuard ืขืœ ืคื ื™ ืคืชืจื•ื ื•ืช VPN ืื—ืจื™ื:

  • ืงืœ ืœืฉื™ืžื•ืฉ.
  • ืžืฉืชืžืฉ ื‘ืงืจื™ืคื˜ื•ื’ืจืคื™ื” ืžื•ื“ืจื ื™ืช: ืžืกื’ืจืช ืคืจื•ื˜ื•ืงื•ืœ ืจืขืฉ, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF ื•ื›ื•'.
  • ืงื•ื“ ืงื•ืžืคืงื˜ื™, ืงืจื™ื, ืงืœ ื™ื•ืชืจ ืœื—ืงื•ืจ ื ืงื•ื“ื•ืช ืชื•ืจืคื”.
  • ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื.
  • ื‘ืจื•ืจ ื•ืžืฉื•ื›ืœืœ ืžืคืจื˜.

ื”ืื ื ืžืฆื ื›ื“ื•ืจ ื›ืกืฃ? ื”ืื ื”ื’ื™ืข ื”ื–ืžืŸ ืœืงื‘ื•ืจ ืืช OpenVPN ื•- IPSec? ื”ื—ืœื˜ืชื™ ืœื”ืชืžื•ื“ื“ ืขื ื–ื”, ื•ื‘ืžืงื‘ื™ืœ ืขืฉื™ืชื™ ื–ืืช ืกืงืจื™ืคื˜ ืœื”ืชืงื ื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืฉืจืช VPN ืื™ืฉื™.

ืขืงืจื•ื ื•ืช ืขื‘ื•ื“ื”

ื ื™ืชืŸ ืœืชืืจ ืืช ืขืงืจื•ื ื•ืช ื”ืคืขื•ืœื” ื‘ืขืจืš ื›ืš:

  • ื ื•ืฆืจ ืžืžืฉืง WireGuard ื•ืžืงืฆื™ื ืœื• ืžืคืชื— ืคืจื˜ื™ ื•ื›ืชื•ื‘ืช IP. ื”ื”ื’ื“ืจื•ืช ืฉืœ ืขืžื™ืชื™ื ืื—ืจื™ื ื ื˜ืขื ื•ืช: ื”ืžืคืชื—ื•ืช ื”ืฆื™ื‘ื•ืจื™ื™ื ืฉืœื”ื, ื›ืชื•ื‘ื•ืช ื”-IP ื•ื›ื•'.
  • ื›ืœ ืžื ื•ืช ื”-IP ื”ืžื’ื™ืขื•ืช ืœืžืžืฉืง WireGuard ืžื•ื‘ืœืขื•ืช ื‘-UDP ื• ื ืžืกืจ ื‘ื‘ื˜ื—ื” ืขืžื™ืชื™ื ืื—ืจื™ื.
  • ืœืงื•ื—ื•ืช ืžืฆื™ื™ื ื™ื ืืช ื›ืชื•ื‘ืช ื”-IP ื”ืฆื™ื‘ื•ืจื™ืช ืฉืœ ื”ืฉืจืช ื‘ื”ื’ื“ืจื•ืช. ื”ืฉืจืช ืžื–ื”ื” ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ื›ืชื•ื‘ื•ืช ื”ื—ื™ืฆื•ื ื™ื•ืช ืฉืœ ืœืงื•ื—ื•ืช ื›ืืฉืจ ืžืชืงื‘ืœื™ื ืžื”ื ื ืชื•ื ื™ื ืžืื•ืžืชื™ื ื›ื”ืœื›ื”.
  • ื”ืฉืจืช ื™ื›ื•ืœ ืœืฉื ื•ืช ืืช ื›ืชื•ื‘ืช ื”-IP ื”ืฆื™ื‘ื•ืจื™ืช ืžื‘ืœื™ ืœื”ืคืจื™ืข ืœืขื‘ื•ื“ืชื•. ื‘ืžืงื‘ื™ืœ, ื–ื” ื™ืฉืœื— ื”ืชืจืื” ืœืœืงื•ื—ื•ืช ืžื—ื•ื‘ืจื™ื ื•ื”ื ื™ืขื“ื›ื ื• ืืช ื”ืชืฆื•ืจื” ืฉืœื”ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”.
  • ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื•ืฉื’ ื ื™ืชื•ื‘ ื ื™ืชื•ื‘ ืžืคืชื— ืงืจื™ืคื˜ื•. WireGuard ืžืงื‘ืœ ื•ืฉื•ืœื— ืžื ื•ืช ืขืœ ืกืžืš ื”ืžืคืชื— ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ื”ืขืžื™ืช. ื›ืืฉืจ ื”ืฉืจืช ืžืคืขื ื— ื—ื‘ื™ืœื” ืžืื•ืžืชืช ื›ื”ืœื›ื”, ืฉื“ื” ื”-src ืฉืœื• ืžืกื•ืžืŸ. ืื ื–ื” ืชื•ืื ืืช ื”ืชืฆื•ืจื” allowed-ips ืขืžื™ืช ืžืื•ืžืช, ื”ื—ื‘ื™ืœื” ืžืชืงื‘ืœืช ืขืœ ื™ื“ื™ ืžืžืฉืง WireGuard. ื‘ืขืช ืฉืœื™ื—ืช ื—ื‘ื™ืœื” ื™ื•ืฆืืช ืžืชืจื—ืฉ ื”ืคืจื•ืฆื“ื•ืจื” ื”ืžืงื‘ื™ืœื”: ื ืœืงื— ืฉื“ื” ื”-dst ืฉืœ ื”ื—ื‘ื™ืœื” ื•ืขืœ ืคื™ื• ื ื‘ื—ืจ ื”ืขืžื™ืช ื”ืžืชืื™ื, ื”ื—ื‘ื™ืœื” ื ื—ืชืžืช ื‘ืžืคืชื— ืฉืœื”, ืžื•ืฆืคื ืช ื‘ืžืคืชื— ืฉืœ ื”ืขืžื™ืช ื•ื ืฉืœื—ืช ืœื ืงื•ื“ืช ื”ืงืฆื” ื”ืžืจื•ื—ืงืช. .

ื›ืœ ื”ืœื•ื’ื™ืงืช ื”ืœื™ื‘ื” ืฉืœ WireGuard ืชื•ืคืกืช ืคื—ื•ืช ืž-4 ืฉื•ืจื•ืช ืงื•ื“, ื‘ืขื•ื“ ืฉืœ-OpenVPN ื•-IPSec ื™ืฉ ืžืื•ืช ืืœืคื™ ืฉื•ืจื•ืช. ื›ื“ื™ ืœืชืžื•ืš ื‘ืืœื’ื•ืจื™ืชืžื™ื ืงืจื™ืคื˜ื•ื’ืจืคื™ื™ื ืžื•ื“ืจื ื™ื™ื, ืžื•ืฆืข ืœื›ืœื•ืœ API ืงืจื™ืคื˜ื•ื’ืจืคื™ ื—ื“ืฉ ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก ืื‘ืฅ. ื›ืจื’ืข ืžืชื ื”ืœ ื“ื™ื•ืŸ ืื ื–ื” ืจืขื™ื•ืŸ ื˜ื•ื‘.

ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช

ื™ืชืจื•ืŸ ื”ื‘ื™ืฆื•ืขื™ื ื”ืžืจื‘ื™ (ื‘ื”ืฉื•ื•ืื” ืœ-OpenVPN ื•-IPSec) ื™ื”ื™ื” ืžื•ืจื’ืฉ ื‘ืžืขืจื›ื•ืช ืœื™ื ื•ืงืก, ืžื›ื™ื•ื•ืŸ ืฉ-WireGuard ืžื™ื•ืฉื ื›ืžื•ื“ื•ืœ ืœื™ื‘ื” ืฉื. ื‘ื ื•ืกืฃ, macOS, Android, iOS, FreeBSD ื•-OpenBSD ื ืชืžื›ื•ืช, ืืš ื‘ื”ืŸ WireGuard ืคื•ืขืœ ื‘ืžืจื—ื‘ ื”ืžืฉืชืžืฉ ืขื ื›ืœ ื”ื”ืฉืœื›ื•ืช ื”ื‘ื™ืฆื•ืขื™ื•ืช ื”ื ื’ื–ืจื•ืช ืžื›ืš. ืชืžื™ื›ื” ื‘-Windows ืฆืคื•ื™ื” ืœื”ืชื•ื•ืกืฃ ื‘ืขืชื™ื“ ื”ืงืจื•ื‘.

ืชื•ืฆืื•ืช ื‘ื ืฆ'ืžืจืง ืขื ืืชืจ ืจืฉืžื™:

ื”ืื WireGuard ื”ื•ื ื”-VPN ื”ื’ื“ื•ืœ ืฉืœ ื”ืขืชื™ื“?

ื—ื•ื•ื™ืช ื”ืฉื™ืžื•ืฉ ืฉืœื™

ืื ื™ ืœื ืžื•ืžื—ื” VPN. ืคืขื ื”ืงืžืชื™ ืืช OpenVPN ื‘ืื•ืคืŸ ื™ื“ื ื™ ื•ื–ื” ื”ื™ื” ืžืื•ื“ ืžื™ื™ื’ืข, ื•ืืคื™ืœื• ืœื ื ื™ืกื™ืชื™ IPSec. ื™ืฉ ื™ื•ืชืจ ืžื“ื™ ื”ื—ืœื˜ื•ืช ืœืงื‘ืœ, ืงืœ ืžืื•ื“ ืœื™ืจื•ืช ืœืขืฆืžืš ื‘ืจื’ืœ. ืœื›ืŸ, ืชืžื™ื“ ื”ืฉืชืžืฉืชื™ ื‘ืกืงืจื™ืคื˜ื™ื ืžื•ื›ื ื™ื ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ื”ืฉืจืช.

ืื–, WireGuard, ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœื™, ื”ื•ื ื‘ื“ืจืš ื›ืœืœ ืื™ื“ื™ืืœื™ ืขื‘ื•ืจ ื”ืžืฉืชืžืฉ. ื›ืœ ื”ื”ื—ืœื˜ื•ืช ื‘ืจืžื” ื ืžื•ื›ื” ืžืชืงื‘ืœื•ืช ื‘ืžืคืจื˜, ื›ืš ืฉืชื”ืœื™ืš ื”ื›ื ืช ืชืฉืชื™ืช VPN ื˜ื™ืคื•ืกื™ืช ืœื•ืงื— ื“ืงื•ืช ืกืคื•ืจื•ืช ื‘ืœื‘ื“. ื–ื” ื›ืžืขื˜ ื‘ืœืชื™ ืืคืฉืจื™ ืœืจืžื•ืช ื‘ืชืฆื•ืจื”.

ืชื”ืœื™ืš ื”ื”ืชืงื ื” ืžืชื•ืืจ ื‘ืคื™ืจื•ื˜ ื‘ืืชืจ ื”ืจืฉืžื™, ืื ื™ ืจื•ืฆื” ืœืฆื™ื™ืŸ ื‘ื ืคืจื“ ืืช ื”ืžืฆื•ื™ืŸ ืชืžื™ื›ื” ื‘-OpenWRT.

ืžืคืชื—ื•ืช ื”ืฆืคื ื” ื ื•ืฆืจื™ื ืขืœ ื™ื“ื™ ื›ืœื™ ื”ืฉื™ืจื•ืช wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

ืœืื—ืจ ืžื›ืŸ, ืขืœื™ืš ืœื™ืฆื•ืจ ืชืฆื•ืจืช ืฉืจืช /etc/wireguard/wg0.conf ืขื ื”ืชื•ื›ืŸ ื”ื‘ื:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

ื•ืœื”ืจื™ื ืืช ื”ืžื ื”ืจื” ืขื ืชืกืจื™ื˜ wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

ื‘ืžืขืจื›ื•ืช ืขื systemd ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื–ื” ื‘ืžืงื•ื sudo systemctl start [email protected].

ื‘ืžื—ืฉื‘ ื”ืœืงื•ื—, ืฆื•ืจ ืชืฆื•ืจื” /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # ะ’ะฝะตัˆะฝะธะน IP ัะตั€ะฒะตั€ะฐ
PersistentKeepalive = 25 

ื•ืœื”ืจื™ื ืืช ื”ืžื ื”ืจื” ื‘ืื•ืชื• ืื•ืคืŸ:

sudo wg-quick up /etc/wireguard/wg0.conf

ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ื’ื“ื™ืจ ืืช ื”-NAT ื‘ืฉืจืช ื›ืš ืฉืœืงื•ื—ื•ืช ื™ื•ื›ืœื• ืœื’ืฉืช ืœืื™ื ื˜ืจื ื˜, ื•ืกื™ื™ืžืช!

ืงืœื•ืช ื”ืฉื™ืžื•ืฉ ื•ื”ืงื•ืžืคืงื˜ื™ื•ืช ื”ื–ื• ืฉืœ ื‘ืกื™ืก ื”ืงื•ื“ ื”ื•ืฉื’ื• ืขืœ ื™ื“ื™ ื‘ื™ื˜ื•ืœ ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ื”ืคืฆื” ื”ืžืจื›ื–ื™ืช. ืื™ืŸ ืžืขืจื›ืช ืื™ืฉื•ืจื™ื ืžื•ืจื›ื‘ืช ื•ื›ืœ ื”ื–ื•ื•ืขื” ื”ืืจื’ื•ื ื™ืช ื”ื–ื•; ืžืคืชื—ื•ืช ื”ืฆืคื ื” ืงืฆืจื™ื ืžื•ืคืฆื™ื ื‘ื“ื•ืžื” ืœืžืคืชื—ื•ืช SSH. ืื‘ืœ ื–ื” ืžืฆื™ื‘ ื‘ืขื™ื”: WireGuard ืœื ื™ื”ื™ื” ื›ืœ ื›ืš ืงืœ ืœื™ื™ืฉื•ื ืขืœ ื›ืžื” ืจืฉืชื•ืช ืงื™ื™ืžื•ืช.

ื‘ื™ืŸ ื”ื—ืกืจื•ื ื•ืช, ืจืื•ื™ ืœืฆื™ื™ืŸ ืฉ-WireGuard ืœื ื™ืขื‘ื•ื“ ื‘ืืžืฆืขื•ืช ืคืจื•ืงืกื™ HTTP, ืžื›ื™ื•ื•ืŸ ืฉืจืง ืคืจื•ื˜ื•ืงื•ืœ UDP ื–ืžื™ืŸ ื›ืชื—ื‘ื•ืจื”. ื ืฉืืœืช ื”ืฉืืœื”: ื”ืื ื ื™ืชืŸ ื™ื”ื™ื” ืœื˜ืฉื˜ืฉ ืืช ื”ืคืจื•ื˜ื•ืงื•ืœ? ื›ืžื•ื‘ืŸ ืฉื–ื• ืœื ื”ืžืฉื™ืžื” ื”ื™ืฉื™ืจื” ืฉืœ VPN, ืื‘ืœ ืขื‘ื•ืจ OpenVPN, ืœืžืฉืœ, ื™ืฉ ื“ืจื›ื™ื ืœื”ืชื—ืคืฉ ืœ-HTTPS, ืžื” ืฉืขื•ื–ืจ ืœืชื•ืฉื‘ื™ ืžื“ื™ื ื•ืช ื˜ื•ื˜ืœื™ื˜ืจื™ื•ืช ืœื”ืฉืชืžืฉ ื‘ืžืœื•ืื• ื‘ืื™ื ื˜ืจื ื˜.

ืžืžืฆืื™ื

ืœืกื™ื›ื•ื, ืžื“ื•ื‘ืจ ื‘ืคืจื•ื™ืงื˜ ืžืื•ื“ ืžืขื ื™ื™ืŸ ื•ืžื‘ื˜ื™ื—, ืืชื” ื›ื‘ืจ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืฉืจืชื™ื ืื™ืฉื™ื™ื. ืžื” ื”ืจื•ื•ื—? ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื‘ืžืขืจื›ื•ืช ืœื™ื ื•ืงืก, ืงืœื•ืช ื”ื’ื“ืจื” ื•ืชืžื™ื›ื”, ื‘ืกื™ืก ืงื•ื“ ืงื•ืžืคืงื˜ื™ ื•ืงืจื™ื. ืขื ื–ืืช, ืžื•ืงื“ื ืžื“ื™ ืœืžื”ืจ ืœื”ืขื‘ื™ืจ ืชืฉืชื™ืช ืžื•ืจื›ื‘ืช ืœ-WireGuard; ื›ื“ืื™ ืœื—ื›ื•ืช ืœื”ื›ืœืœืชื” ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก.

ื›ื“ื™ ืœื—ืกื•ืš ืืช ื”ื–ืžืŸ ืฉืœื™ (ื•ื’ื ืฉืœืš), ืคื™ืชื—ืชื™ ืžืชืงื™ืŸ WireGuard ืื•ื˜ื•ืžื˜ื™. ื‘ืขื–ืจืชื•, ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ VPN ืื™ืฉื™ ืขื‘ื•ืจ ืขืฆืžืš ื•ืขื‘ื•ืจ ื—ื‘ืจื™ืš ืžื‘ืœื™ ืœื”ื‘ื™ืŸ ื“ื‘ืจ ืขืœ ื›ืš.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”