рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рдХреЗ рдмрд╛рдж рд╕реЗ
╨Ю╨▒╨╛╤А╤Г╨┤╨╛╨▓╨░╨╜╨╕╨╡
- рдПрд▓рдЯреАрдИ рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдХреЗ рд╕рд╛рде рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 3ред рд╡рд╣рд╛рдБ рдПрдХ рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рд╣реЛрдЧрд╛ (рдЗрд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдПрдЬрд╡реЙрдХрд░)
- рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдлрд╝реЛрди рдЬрд┐рд╕реЗ рд╕рднреА рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡реАрдкреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
- рд▓рд┐рдирдХреНрд╕ рд▓реИрдкрдЯреЙрдк рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдВрджрд░ рд╡реАрдкреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рд╡реАрдкреАрдПрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╣рд░ рджреВрд╕рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рджреЛрдиреЛрдВ рдбрд┐рд╡рд╛рдЗрд╕ рд╡реАрдкреАрдПрди рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ рддреЛ рдПрдХ рдлреЛрди рдХреЛ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╕реЗрдЯрдЕрдк рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рддреЛ рдЖрдк рд╡реАрдкреАрдПрди рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк (рдИрдерд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд╛рдпрд░реНрдб рдФрд░ рд╡рд╛рдпрд░рд▓реЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕рдордп рдХреЗ рд╕рд╛рде рдХрдо рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ (
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛
рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рдореЗрд░реЗ рдкрд╛рд╕ рдирд╡реАрдирддрдо рдлреЗрдбреЛрд░рд╛ рд▓рд┐рдирдХреНрд╕ 31 рд╣реИ рдФрд░ рдореИрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреБрдЕрд▓ рдкрдврд╝рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛ред рдЕрднреА-рдЕрднреА рдкреИрдХреЗрдЬ рдорд┐рд▓реЗ wireguard-tools
, рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ рдХреБрдЫ рднреА рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдерд╛ wireguard-dkms
(рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде), рдФрд░ рдпрд╣ рдореЗрд░реЗ рд╡рд┐рддрд░рдг рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред
рдпрджрд┐ рдореИрдВрдиреЗ рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝реЗ рд╣реЛрддреЗ, рддреЛ рдореИрдВ рд╕рд╣реА рдХрджрдо рдЙрдард╛рддрд╛:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
рдореЗрд░реЗ рдкрд╛рд╕ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рд░рд╛рд╕реНрдкрдмрд┐рдпрди рдмрд╕реНрдЯрд░ рд╡рд┐рддрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд╡рд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреИрдХреЗрдЬ рд╣реИ wireguard
, рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЛ:
$ sudo apt install wireguard
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдкрд░ рдРрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛
рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рдиреЛрдбреНрд╕ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рд╡реАрдкреАрдПрди рдиреЛрдбреНрд╕ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдирд┐рдЬреА/рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реАрдкреАрдПрди рдХреБрдВрдЬреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$ 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
рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рддреАрди рдкреНрд░рдореБрдЦ рдЬреЛрдбрд╝реЗ (рдЫрд╣ рдлрд╝рд╛рдЗрд▓реЗрдВ) рдорд┐рд▓рддреА рд╣реИрдВред рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдВрдЧреЗ: рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдмреЗрд╕ 64 рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИред
рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ (рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ)
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдореИрдВрдиреЗ рдирд┐рдореНрди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рд╣реИ /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
рдХреБрдЫ рдиреЛрдЯреНрд╕:
- рдЙрдЪрд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЖрдкрдХреЛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдореЗрд░рд╛ рд╡реАрдкреАрдПрди рдЖрдВрддрд░рд┐рдХ рд░реЗрдВрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ
10.200.200.0/24
- рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП
PostUp
/PostDown
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рд╣рд░реА рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ wwan0 рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, eth0)
рд╡реАрдкреАрдПрди рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
$ sudo wg-quick up wg0
рдПрдХ рдЫреЛрдЯрд╛ рд╡рд┐рд╡рд░рдг: DNS рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ dnsmasq
рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ br0
, рдореИрдВрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рднреА рдЬреЛрдбрд╝реЗ wg0
рдЕрдиреБрдордд рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВред Dnsmasq рдореЗрдВ, рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ /etc/dnsmasq.conf
, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
interface=br0
interface=wg0
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рд╢реНрд░рд╡рдг рдпреВрдбреАрдкреА рдкреЛрд░реНрдЯ (51280) рдкрд░ рдпрд╛рддрд╛рдпрд╛рдд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдкреАрдЯреЗрдмрд▓ рдирд┐рдпрдо рдЬреЛрдбрд╝рд╛:
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
рдЕрдм рдЬрдмрдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдо рд╡реАрдкреАрдПрди рд╕реБрд░рдВрдЧ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдиреНрдЪ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ 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
рдиреЛрдЯ:
- рдПрдЬрд╡реЙрдХрд░ рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдпрд╛ рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рд╣реЛрд╕реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
- рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдХреЗ
AllowedIPs
рдкрд░10.200.200.0/24
, рд╣рдо рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдкреАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреНрдп рд╕рднреА рдЖрдИрдкреА рдкрддреЗ/рд╕рд░реНрд╡рд░ рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ "рдирд┐рдпрдорд┐рдд" рдЦреБрд▓реЗ рдЪреИрдирд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред рд▓реИрдкрдЯреЙрдк рдкрд░ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ 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
рд▓реИрдкрдЯреЙрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлрд╝реЛрди рдХреЛ рд╣рдорд╛рд░реЗ рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдкрдиреЗ рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП DNS
), рд╕рд╛рде рд╣реА рд╕рднреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╡реАрдкреАрдПрди рд╕реБрд░рдВрдЧ рд╕реЗ рдЧреБрдЬрд╛рд░реЗрдВ (AllowedIPs = 0.0.0.0/0
).
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЗрд╕реЗ QR рдХреЛрдб рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR рдХреЛрдб ASCII рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╡реАрдкреАрдПрди рдРрдк рд╕реЗ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡реАрдкреАрдПрди рдЯрдирд▓ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрддреНрдкрд╛рджрди
рдУрдкрдирд╡реАрдкреАрдПрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЬрд╛рджреБрдИ рд╣реИред
рд╕реНрд░реЛрдд: www.habr.com