рдХрд┐рдирднрдиреЗ WireGuard
рдЙрдкрдХрд░рдг
- Raspberry Pi 3 LTE рдореЛрдбреНрдпреБрд▓ рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдареЗрдЧрд╛рдирд╛рдХреЛ рд╕рд╛рдеред рдпрд╣рд╛рдБ рдПрдХ VPN рд╕рд░реНрднрд░ рд╣реБрдиреЗрдЫ (рдпрд╕рдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рднрдирд┐рдиреНрдЫ рдкрд╛рдардорд╛ edgewalker)
- рдПрдЙрдЯрд╛ рдПрдиреНрдбреНрд░реЛрдЗрдб рдлреЛрди рдЬрд╕рд▓реЗ рд╕рдмреИ рд╕рдЮреНрдЪрд╛рд░рдХрд╛ рд▓рд╛рдЧрд┐ VPN рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ
- Linux рд▓реНрдпрд╛рдкрдЯрдк рдЬрд╕рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рднрд┐рддреНрд░ VPN рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ
VPN рдорд╛ рдЬрдбрд╛рди рд╣реБрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдпрдиреНрддреНрд░ рдЕрдиреНрдп рд╕рдмреИ рдпрдиреНрддреНрд░рд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рджреБрдмреИ рдпрдиреНрддреНрд░рд╣рд░реВ VPN рдиреЗрдЯрд╡рд░реНрдХрдХреЛ рднрд╛рдЧ рд╣реБрдиреН рднрдиреЗ рдлреЛрдирд▓реЗ рд▓реНрдпрд╛рдкрдЯрдкрдорд╛ рд╡реЗрдм рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрджрдЫред рдпрджрд┐ рд╕реЗрдЯрдЕрдк рдПрдХрджрдо рд╕рд░рд▓ рднрдпреЛ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдбреЗрд╕реНрдХрдЯрдкрд▓рд╛рдИ VPN (рдЗрдерд░рдиреЗрдЯ рдорд╛рд░реНрдлрдд) рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рддрд╛рд░ рд░ рддрд╛рд░рд░рд╣рд┐рдд рдЬрдбрд╛рдирд╣рд░реВ рд╕рдордпрд╕рдБрдЧреИ рдХрдо рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реБрдБрджреИ рдЧрдЗрд░рд╣реЗрдХрд╛ рдЫрдиреН рднрдиреНрдиреЗ рдХреБрд░рд╛рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ (
рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛
WireGuard рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ
рдорд╕рдБрдЧ рдирд╡реАрдирддрдо рдлреЗрдбреЛрд░рд╛ рд▓рд┐рдирдХреНрд╕ 31 рдЫ, рд░ рдо рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдореНрдпрд╛рдиреБрдЕрд▓ рдкрдвреНрди рдзреЗрд░реИ рдЕрд▓реНрдЫреА рдерд┐рдПрдБред рднрд░реНрдЦрд░реИ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реЗ wireguard-tools
, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрд┐рди рдХреЗрд╣рд┐ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреИрди рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреЗрдиред рдердк рдЕрдиреБрд╕рдиреНрдзрд╛рдирд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреЛ рдХрд┐ рдорд╕рдБрдЧ рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдЫреИрди wireguard-dkms
(рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЪрд╛рд▓рдХ рд╕рдВрдЧ), рддрд░ рдпреЛ рдореЗрд░реЛ рд╡рд┐рддрд░рдг рдХреЛ рднрдгреНрдбрд╛рд░ рдорд╛ рдерд┐рдПрдиред
рдпрджрд┐ рдореИрд▓реЗ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрдвреЗрдХреЛ рднрдП, рдореИрд▓реЗ рд╕рд╣реА рдХрджрдо рдЪрд╛рд▓реНрдиреЗ рдерд┐рдПрдБ:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
рдорд╕рдБрдЧ рдореЗрд░реЛ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИрдорд╛ рд░рд╛рд╕реНрдкрдмрд┐рдпрди рдмрд╕реНрдЯрд░ рд╡рд┐рддрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдЫ, рддреНрдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрдпрд╛рдХреЗрдЬ рдЫ wireguard
, рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
$ sudo apt install wireguard
рдореЗрд░реЛ рдПрдиреНрдбреНрд░реЛрдЗрдб рдлреЛрдирдорд╛ рдореИрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реЗрдВ
рдХреБрдЮреНрдЬреАрд╣рд░реВрдХреЛ рд╕реНрдерд╛рдкрдирд╛
рд╕рд╛рдереА рдкреНрд░рдорд╛рдгреАрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Wireguard рд▓реЗ VPN рд╕рд╛рдереАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдирд┐рдЬреА/рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдЮреНрдЬреА рдпреЛрдЬрдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдЬрд┐рд▓реИ VPN рдХреБрдЮреНрдЬреАрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
$ 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
рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рддреАрди рдХреБрдЮреНрдЬреА рдЬреЛрдбреАрд╣рд░реВ (рдЫ рдлрд╛рдЗрд▓рд╣рд░реВ) рджрд┐рдиреНрдЫред рдХрдиреНрдлрд┐рдЧрдорд╛ рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдирдЧрд░реМрдВ, рддрд░ рдпрд╣рд╛рдБ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН: рдкреНрд░рддреНрдпреЗрдХ рдХреБрдЮреНрдЬреА base64 рдорд╛ рдПрдХ рд▓рд╛рдЗрди рд╣реЛред
VPN рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ (рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ)
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдПрдХрджрдо рд╕рд░рд▓ рдЫ, рдореИрд▓реЗ рдирд┐рдореНрди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдВ /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
рдХреЗрд╣рд┐ рдиреЛрдЯрд╣рд░реВ:
- рдЙрдкрдпреБрдХреНрдд рдард╛рдЙрдБрд╣рд░реВрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдЮреНрдЬреАрд╣рд░реВрд╕рдБрдЧ рдлрд╛рдЗрд▓рд╣рд░реВрдмрд╛рдЯ рд▓рд╛рдЗрдирд╣рд░реВ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
- рдореЗрд░реЛ VPN рд▓реЗ рдЖрдиреНрддрд░рд┐рдХ рдмреНрдпрд╛рдиреНрдб рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ
10.200.200.0/24
- рдЯреЛрд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐
PostUp
/PostDown
рдорд╕рдБрдЧ рдмрд╛рд╣реНрдп рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ wwan0 рдЫ, рддрдкрд╛рдИрдВрд╕рдБрдЧ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, eth0)
VPN рдиреЗрдЯрд╡рд░реНрдХ рд╕рдЬрд┐рд▓реИ рд╕рдВрдЧ рдирд┐рдореНрди рдЖрджреЗрд╢ рд╕рдВрдЧ рдЙрдард╛рдЗрдПрдХреЛ рдЫ:
$ sudo wg-quick up wg0
рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рд╡рд┐рд╡рд░рдг: рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ DNS рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ dnsmasq
рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╕рдБрдЧ рдЬреЛрдбрд┐рдПрдХреЛ рдЫ br0
, рдореИрд▓реЗ рдпрдиреНрддреНрд░рд╣рд░реВ рдкрдирд┐ рдердкреЗрдВ wg0
рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдорд╛ред dnsmasq рдорд╛ рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рдорд╛ рдирдпрд╛рдБ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд▓рд╛рдЗрди рдердкреЗрд░ рдЧрд░рд┐рдиреНрдЫ /etc/dnsmasq.conf
, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
interface=br0
interface=wg0
рдердк рд░реВрдкрдорд╛, рдореИрд▓реЗ UDP рд╕реБрдиреНрдиреЗ рдкреЛрд░реНрдЯ (51280) рдорд╛ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдирдХреЛ рд▓рд╛рдЧрд┐ iptable рдирд┐рдпрдо рдердкреЗрдХреЛ рдЫреБ:
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
рдЕрдм рдЬрдм рд╕рдмреИ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рд╣рд╛рдореА VPN рдЯрдиреЗрд▓рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реБрд░реБрд╡рд╛рдд рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ:
$ sudo systemctl enable [email protected]
рд▓реНрдпрд╛рдкрдЯрдкрдорд╛ рдЧреНрд░рд╛рд╣рдХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди
рд▓реНрдпрд╛рдкрдЯрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН /etc/wireguard/wg0.conf
рд╕рдорд╛рди рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ:
[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
рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ:
- Edgewalker рдХреЛ рд╕рдЯреНрдЯрд╛ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рд╡рд╛ VPN рд╕рд░реНрднрд░ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
- рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫрдиреН
AllowedIPs
рдорд╛10.200.200.0/24
, рд╣рд╛рдореА рдХреЗрд╡рд▓ рдЖрдиреНрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд╣реБрдБрдЪ рдЧрд░реНрди VPN рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред рдЕрдиреНрдп рд╕рдмреИ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ/рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ "рд╕рд╛рдорд╛рдиреНрдп" рдЦреБрд▓рд╛ рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рд░реА рд░рд╣рдиреЗрдЫред рдпрд╕рд▓реЗ рд▓реНрдпрд╛рдкрдЯрдкрдорд╛ рдкреВрд░реНрд╡ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ DNS рд╕рд░реНрднрд░ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫред
рдкрд░реАрдХреНрд╖рдг рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реБрд░реБрд╡рд╛рддрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рд╕рдорд╛рди рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВ wg-quick
╨╕ systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
рдПрдиреНрдбреНрд░реЛрдЗрдб рдлреЛрдирдорд╛ рдЧреНрд░рд╛рд╣рдХ рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ
рдПрдиреНрдбреНрд░реЛрдЗрдб рдлреЛрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдзреЗрд░реИ рд╕рдорд╛рди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ (рдпрд╕рд▓рд╛рдИ рдХрд▓ рдЧрд░реМрдВ 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
рд▓реНрдпрд╛рдкрдЯрдкрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╡рд┐рдкрд░реАрдд, рдлреЛрдирд▓реЗ рд╣рд╛рдореНрд░реЛ VPN рд╕рд░реНрднрд░рд▓рд╛рдИ DNS рд╕рд░реНрднрд░рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ (рд▓рд╛рдЗрди DNS
), рд░ VPN рд╕реБрд░реБрдЩ рдорд╛рд░реНрдлрдд рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХ рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН (AllowedIPs = 0.0.0.0/0
).
рдЖрдлреНрдиреЛ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгрдорд╛ рдлрд╛рдЗрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ QR рдХреЛрдбрдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR рдХреЛрдб ASCII рдХреЛ рд░реВрдкрдорд╛ рдХрдиреНрд╕реЛрд▓рдорд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдиреЗрдЫред рдпрд╕рд▓рд╛рдИ рдПрдиреНрдбреНрд░реЛрдЗрдб VPN рдПрдкрдмрд╛рдЯ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ VPN рд╕реБрд░реБрдЩ рд╕реЗрдЯрдЕрдк рд╣реБрдиреЗрдЫред
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
OpenVPN рдХреЛ рддреБрд▓рдирд╛рдорд╛ WireGuard рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБ рдХреЗрд╡рд▓ рдЬрд╛рджреБрдИ рдЫред
рд╕реНрд░реЛрдд: www.habr.com