OpenVPN, рдЗрд╕ рд╢рдмреНрдж рдореЗрдВ рдХрд┐рддрдирд╛ред рдПрдХ рдмрд╣реБ-рдордВрдЪ, рд▓рдЪреАрд▓реЗ рд░реВрдк рд╕реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп, рдореБрдХреНрдд рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлреИрдХреНрдЯреЛ рдорд╛рдирдХ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ HOW-TOs рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рд▓реЗрдХрд┐рди OpenVPN рдЗрддрдирд╛ рд╕рд░рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ? рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдУрдкрдирд╡реАрдкреАрдПрди рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдЖрдВрдЦреЛрдВ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рдЬреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред
OpenVPN рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб рдпрд╛ рд░реЗрдбреА-рдЯреВ-рдЗрдВрд╕реНрдЯреЙрд▓ рд╕рдВрдХрд▓рд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред OpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ, рдЖрдВрддрд░рд┐рдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдЬреА рдпрд╛ рдирд┐рдЬреА / рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдорд▓реНрдЯреАрдкреЙрдЗрдВрдЯ-рдЯреВ-рд╕рд┐рдВрдЧрд▓рдкреЙрдЗрдВрдЯ рдореЛрдб рдореЗрдВ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреАрдХреЗрдЖрдИ рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЖрд╕рд╛рди- рдЖрд░рдПрдПрд╕рдП рдпрд╛ рдПрдХреНрд╕рд╕реАрдП- рдЖрдзрд╛рд░рд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ ред рдкреЙрдЗрдВрдЯ-рдЯреВ-рдкреЙрдЗрдВрдЯ рдЗрдВрдЯрд░-рд╕рд░реНрд╡рд░ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдЭрд╛-рдХреБрдВрдЬреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреБрдирд┐рдпрд╛рджреА, рдкреНрд░рд╕рд┐рджреНрдз рддрдВрддреНрд░ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВред
рдкреНрд░рдореБрдЦ рддрдВрддреНрд░ рдФрд░ рдХреНрд╖рдорддрд╛рдПрдВ
рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдд рд╕рд░рд▓ рд╣реИред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдорджрдж рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдУрдкрди рд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд┐рд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣реБрдВрдЪ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИред рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдирд┐рдЬреА рдХреБрдВрдЬреА, рдЖрдВрддрд░рд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирдзрд┐рдХреГрдд рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
рдирд┐рдЬреА рдмрд┐рдВрджреБ рд╕реЗ рдмрд┐рдВрджреБ рдХреБрдВрдЬреА
рдХреЗрд╡рд▓ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рд╕рд░реНрд╡рд░ рдХреЛ рдХрдВрдкрдиреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдЬрдмрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдПрдХ рдХреБрдВрдЬреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ "рд╣реИрдВрдбрд╢реЗрдХ" рд╣реИрдВрдбрд╢реЗрдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдбрд┐рдлреА-рд╣реЗрд▓рдореИрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ PKI рдХреЗ рд╕рд╛рде рдпреЛрдЬрдирд╛ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдбреЛрдореЗрди рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдпреЛрдЬрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдФрд░ рд╣рд╛рд░реНрдбрдирд┐рдВрдЧ рдУрдкреЗрдВрд╡рд┐рдкреА рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА рдкреИрдХреЗрдЯ рд╕рд╛рдЗрдирд┐рдВрдЧ рдХреАрдЬ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрджрд╛рд╣рд░рдг
dev tun proto udp # IP OpenVPN remote 172.16.111.166 # Port port 1200 client resolv-retry infinite tls-client key-direction 1 auth SHA1 cipher BF-CBC #comp-lzo persist-key persist-tun # auth-user-pass c:/temp/pass.txt # # just create a file with name pass.txt # and put to it two lines # ------------- #username #password # ------------- #auth-user-pass verb 3 <ca> -----BEGIN CERTIFICATE----- MIIE5jCCA86gAwIBAgIJAOt3kFH7PxA0MA0GCSqGSIb3DQEBCwUAMIGjMQswCQYD .... -----END CERTIFICATE----- </ca> <tls-auth> -----BEGIN OpenVPN Static key V1----- 83ddd29fa82212f3059d85a41490134c .... a4f2c7df3a22364a49093bca102dedeb -----END OpenVPN Static key V1----- </tls-auth>
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛
рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
verify-client-cert none #client-cert-not-required username-as-common-name tls-server tls-auth /usr/local/etc/openvpn/ssl/tlsauth.key key-direction 0 tls-timeout 120 auth SHA1 cipher BF-CBC auth-user-pass-verify /usr/local/etc/openvpn/auth/auth-static-file.pl via-file
рдпрд╣ рдпреЛрдЬрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рдкреАрдПрдПрдо
рд╕реБрд░рдХреНрд╖рд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рд╣рд░реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдЖрдо рддрд░реАрдХрд╛ рд╕рд┐рд╕реНрдЯрдо PAM (рдкреНрд▓рдЧрдЧреЗрдЬ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдореЙрдбреНрдпреВрд▓реНрд╕) рд╣реИред
OpenVPN рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login
рдорд╛рд░реНрдЧ
рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рджреВрд░рд╕реНрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / рд╕рд░реНрд╡рд░ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рддрдХ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рд╕реНрдерд┐рд░ рдорд╛рд░реНрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдВрддрд░рд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдбреАрдПрдЪрд╕реАрдкреА рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ "рд░реВрдЯ" рдпрд╛ "рдкреБрд╢ рд░реВрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рджреВрд░рд╕реНрде рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд┐рдЧрд░ рдбреАрдЖрдИрдЖрд░" (рд╕реАрд╕реАрдбреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдРрд╕рд╛ рддрдВрддреНрд░ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЗрд░рд╛рдЙрдЯ" рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд░реВрдЯрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ "рдирд┐рдпрдорд┐рдд" рдкрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЕрдиреБрдХреВрд▓рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд OpenVPN рд╕реБрд╡рд┐рдзрд╛рдПрдБ
OpenVPN рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдХрд┐рд╕реА рдиреЗ рд╕реБрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрд╛ рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдиреЗрдЯрд╡рд░реНрдХ рд╕реБрд░рдХреНрд╖рд╛ / рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ
рдХреНрдпреЛрдВрдХрд┐ рдУрдкрдирд╡реАрдкреАрдПрди рдорд╛рд░реНрдЧ рдпрд╛рддрд╛рдпрд╛рдд, рдЗрд╕рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЗ рджреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдирдиреНрдп рдЕрдирдиреНрдп рдореЛрдб рд╣реИрдВред рдкрд╣рд▓рд╛ рдореЛрдб рдУрдкрдирд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдВрджрд░ рд░реВрдЯрд┐рдВрдЧ рд╣реИ, рджреВрд╕рд░рд╛ рдореЛрдб рдЗрдВрдЯрд░-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдиреНрдпреВрдХреНрд▓рд┐рдпрд░ рд░реВрдЯрд┐рдВрдЧ рд╣реИред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, OpenVPN рдХреНрд▓рд╛рдЗрдВрдЯ / рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмреАрдЪ рдкреИрдХреЗрдЯ рдХреЛ рд╕реНрд╡рд┐рдЪ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реЛрд╕реНрдЯ (pf, iptables, рдЖрджрд┐) рдкрд░ рд╕рдорд░реНрдерд┐рдд рдХреЛрдИ рднреА рд╕рд┐рд╕реНрдЯрдо рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ред
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдУрдкрдирд╡реАрдкреАрдПрди рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдпрд╛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╣рд╛рдБ, рд╣рд╛рдБред рдЖрдк рдЗрд╕реЗ рд╕рд╣реА рдкрдврд╝реЗрдВред OpenVPN рдХрд╛ рдЕрдкрдирд╛ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИред рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ 2010 рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
OpenVPN рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдпрд╛ рддреЛ рдкреНрд░рдмрдВрдзрди-рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ OpenVPN рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдЯреНрд░реИрдлрд╝рд┐рдХ рдирд┐рдпрдореЛрдВ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рд╕рд░рд▓ рд╣реИред
[CLIENTS DROP|ACCEPT] {+|-}common_name1 {+|-}common_name2 . . . [SUBNETS DROP|ACCEPT] {+|-}subnet1 {+|-}subnet2 . . . [END]
рдмреНрд▓реЙрдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ (ACCEPT / DENY) рдиреЗ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ user2 рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓
[CLIENTS DROP] +user1 [SUBNETS DROP] [END]
рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХреЛрдВ рдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рд░реЛрдХ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ 1 рдкрдХреНрд╖ рдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрджрд┐ user1 рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ user2 рдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗрд╡рд▓ рдПрдХ рджрд┐рд╢рд╛ user2-> user1 рдореЗрдВ рдЬрд╛рдПрдЧрд╛ред
рдпрд╛ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдгред
рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ DNS рд╕рд░реНрд╡рд░ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ 192.168.0.0/24 рдкрд░ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрдХрд┐рдЯ рдХреЗ рдмреАрдЪ рдкрд╣реБрдВрдЪ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
[CLIENTS DROP] +user1 +user2 [SUBNETS DROP] +10.150.0.1 +10.150.1.1 +192.168.0.0/24 [END]
рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рддрдВрддреНрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рдЬреЛ "рдЭрдВрдбрд╛" рдХреЛ "OPENVPN_PLUGIN_ENABLE_PF" рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред
рдЯреНрд░реИрдлрд╝рд┐рдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рджреВрд╕рд░рд╛ рдореЛрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИред рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ "рдХреНрд▓рд╛рдЗрдВрдЯ-рдЯреВ-рдХреНрд▓рд╛рдЗрдВрдЯ" рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЛ рдХрдиреЗрдХреНрдЯ / рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдореЛрдВ рдХреЗ рдСрди / рдСрдл рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡реЗрд╖рдг рдХреЛ рдирд┐рдпрдореЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдпрд╛ рддреЛ Iptables (рд▓рд┐рдирдХреНрд╕) рдореЗрдВ CHAINS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ PF (FreeBSD) рдореЗрдВ рдПрдВрдХрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдпрдореЛрдВ рдХрд╛ рд╕рдХреНрд░рд┐рдпрдг / рдирд┐рд╖реНрдХреНрд░рд┐рдпрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рдХрдиреЗрдХреНрдЯ / рдХреНрд▓рд╛рдЗрдВрдЯ-рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрдиреЗрдХреНрдЯ / рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред
рдЙрдиреНрдирдд PAM рдкреНрд░рдорд╛рдгреАрдХрд░рдг
рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд PAM рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЕрд░реНрде рд╣реИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕рддреНрдпрд╛рдкрди рдХреЗ рддрд░реНрдХ рдХреЛ рдмрджрд▓рдирд╛ред рдпрд╣ рдУрдкрдирд╡реАрдкреАрдПрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдкреНрд▓рдЧ-рдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рд╣рд░реА рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдРрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реЗ рдПрдХ pam_python рд╣реИ , рдЬреЛ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рд╕рддреНрдпрд╛рдкрди рддрд░реНрдХ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред
рдпрджрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрдпрд╛рдкрди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред
plugin openvpn-plugin-auth-pam.so pam_python login USERNAME password PASSWORD domain mydomain.com
рдЪреВрдВрдХрд┐ PAM рдХреЗ "рд╣реБрдб рдХреЗ рдиреАрдЪреЗ" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрд╡рд╛рдж рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ, рдЗрди рд╕рдВрд╡рд╛рджреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, OTP рдЯреЛрдХрди рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ ред LinOTP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдХрд╣реАрдВ somewhere \ _ ( ┬п ) / somewhere рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд▓рд┐рдЦрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреЛ рджрд┐рдпрд╛
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ "pam_python" рд╢рдмреНрдж рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд╛рд╣рд░реА рдкреАрдПрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдУрдкрди рд╡реАрдкреАрдПрди рд╕рддреНрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкрд╛рдпрдерди рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдкреИрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИред рдпрд╛рдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рд╕реМрдВрдкреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЖрд╕реНрдердЧрд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг
OpenVPN рд╕рд░реНрд╡рд░ рддрдерд╛рдХрдерд┐рдд "рд╡рд┐рд▓рдВрдмрд┐рдд" рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред "рд╡рд┐рд▓рдВрдмрд┐рдд" рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реЗрд╡рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд▓реЙрдЧрд┐рди / рдкрд╛рд╕рд╡рд░реНрдб рд╕рддреНрдпрд╛рдкрди рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддреА рд╣реИред
OpenVPN рдкреНрд▓рдЧрдЗрдиреНрд╕
рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдирд╛рдВрддрд░ рдмреНрд░рд╣реНрдорд╛рдВрдб рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдЬрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреНрд░рдо рдХреЗ рдХрд╛рд░рдг, рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдбрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдУрдкрдирд╡реАрдкреАрдПрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд▓рдЧ-рдЗрди рд▓рд┐рдЦрдиреЗ рд╕реЗ рд╕реА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИред рд╕рд░рд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдУрдкрдирд╡реАрдкреАрдПрди рд╕реНрд░реЛрдд рдкреЗрдбрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдкрдирд╡реАрдкреАрдПрди рд╕реЗ рд╡рд┐рдзрд┐ рдХреЙрд▓реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд╣реИ ред
рдЖрдЗрдП рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдУрдкрдирд╡реАрдкреАрдПрди рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ
рдкреНрд▓рдЧрдЗрди рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп, рдЬрдм рдпрд╣ рдУрдкрдирд╡реАрдкреАрдПрди рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╕рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рд▓реМрдЯрд╛рдПрдВ, рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рдПрдЧрд╛ред
#define OPENVPN_PLUGIN_FUNC_SUCCESS 0 #define OPENVPN_PLUGIN_FUNC_ERROR 1 #define OPENVPN_PLUGIN_FUNC_DEFERRED 2
рдЖрдЗрдП рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВред рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЬрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд░реНрд╡рд░ OPENVPN_PLUGIN_UP рдФрд░ OPENVPN_PLUGIN_ROUTE_UP рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдмреБрд▓рд╛рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЪрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдЪрд▓ рд░рд╣реЗ рд╕рд░реНрд╡рд░ рдХреЗ рдореБрдЦреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
OPENVPN_PLUGIN_UP { "route_netmask_1":"255.255.0.0", "daemon_start_time":"1545994898", "ifconfig_remote":"10.150.0.2", "local_1":"172.16.100.139", "script_context":"init", "config":"/usr/local/etc/openvpn/server150.conf", "link_mtu":"1622", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "verb":"2", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "daemon_log_redirect":"1", "daemon":"1", "route_net_gateway":"172.16.100.1", "dev_type":"tun", "route_gateway_1":"10.150.0.2", "remote_port_1":"1200", "dev":"tun150", "pluginid":"0", "local_port_1":"1200", "route_network_1":"10.150.0.0" }
OPENVPN_PLUGIN_ROUTE_UP { "route_netmask_1":"255.255.0.0", "daemon_start_time":"1545994898", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "local_1":"172.16.100.139", "script_context":"init", "config":"/usr/local/etc/openvpn/server150.conf", "link_mtu":"1622", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "verb":"2", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "daemon_log_redirect":"1", "daemon":"1", "route_net_gateway":"172.16.100.1", "dev_type":"tun", "route_gateway_1":"10.150.0.2", "remote_port_1":"1200", "dev":"tun150", "pluginid":"2", "local_port_1":"1200", "route_network_1":"10.150.0.0" }
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рдЕрд▓рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, OpenVPN рдПрдХ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
OPENVPN_PLUGIN_ENABLE_PF { "route_netmask_1":"255.255.0.0", "daemon_start_time":"1545994898", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "local_1":"172.16.100.139", "script_context":"init", "config":"/usr/local/etc/openvpn/server150.conf", "link_mtu":"1622", "pf_file":"/tmp/openvpn_pf_b7a18ca8fac838679ca87ada6b8a356.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "verb":"2", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "daemon":"1", "daemon_log_redirect":"1", "dev_type":"tun", "route_gateway_1":"10.150.0.2", "remote_port_1":"1200", "dev":"tun150", "pluginid":"11", "local_port_1":"1200", "route_network_1":"10.150.0.0" }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдбрдВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, pf_file рд╡реИрд░рд┐рдПрдмрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдЕрдЧрд▓рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
OPENVPN_PLUGIN_AUTH_USER_PASS_VERIFY { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "IV_NCP":"2", "IV_COMP_STUB":"1", "daemon_start_time":"1545994898", "IV_LZ4":"1", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "link_mtu":"1622", "pf_file":"/tmp/openvpn_pf_b7a18ca8fac838679ca87ada6b8a356.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_a3d0650a43b88ca1b5f305ce2c8f682.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"2", "IV_PLAT":"win", "daemon_pid":"626", "password":"12312312312312", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "dev":"tun150", "pluginid":"5", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
рдпрд╣ рдПрдХрдорд╛рддреНрд░ рд╕реНрдерд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдЪрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рд╕реНрдкрд╖реНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рдЙрддреНрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
#define OPENVPN_PLUGIN_FUNC_SUCCESS 0 #define OPENVPN_PLUGIN_FUNC_ERROR 1 #define OPENVPN_PLUGIN_FUNC_DEFERRED 2
рдпрджрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЬрд╡рд╛рдм OPENVPN_PLUGIN_FUNC_DEFERRED рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ "рд╡рд┐рд▓рдВрдмрд┐рдд" рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рддрдВрддреНрд░ рдХрд╛рдо рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЪрд░ "dif_control_file" рдЪрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдЪрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдПрдЧреАред рдЙрддреНрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдкреНрд░рддреАрдХ 0 (рдПрдХреНрд╕реЗрд╕ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП), 1 (рдПрдХреНрд╕реЗрд╕ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рд╣реИред рд╕рд░реНрд╡рд░ рдкреИрд░рд╛рдореАрдЯрд░ "рд╣реИрдВрдб-рд╡рд┐рдВрдбреЛ" рд╕реЗрдХрдВрдб рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп, рдЕрдиреНрдп рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдпрд╛рддрд╛рдпрд╛рдд рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╣рдо рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рддреНрдпрд╛рдкрди рдлрд╝рдВрдХреНрд╢рди OPENVPN_PLUGIN_TLS_VERIFY рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕рддреНрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реБрдП OPENVPN_PLUGIN_TLS_FINAL рдХреЛ рддреБрд░рдВрдд рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
OPENVPN_PLUGIN_TLS_FINAL { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "IV_NCP":"2", "IV_COMP_STUB":"1", "daemon_start_time":"1545994898", "IV_LZ4":"1", "redirect_gateway":"0", "ifconfig_remote":"10.150.0.2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "link_mtu":"1622", "pf_file":"/tmp/openvpn_pf_b7a18ca8fac838679ca87ada6b8a356.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_a3d0650a43b88ca1b5f305ce2c8f682.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"2", "IV_PLAT":"win", "daemon_pid":"626", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "dev":"tun150", "pluginid":"10", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
рдЗрд╕рдХреЗ рдмрд╛рдж, OPENVPN_PLUGIN_IPCHANGE рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
OPENVPN_PLUGIN_IPCHANGE { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "trusted_ip":"172.16.111.168", "link_mtu":"1622", "IV_COMP_STUB":"1", "daemon_start_time":"1547319280", "IV_LZ4":"1", "redirect_gateway":"0", "common_name":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "ifconfig_remote":"10.150.0.2", "IV_NCP":"2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "trusted_port":"1200", "pf_file":"/tmp/openvpn_pf_4fcad505693b33f97c4fe105df8681cb.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_321bb12075dc0e1b5440d227220bac5d.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"3", "IV_PLAT":"win", "daemon_pid":"52435", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "dev":"tun150", "pluginid":"3", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
IPEN рдЖрдВрддрд░рд┐рдХ DHCP рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ OPENVPN_PLUGIN_CLIENT_CONNECT_V2 рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
OPENVPN_PLUGIN_CLIENT_CONNECT_V2 { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "trusted_ip":"172.16.111.168", "link_mtu":"1622", "IV_COMP_STUB":"1", "daemon_start_time":"1547319280", "IV_LZ4":"1", "dev":"tun150", "common_name":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "time_ascii":"Sat Jan 12 18:54:48 2019", "ifconfig_remote":"10.150.0.2", "IV_NCP":"2", "untrusted_port":"1200", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "trusted_port":"1200", "pf_file":"/tmp/openvpn_pf_4fcad505693b33f97c4fe105df8681cb.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_321bb12075dc0e1b5440d227220bac5d.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"3", "IV_PLAT":"win", "daemon_pid":"52435", "time_unix":"1547319288", "redirect_gateway":"0", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "remote_port_1":"1200", "ifconfig_pool_local_ip":"10.150.0.5", "pluginid":"9", "ifconfig_pool_remote_ip":"10.150.0.6", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
рдПрдХ рдЪрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдЪрд░ "" ifconfig_pool_local_ip "рдФрд░" ifconfig_pool_remote_ip "рд╕реБрд░рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВред
OPENVPN_PLUGIN_LEARN_ADDRESS рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрд╕ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм OpenVPN рд╕рд░реНрд╡рд░ IP рдкрддреЗ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕реАрдЦрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреИрдХреЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ OPENVPN_PLUGIN_LEARN_ADDRESS рдЪрд░рдг OPENVPN_PLUGIN_CLIENT_CONNECT_V2 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
fa56bf61-.../172.16.111.168:1200 ----- pf_check_reload : struct pf_context ----- fa56bf61-.../172.16.111.168:1200 enabled=1 fa56bf61-.../172.16.111.168:1200 filename='/tmp/openvpn_pf_343330698e4acdea34c8a8c7fb87d861.tmp' fa56bf61-.../172.16.111.168:1200 file_last_mod=1547319124 fa56bf61-.../172.16.111.168:1200 n_check_reload=1 fa56bf61-.../172.16.111.168:1200 reload=[1,15,1547319125] fa56bf61-.../172.16.111.168:1200 ----- struct pf_set ----- fa56bf61-.../172.16.111.168:1200 kill=0 fa56bf61-.../172.16.111.168:1200 ----- struct pf_subnet_set ----- fa56bf61-.../172.16.111.168:1200 default_allow=ACCEPT fa56bf61-.../172.16.111.168:1200 ----- struct pf_cn_set ----- fa56bf61-.../172.16.111.168:1200 default_allow=DROP fa56bf61-.../172.16.111.168:1200 12345678-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 fa56bf61-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 ---------- fa56bf61-.../172.16.111.168:1200 fa56bf61-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 12345678-90da-11e8-bf33-005056a12a82-1234567 ACCEPT fa56bf61-.../172.16.111.168:1200 --------------------
рдЬрдм рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ OPENVPN_PLUGIN_CLIENT_DISCONNECT рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
OPENVPN_PLUGIN_CLIENT_DISCONNECT { "route_netmask_1":"255.255.0.0", "route_gateway_1":"10.150.0.2", "trusted_ip":"172.16.111.168", "link_mtu":"1622", "IV_COMP_STUB":"1", "daemon_start_time":"1547319280", "IV_LZ4":"1", "dev":"tun150", "common_name":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "time_ascii":"Sat Jan 12 18:54:48 2019", "bytes_received":"30893", "IV_NCP":"2", "untrusted_port":"1200", "ifconfig_remote":"10.150.0.2", "IV_LZ4v2":"1", "local_1":"172.16.100.139", "script_context":"init", "untrusted_ip":"172.16.111.168", "config":"/usr/local/etc/openvpn/server150.conf", "username":"fa56bf61-90da-11e8-bf33-005056a12a82-1234568", "trusted_port":"1200", "pf_file":"/tmp/openvpn_pf_4fcad505693b33f97c4fe105df8681cb.tmp", "ifconfig_local":"10.150.0.1", "tun_mtu":"1500", "auth_control_file":"/tmp/openvpn_acf_4bdddbada2885cde42cd3cb1b85d77e5.tmp", "daemon":"1", "IV_COMP_STUBv2":"1", "verb":"3", "IV_PLAT":"win", "daemon_pid":"52435", "time_unix":"1547319288", "redirect_gateway":"0", "route_vpn_gateway":"10.150.0.2", "proto_1":"udp", "route_net_gateway":"172.16.100.1", "IV_PROTO":"2", "daemon_log_redirect":"1", "time_duration":"3781", "dev_type":"tun", "IV_VER":"2.4.3", "IV_LZO":"1", "bytes_sent":"22684", "remote_port_1":"1200", "ifconfig_pool_local_ip":"10.150.0.5", "pluginid":"7", "ifconfig_pool_remote_ip":"10.150.0.6", "local_port_1":"1200", "IV_TCPNL":"1", "route_network_1":"10.150.0.0" }
рдПрдХ рдЪрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдХрдиреЗрдХреНрд╢рди рдЕрд╡рдзрд┐ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рдХреЙрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рдЪреБрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг, C рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓реИрдВрдЧреНрд╡реЗрдЬ (C ++) рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд▓рд┐рдЦрдирд╛ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред
рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ "рдЪрдорддреНрдХрд╛рд░" рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ :)
рдУрдкрдирд╡реАрдкреАрдПрди рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рдВрдмреЗ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд▓рд┐рдЦреА рдЧрдИ рдереА рдЬреЛ рд╕рддреНрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдХреЛрдб рд╕реА-рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдкреНрд▓рдЧ-рдЗрди рд╣реИ рдЬреЛ рдУрдкрдирд╡реАрдкреАрдПрди рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ, рд╕реА-рдПрдкреАрдЖрдИ рд╕рдВрджрд░реНрдн рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рдпрдерди рдХреЛ рдореЙрдбреНрдпреВрд▓ рднреЗрдЬрддрд╛ рд╣реИред
OpenVPN рдкреНрд▓рдЧрдЗрди рдЕрдЬрдЧрд░ рдкреНрд░реЙрдХреНрд╕реА
рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рдХреНрдпреЛрдВ рд╣реИ?
рдЕрдЬрдЧрд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдпрдерди рд╕реА-рдПрдкреА рд╕рдВрджрд░реНрдн рд╕реАрдзреЗ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдЬрдм рдкреНрд▓рдЧрдЗрди OpenVPN рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд▓рдЧрдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдирдХрд╛рдмрдкреЛрд╢ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рд╕реЗрд╡рд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЕрдЧрд▓рд╛ рдХрдиреЗрдХреНрд╢рди рдЪрд░рдг рдпрд╛ рдЖрдВрддрд░рд┐рдХ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рддреЛ OpenVPN рдкреНрд▓рдЧрдЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдкреНрд▓рдЧрдЗрди рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд╛рд░рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЕрдЬрдЧрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрдЬрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рддреАрди рдЬрд╡рд╛рдмреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (0 - рд╕рдлрд▓рддрд╛, 1 - рддреНрд░реБрдЯрд┐, 2 - рд╣рдЯрд╛рдП рдЧрдП) рджреЗрддрд╛ рд╣реИред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрджрд▓рдХрд░ OpenVPN рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЙрд▓ "рд╕реНрдЯреЗрдЯрд▓реЗрд╕" рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдХреЙрд▓реЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ред рдЖрдк рдХреЗрд╡рд▓ OpenVPN рд╕реЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдкрд╛рд░рд┐рдд рдЪрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЬрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪреЗрдХ рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ "рд▓рдВрдмрд┐рдд" рдкреБрд╖реНрдЯрд┐рдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рд╕реЗрд╡рд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, pf_file рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдХрд╛рдлреА рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрджрд▓реЗ рдореЗрдВ, рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ, OpenVPN рдкреНрд░рдмрдВрдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдЬреЗрдирд░реЗрд╢рди рдореИрдХреЗрдирд┐рдЬреНрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ jwt рдЯреЛрдХрди рдХреЗ рд╕рдорд╛рди рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рдеред
рдмрд╛рдд рд╕рд░рд▓ рд╣реИред рдЯреЛрдХрди рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ рд╣реЛрддреА рд╣реИред рдЯреЛрдХрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде HMAC_SHA1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреЛрдХрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рджреНрд╡рд╛рд░рд╛ рджреВрд╖рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдмреЗрд╕ 64 рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЯреЛрдХрди рдХреА "рд╕реАрд▓рд┐рдВрдЧ" рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рд╕реАрд▓ рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХрд╛ рдЕрдирдзрд┐рдХреГрдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ xor рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ Xor рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рдмрд┐рдирд╛, рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдкрд╛рд╕рд╡рд░реНрдб рд╡реИрдзрддрд╛ рд╕рдордп рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреЛрдХрди рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдФрд░ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрдВрджрд░ рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдпрд╣ рдпреЛрдЬрдирд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рддреНрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЖрдк рдЯреЛрдХрди рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдмрд╛рд╣рд░реА рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЯреЛрдХрди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдереАред
рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореИрдВ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
┬й Aborche 2019
