OpenVPN рдФрд░ рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЗ рдмрд┐рдирд╛ Kerberos)

рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рд╣рд┐рдд OpenVPN рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧрд╛рдЗрдб рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрд▓рдбреАрдПрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдХреЗрд░реНрдмрд░реЛрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬреЛ рдХрд┐ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣рд╛рдВ рдХреБрдЫ рдирдпрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдореИрдВрдиреЗ рдЕрднреА рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреАрдПрдПрдо рдХрд░реНрдмреЗрд░реЛрд╕ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдУрдкрдирд╡реАрдкреАрдПрди рдореЗрдВ рдПрдХ рджреЗрд╢реА рдкреАрдПрдПрдо рдкреНрд▓рдЧрдЗрди рд╣реИред рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдФрд░ рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рднреА рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╡реЗ рдмрд╕ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдЬрд╛рд░реА рдХрд░реЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдкрд╛рдпрд╛ рдЧрдпрд╛ рдЬреЛ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рдПрдирдПрд╕рдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд╛


рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ sssd рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ Centos 7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдВрдбрдмрд╛рдЗрдВрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдбреЛрдореЗрди рдореЗрдВ рдПрдХ рдХрд╛рд░ рдФрд░ рдПрдХ рдХреЗрд░реНрдмрд░реЛрд╕ рдЯрд┐рдХрдЯ рд╣реИред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдЪреНрдЫреЗ рдореИрдиреБрдЕрд▓ рд╣реИрдВред

рдпрджрд┐ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ /etc/nsswitch.conf рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдХрд┐рд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдХреНрд░рдорд╢рдГ рдореЙрдбреНрдпреВрд▓_рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп sss рдпрд╛ winbind рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рд╡рд░рдг man nsswitch.conf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:

 passwd: files module_name shadow: files module_name group: files module_name 

Sssd рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рднреВрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐ /etc/sssd/sssd.conf рдореЗрдВ [sssd] рдмреНрд▓реЙрдХ рдореЗрдВ, nss рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 services = nss, pam 

Winbind рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдорд╢реАрди рдбреЛрдореЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рдореВрд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИ:

 > getent passwd kanlas kanlas:*:14123583:1257570:Kanlas Kanlasovich:/home/kanlas@example.com:/bin/bash > getent group VPN vpn:*:13821391:kanlas,igor,marina 

рдЯрд┐рдкреНрдкрдгреА
рдпрджрд┐ рдЖрдкрдиреЗ sssd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЗрд╡рд▓ рдкреВрд░реНрдг рдирд╛рдо (рдЕрд░реНрдерд╛рдд kanlas@example.com) рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЛрдореЗрди рдмреНрд▓реЙрдХ рдореЗрдВ sssd.conf рдореЗрдВ use_fully_qualified_names = False рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВред

PAM рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рдЕрдм рдЖрдкрдХреЛ рдЕрдкрдирд╛ PAM рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП редconf, рд╣рдо рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд╣рд╛рдБ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдЧреНрд░реБрдк рдХреЛ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ PAM рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдиреАрдЪреЗ рджреА рдЧрдИ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдХреЗрд╡рд▓ account required pam_listfile.so onerr=fail item=group sense=allow file=/etc/openvpn/auth/access-groups рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ account required pam_listfile.so onerr=fail item=group sense=allow file=/etc/openvpn/auth/access-groups ред

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧрд┐рди рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдирд╛ред рдЬреЛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

 #%PAM-1.0 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth substack system-auth auth include postlogin account required pam_listfile.so onerr=fail item=group sense=allow file=/etc/openvpn/auth/access-groups account include system-auth password include system-auth session required pam_selinux.so close session required pam_loginuid.so session optional pam_console.so session required pam_selinux.so open session required pam_namespace.so session optional pam_keyinit.so force revoke session include system-auth session include postlogin -session optional pam_ck_connector.so 

рд╣рдордиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рдирд╛рдо /etc/pam.d рд╣реБрдП /etc/pam.d рдореЗрдВ рдбрд╛рд▓рд╛ред

рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ /etc/openvpn/auth/access-groups , рдПрдХреНрд╕реЗрд╕ рдЧреНрд░реБрдк рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рд╕рдореВрд╣ (рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдо) рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдкрд░ VPN@example.com рд▓рд┐рдЦрд╛ рд╣реИред

рдпрд╣ OpenVPN рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдХрд┐ рдЗрд╕реЗ PAM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд╛рд▓рддреЗ рд╣реИрдВ:

 plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so __pam username-as-common-name 

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рддрд░рдг рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рд╕реНрддреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ! рдкрде рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрд╛ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдирд╛рдо-рдЖрдо-рдирд╛рдо рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдиреНрдпрдерд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдСрд░реНрдЯ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рд╕рд░реНрд╡рд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ

 auth-user-pass 

рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбреЛрдореЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмреЗрдХрд╛рд░ рд╣реИ, рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░реНрдгрдп рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЛрдмрд╛рдЗрд▓ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдмрд╕ рдРрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛, рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд╛рд▓реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдХреЛрд╕ рд░рд╣реЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЙрд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рдкрдбрд╝реЗред

 verify-client-cert none 

рдЕрдЧрд▓рд╛, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ

 setenv CLIENT_CERT 0 

рдпрд╣реА рд╣реИ, рдЕрдм рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рд╢рдкрде рдирд╣реАрдВ рд▓реЗрдВрдЧреЗред рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдХрд▓реНрдк iOS рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢реНрди рдФрд░ рдЙрддреНрддрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рдореИрдВрдиреЗ рдЖрдИрдУрдПрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб, рд╕рд╛рде рд╣реА рд╕рд╛рде рдореИрдХрдУрдПрд╕ ( рдмреАрдЯрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ ) рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред Android рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ OpenVPN рдХреНрд▓рд╛рдЗрдВрдЯ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдЬрдм рддрдХ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рдереЗ)ред

Source: https://habr.com/ru/post/hi469583/


All Articles