рдкреНрд░рджрд╛рдпрдХ NATs рдорд╛рд░реНрдлрдд рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВ рдмреАрдЪ рдкреНрд░рддреНрдпрдХреНрд╖ VPN рд╕реБрд░реБрдЩ (VPS рдмрд┐рдирд╛, STUN рд╕рд░реНрднрд░ рд░ Yandex.disk рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░)

рдирд┐рд░рдиреНрддрд░рддрд╛ рд▓реЗрдЦ NAT рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрдХреЛ рдкрдЫрд╛рдбрд┐ рдЕрд╡рд╕реНрдерд┐рдд рджреБрдИ рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВ рдмреАрдЪрдХреЛ рдкреНрд░рддреНрдпрдХреНрд╖ VPN рдЯрдиреЗрд▓ рдХрд╕рд░реА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдореИрд▓реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реЗрдВ рднрдиреНрдиреЗ рдмрд╛рд░реЗред рдЕрдШрд┐рд▓реНрд▓реЛ рд▓реЗрдЦрд▓реЗ рддреЗрд╕реНрд░реЛ рдкрдХреНрд╖рдХреЛ рдорджреНрджрддрдорд╛ рдЬрдбрд╛рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╡рд░реНрдгрди рдЧрд░реЗрдХреЛ рдерд┐рдпреЛ - рдПрдХ рдордзреНрдпрд╕реНрде (рдПрдХ рднрд╛рдбрд╛рдорд╛ рд▓рд┐рдЗрдПрдХреЛ VPS рд▓реЗ STUN рд╕рд░реНрднрд░ рд░ рдЬрдбрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдиреЛрдб рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯрд░рдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ)ред рдпрд╕ рд▓реЗрдЦрдорд╛ рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрдиреЗрдЫреБ рдХрд┐ рдореИрд▓реЗ VPS рдмрд┐рдирд╛ рдХрд╕рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реЗрдВ, рддрд░ рдордзреНрдпрд╕реНрдерд╣рд░реВ рд░рд╣реЗ рд░ рддрд┐рдиреАрд╣рд░реВ STUN рд╕рд░реНрднрд░ рд░ Yandex.Disk рдерд┐рдПред
рдкреНрд░рджрд╛рдпрдХ NATs рдорд╛рд░реНрдлрдд рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВ рдмреАрдЪ рдкреНрд░рддреНрдпрдХреНрд╖ VPN рд╕реБрд░реБрдЩ (VPS рдмрд┐рдирд╛, STUN рд╕рд░реНрднрд░ рд░ Yandex.disk рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░)

рдкрд░рд┐рдЪрдп

рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрд╖реНрдЯрдХреЛ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ рдкрдвреЗрдкрдЫрд┐, рдореИрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реЗрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдореБрдЦреНрдп рдХрдордЬреЛрд░реА рдордзреНрдпрд╕реНрдердХреЛ рдкреНрд░рдпреЛрдЧ рдерд┐рдпреЛ - рддреЗрд╕реНрд░реЛ рдкрдХреНрд╖ (VPS) рдЬрд╕рд▓реЗ рдиреЛрдбрдХреЛ рд╣рд╛рд▓рдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ, рдХрд╣рд╛рдБ рд░ рдХрд╕рд░реА рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реЗрдХреЛ рдерд┐рдпреЛред рдпреЛ STUN рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрджреИ (рдЬрд╕рдорд╛ рдзреЗрд░реИ рдЫрдиреН) рд╣рд╛рд▓рдХреЛ рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиред рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдореИрд▓реЗ STUN рд╕рд░реНрднрд░рд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реНрди TCPDump рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ рд░ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрдкрдардиреАрдп рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗред рдореИрд▓реЗ рднреЗрдЯреЗрдХреЛ рдкреНрд░реЛрдЯреЛрдХрд▓ рдЧреБрдЧрд▓ рдЧрд░реНрджреИ рдкреНрд░реЛрдЯреЛрдХрд▓ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗ рд▓реЗрдЦред рдореИрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реЗрдВ рдХрд┐ рдореИрд▓реЗ STUN рд╕рд░реНрднрд░рдорд╛ рдЧрд░реЗрдХреЛ рдЕрдиреБрд░реЛрдз рдЖрдлреИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХрд┐рди рд░ рд╡рд┐рдЪрд╛рд░рд▓рд╛рдИ "рджреВрд░рдХреЛ рдмрдХреНрд╕" рдорд╛ рд░рд╛рдЦреЗрдВред

рдереНрдпреЛрд░реА

рднрд░реНрдЦрд░реИ рдореИрд▓реЗ рдкреНрдпрд╛рдХреЗрдЬрдмрд╛рдЯ рдбреЗрдмрд┐рдпрдирдорд╛ STUN рд╕рд░реНрднрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ

# apt install stun-server

рд░ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВрдорд╛ рдореИрд▓реЗ рд╕реНрдЯрди-рдХреНрд▓рд╛рдпрдиреНрдЯ рдкреНрдпрд╛рдХреЗрдЬ рджреЗрдЦреЗ, рддрд░ рдХреБрдиреИ рдкрдирд┐ рддрд░рд┐рдХрд╛рд▓реЗ рдореИрд▓реЗ рдпрд╕рдорд╛ рдзреНрдпрд╛рди рджрд┐рдПрдиред рддрд░ рдкрдЫрд┐ рдореИрд▓реЗ stun-client рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рдореНрдЭреЗрдВ рд░ рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рдЧреБрдЧрд▓рд┐рдЩ рд░ Yandex рдорд╛ рдЦреЛрдЬреА рдЧрд░реЗрдкрдЫрд┐ рдореИрд▓реЗ рдкрд╛рдПрдБ:

# apt install stun-client
# stun stun.ekiga.net -p 21234 -v

рдЬрд╡рд╛рдлрдорд╛ рдореИрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗ:

STUN рдЧреНрд░рд╛рд╣рдХ рд╕рдВрд╕реНрдХрд░рдг 0.97
fd 21234 рдХреЛ рд╕рд╛рде 3 рдкреЛрд░реНрдЯ рдЦреЛрд▓рд┐рдпреЛ
fd 21235 рдХреЛ рд╕рд╛рде 4 рдкреЛрд░реНрдЯ рдЦреЛрд▓рд┐рдпреЛ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢: 92 рдмрд╛рдЗрдЯреНрд╕
рдореНрдпрд╛рдк рдЧрд░рд┐рдПрдХреЛ рдареЗрдЧрд╛рдирд╛ = <My IP>:2885
рд╕реНрд░реЛрдд рдареЗрдЧрд╛рдирд╛ = реирезрем.репрей.реирекрем.резрео:рейрекренрео
рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдареЗрдЧрд╛рдирд╛ = реирезрем.репрей.реирекрем.резрен:рейрекренреп
рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛: 32800
рд╕рд░реНрднрд░рдирд╛рдо = Vovida.org 0.98-CPC
257 id=1 рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

len 28 рдХреЛ рд╕рдиреНрджреЗрд╢ <My IP>:2885 рдорд╛ рдкрдард╛рдЙрди рд▓рд╛рдЧрд┐рд░рд╣реЗрдХреЛ рдЫ
рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢: 28 рдмрд╛рдЗрдЯреНрд╕
рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз = реж
1 id=11 рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢: 92 рдмрд╛рдЗрдЯреНрд╕
рдореНрдпрд╛рдк рдЧрд░рд┐рдПрдХреЛ рдареЗрдЧрд╛рдирд╛ = <My IP>:2885
рд╕реНрд░реЛрдд рдареЗрдЧрд╛рдирд╛ = реирезрем.репрей.реирекрем.резрео:рейрекренрео
рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдареЗрдЧрд╛рдирд╛ = реирезрем.репрей.реирекрем.резрен:рейрекренреп
рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛: 32800
рд╕рд░реНрднрд░рдирд╛рдо = Vovida.org 0.98-CPC
257 id=10 рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕реНрдЯрди рд╕рдиреНрджреЗрд╢:
рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдз: реж

рд▓реЗрди реирео рдХреЛ рд╕рдиреНрджреЗрд╢ реирезрем.репрей.реирекрем.резрео:рейрекренрео рдорд╛ рдкрдард╛рдЙрдиреЗ рдмрд╛рд░реЗ
рдкрд░реАрдХреНрд╖рдг I = 1
рдкрд░реАрдХреНрд╖рдг II = 0
рдкрд░реАрдХреНрд╖рдг III = 0
рдкрд░реАрдХреНрд╖рдг I(2) = 1
nat = 1 рд╣реЛ
рдореНрдпрд╛рдк рдЧрд░рд┐рдПрдХреЛ рдЖрдИрдкреА рд╕рдорд╛рди = 1
рд╣реЗрдпрд░рдкрд┐рди = рез
рд╕рдВрд░рдХреНрд╖рдХ рдкреЛрд░реНрдЯ = 0
рдкреНрд░рд╛рдердорд┐рдХ: рд╕реНрд╡рддрдиреНрддреНрд░ рдореНрдпрд╛рдкрд┐рдЩ, рдкреЛрд░реНрдЯ рдбрд┐рдкреЗрдиреНрдбреЗрдиреНрдЯ рдлрд┐рд▓реНрдЯрд░, рдЕрдирд┐рдпрдорд┐рдд рдкреЛрд░реНрдЯ, рд╣реЗрдпрд░рдкрд┐рди рд╣реБрдиреЗрдЫ
рдлрд┐рд░реНрддрд╛ рдорд╛рди 0x000006 рд╣реЛ

рдорд╛рди рд╕рд╣рд┐рддрдХреЛ рд╕реНрдЯреНрд░рд┐рдЩ

рдореНрдпрд╛рдк рдЧрд░рд┐рдПрдХреЛ рдареЗрдЧрд╛рдирд╛ = <My IP>:2885

рддрдкрд╛рдИрд▓рд╛рдИ рдХреЗ рдЪрд╛рд╣рд┐рдиреНрдЫ! рдпрд╕рд▓реЗ рд╕реНрдерд╛рдиреАрдп UDP рдкреЛрд░реНрдЯ 21234 рдорд╛ рдЬрдбрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рд▓рдХреЛ рд╕реНрдерд┐рддрд┐ рджреЗрдЦрд╛рдПрдХреЛ рдЫред рддрд░ рдпреЛ рдХреЗрд╡рд▓ рдЖрдзрд╛ рдпреБрджреНрдз рд╣реЛ; рдпреЛ рдбрд╛рдЯрд╛ рдХрд╕рд░реА рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рд░ VPN рдЬрдбрд╛рди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдкреНрд░рд╢реНрди рдЙрдареНрдпреЛред рдореЗрд▓ рдкреНрд░реЛрдЯреЛрдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ, рд╡рд╛ рд╢рд╛рдпрдж рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо?! рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН рд░ рдореИрд▓реЗ Yandex.disk рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ, рдХрд┐рдирдХрд┐ рдореИрд▓реЗ рднреЗрдЯреЗрдВ Yandex.disk рд╕рдБрдЧ WebDav рдорд╛рд░реНрдлрдд рдХрд░реНрд▓ рдХрд╛рдо рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд▓реЗрдЦред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪрд┐рд╕рдХреЗрдкрдЫрд┐, рдореИрд▓реЗ рдирд┐рдореНрди рдпреЛрдЬрдирд╛ рд▓рд┐рдПрдБ:

  1. рд╕рдВрдХреЗрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдиреЛрдбрд╣рд░реВ Yandex.disk рдорд╛ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдкрдХреЛ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╛рдЗрд▓рдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рджреНрд╡рд╛рд░рд╛ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рддрдпрд╛рд░ рдЫрдиреН;
  2. рдпрджрд┐ рдиреЛрдбрд╣рд░реВ рддрдпрд╛рд░ рдЫрдиреН рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ STUN рд╕рд░реНрднрд░рдмрд╛рдЯ рд╣рд╛рд▓рдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  3. рд╣рд╛рд▓рдХреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ Yandex.disk рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  4. Yandex.disk рдорд╛ рдлрд╛рдЗрд▓рдмрд╛рдЯ рд░рд┐рдореЛрдЯ рдиреЛрдбрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ рд░ рдкрдвреНрдиреБрд╣реЛрд╕реН рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  5. OpenVPN рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯрд╕рдБрдЧ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИред

рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЕрд▓рд┐рдХрддрд┐ рд╕реЛрдЪреЗрд░, рдкрдЫрд┐рд▓реНрд▓реЛ рд▓реЗрдЦрдХреЛ рдЕрдиреБрднрд╡рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рдореИрд▓реЗ рдЫрд┐рдЯреНрдЯреИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦреЗрдВред рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ:

# apt install openvpn stun-client curl 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдлреИрдВ:

рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг

# cat vpn8.sh

#!/bin/bash
######################## ╨Ч╨░╨┤╨░╨╡╨╝ ╤Ж╨▓╨╡╤В╨╜╨╛╨╣ ╤В╨╡╨║╤Б╤В ###
WARN='33[37;1;41m'				#
END='33[0m'					#
RED='33[0;31m'         #  ${RED}		#
GREEN='33[0;32m'      #  ${GREEN}		#
#################################################
####################### ╨Я╤А╨╛╨▓╨╡╤А╤П╨╡╨╝ ╨╜╨░╨╗╨╕╤З╨╕╨╡ ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╤Л╨╝╨╕╤Е ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╨╣ #########################################################
al="echo readlink dirname grep awk md5sum shuf nc curl sleep openvpn cat stun"
ch=0
for i in $al; do which $i > /dev/null || echo -e "${WARN}╨Ф╨╗╤П ╤А╨░╨▒╨╛╤В╤Л ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝ $i ${END}"; which $i > /dev/null || ch=1; done
if (( $ch > 0 )); then echo -e "${WARN}╨Ю╨╣, ╨╛╤В╤Б╤Г╤В╤Б╤В╨▓╤Г╤О╤В ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╤Л╨╡ ╨┤╨╗╤П ╨║╨╛╤А╤А╨╡╨║╤В╨╜╨╛╨╣ ╤А╨░╨▒╨╛╤В╤Л ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П${END}"; exit; fi
#######################################################################################################################

if [[ $1 == '' ]]; then echo -e "${WARN}╨Т╨▓╨╡╨┤╨╕╤В╨╡ ╨╕╨┤╨╡╨╜╤В╨╕╤Д╨╕╨║╨░╤В╨╛╤А ╤Б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╤П (╨╗╤О╨▒╨╛╨╡ ╤Г╨╜╨╕╨║╨░╨╗╤М╨╜╨╛╨╡ ╤Б╨╗╨╛╨▓╨╛, ╨┤╨╛╨╗╨╢╨╜╨╛ ╨▒╤Л╤В╤М ╨╛╨┤╨╕╨╜╨░╨║╨╛╨▓╨╛╨╡ ╤Б ╨┤╨▓╤Г╤Е ╤Б╤В╨╛╤А╨╛╨╜!) ${END} t
${GREEN}╨Ф╨╗╤П ╨╖╨░╨┐╤Г╤Б╨║╨░ ╨▓ ╨░╨▓╤В╨╛╨╝╨░╤В╨╕╤З╨╡╤Б╨║╨╛╨╝ ╤А╨╡╨╢╨╕╨╝╨╡ ╨┐╤А╨╕ ╨▓╨║╨╗╤О╤З╨╡╨╜╨╕╨╕ ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ ╨╝╨╛╨╢╨╜╨╛ ╨┐╤А╨╛╨┐╨╕╤Б╨░╤В╤М ╨▓ /etc/rc.local ╤Б╤В╤А╨╛╨║╤Г nohup /<╨┐╤Г╤В╤М ╨║ ╤Д╨░╨╣╨╗╤Г>/vpn8.sh  > /var/log/vpn8.log 2>/dev/hull & ${END}"; exit; fi
ABSOLUTE_FILENAME=`readlink -f "$0"`                                                    # ╨┐╨╛╨╗╨╜╤Л╨╣ ╨┐╤Г╤В╤М ╨┤╨╛ ╤Б╨║╤А╨╕╨┐╤В╨░
DIR=`dirname "$ABSOLUTE_FILENAME"`                                                      # ╨║╨░╤В╨░╨╗╨╛╨│ ╨▓ ╨║╨╛╤В╨╛╤А╨╛╨╝ ╨╗╨╡╨╢╨╕╤В ╤Б╨║╤А╨╕╨┐╤В
############################### ╨Я╤А╨╛╨▓╨╡╤А╨║╨░ ╨╜╨░╨╗╨╕╤З╨╕╤П ╤Б╨╡╨║╤А╨╡╤В╨╜╨╛╨│╨╛ ╨║╨╗╤О╤З╨░ ##################################
key="$DIR/secret.key"
if [ ! -f "$key" ]; then
				echo -e "${WARN}╨б╨╡╨║╤А╨╡╤В╨╜╤Л╨╣ ╨║╨╗╤О╤З VPN-╤Б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╤П ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜, ╨┤╨╗╤П ╨│╨╡╨╜╨╡╤А╨░╤Ж╨╕╨╕ ╨║╨╗╤О╤З╨░ ╨▓╤Л╨┐╨╛╨╗╨╜╨╕╤В╨╡: 
openvpn --genkey --secret secret.key ╨Т╨╜╨╕╨╝╨░╨╜╨╕╨╡: ╨║╨╗╤О╤З ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╤В╤Б╤П ╨┤╨╗╤П ╨░╨▓╤В╨╛╤А╨╕╨╖╨░╤Ж╨╕╨╕ ╨╕ ╨┤╨╛╨╗╨╢╨╡╨╜ 
╨▒╤Л╤В╤М ╨╛╨┤╨╕╨╜╨░╨║╨╛╨▓╤Л╨╝ ╤Б ╨┤╨▓╤Г╤Е ╤Б╤В╨╛╤А╨╛╨╜!!!${END}
 # ls -l secret.key
 -rw------- 1 root root 637 ╨╜╨╛╤П 27 11:12 secret.key
 # chmod 600 secret.key";
				exit;
				fi
########################################################################################################################

ABSOLUTE_FILENAME=`readlink -f "$0"`                                                    # ╨┐╨╛╨╗╨╜╤Л╨╣ ╨┐╤Г╤В╤М ╨┤╨╛ ╤Б╨║╤А╨╕╨┐╤В╨░
DIR=`dirname "$ABSOLUTE_FILENAME"`                                                      # ╨║╨░╤В╨░╨╗╨╛╨│ ╨▓ ╨║╨╛╤В╨╛╤А╨╛╨╝ ╨╗╨╡╨╢╨╕╤В ╤Б╨║╤А╨╕╨┐╤В
name=$(uname -n | md5sum | awk '{print $1}')
vpn=$(echo $1 | md5sum | awk '{print $1}')
stun="stun.ekiga.net" 	# STUN ╤Б╨╡╤А╨▓╨╡╤А
username="Yandex"	# ╨Ы╨╛╨│╨╕╨╜ ╨╛╤В ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║╨░	
password="Password"	# ╨Я╨░╤А╨╛╨╗╤М ╨╛╤В ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║╨░
localport=`shuf -i 20000-65000 -n 1`	# ╨│╨╡╨╜╨╡╤А╨░╤Ж╨╕╤П ╨╗╨╛╨║╨░╨╗╤М╨╜╨╛╨│╨╛ ╨┐╨╛╤А╤В╨░

echo "$(date) ╨б╨╛╨╖╨┤╨░╤О ╨┐╨░╨┐╨║╤Г ╨╜╨░ ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║╨╡"
curl -X MKCOL --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn
echo "$(date) ╨Ю╤З╨╕╤Й╨░╤О ╨┐╨░╨┐╨║╤Г ╨╛╤В ╨▓╤Б╤П╨║╨╛╨│╨╛ ╨╝╤Г╤Б╨╛╤А╨░"
for i in `curl --silent --user "$username:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname" | sed 's/d:displayname//g' | sed 's/>//g' | sed 's/<//' | sed 's////g' | grep -v $(date +%Y-%m-%d-%H-%M)`; do
	echo "$(date) Delete: $i"
	curl -X DELETE --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn/$i
	done

until [ $c ];do

	until [[ $b ]]; do
		echo "$(date) ╨Я╤А╨╛╨▓╨╡╤А╤П╤О ╨┐╨░╨┐╨║╤Г"
		date=`date +%Y-%m-%d-%H-%M`
		mydata=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep $name | grep $date | grep "d:displayname"`
		if [[ -z $mydata ]]; 	then
						echo "$(date) ╨д╨░╨╣╨╗ ╨│╨╛╤В╨╛╨▓╨╜╨╛╤Б╤В╨╕ ╤Б╨╛╨╖╨┤╨░╨╜"
					        echo "$date" > "/tmp/$date-$name-ready.txt"
					        curl -T "/tmp/$date-$name-ready.txt" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$date-$name-ready.txt
					else
						echo "$(date) ╨д╨░╨╣╨╗ ╨│╨╛╤В╨╛╨▓╨╜╨╛╤Б╤В╨╕ ╤Г╨╢╨╡ ╤Б╤Г╤Й╨╡╤Б╤В╨▓╤Г╨╡╤В - $date"
					fi
		remote=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep -v $name | grep $date | grep "d:displayname"`
		if [[ -z $remote ]];	then
						echo -e "$(date) ${RED} ╨г╨┤╨░╨╗╨╡╨╜╨╜╤Л╨╣ ╤Г╨╖╨╡╨╗ ╨╜╨╡ ╨│╨╛╤В╨╛╨▓ ${END}"
						echo "$(date) ╨Ц╨┤╤Г"
						sleep 20
					else
						echo -e "$(date) ${GREEN} ╨г╨┤╨░╨╗╨╡╨╜╨╜╤Л╨╣ ╤Г╨╖╨╡╨╗ ╨│╨╛╤В╨╛╨▓ ${END}"
						b=1
						a=''
					fi
	done

	until [ $a ]; do
		echo "$(date) ╨Я╨╛╨┤╨║╨╗╤О╤З╨╡╨╜╨╕╨╡ ╨╕ ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╕╨╡ ╨┤╨░╨╜╨╜╤Л╤Е ╨╛╤В STUN ╤Б╨╡╤А╨▓╨╡╤А╨░: $stun"
                mydata=`stun $stun -p $localport -v 2>&1 | grep MappedAddress | sort | uniq`
                echo -e "$(date) ${GREEN}╨Ь╨╛╨╕ ╨┤╨░╨╜╨╜╤Л╨╡ ╤Б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╤П: $mydata${END}"
                echo "$mydata" > "$DIR/mydata"
                echo "$(date) ╨Ч╨░╨│╤А╤Г╨╖╨║╨░ ╨┤╨░╨╜╨╜╤Л╤Е ╨╜╨░ ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║"
                curl -T "$DIR/mydata" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$name.txt
		echo "$(date) ╨Я╨╛╨╗╤Г╤З╨╡╨╜╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨┤╨░╨╜╨╜╤Л╤Е ╤Г╨┤╨░╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╤Г╨╖╨╗╨░"
		filename=$(curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname>" | grep "txt" | grep -v "$name" | grep -v "ready" | sed 's|.*d:displayname>||' | sed 's/</ /g' | awk '{print $1}')
		echo "$(date) ╨з╤В╨╡╨╜╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨┤╨░╨╜╨╜╤Л╤Е ╤Г╨┤╨░╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╤Г╨╖╨╗╨░: $filename"
		address=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$filename | sort | uniq | head -n1 | sed 's/:/ /g')
		echo "$(date) ╨Ю╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ IP-╨░╨┤╤А╨╡╤Б╨░ ╨╕ ╨┐╨╛╤А╤В╨░"
		ip=$(echo "$address" | awk '{print $3}')
		port=$(echo "$address" | awk '{print $4}')
		if [[ -n "$ip" && -n "$port" ]]; then
			echo -e "$(date) ${GREEN} ╨б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╨╡ $ip $port ${END}"
       		 	openvpn --remote $ip --rport $port --lport $localport 
	       	 	    --proto udp --dev tap --float --auth-nocache --verb 3 --mute 20 
	       	 	    --ifconfig 10.45.54.2 255.255.255.252 
	       		    --secret "$DIR/secret.key" 
	       		    --auth SHA256 --cipher AES-256-CBC 
	        	    --ncp-disable --ping 10  --ping-exit 30 
	        	    --comp-lzo yes
			echo -e "$(date) ${WARN} ╨б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╨╡ ╤А╨░╨╖╨╛╤А╨▓╨░╨╜╨╛${END}"
			a=1
			b=''
			else
			a=1
			b=''
			fi
	done
done

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ:

  1. рдХреНрд▓рд┐рдкрдмреЛрд░реНрдбрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕рдореНрдкрд╛рджрдХрдорд╛ рдЯрд╛рдБрд╕реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
    # nano vpn8.sh 
  2. Yandex.disk рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд░ рдкрд╛рд╕рд╡рд░реНрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  3. рдлрд┐рд▓реНрдбрдорд╛ "тАФifconfig 10.45.54. (1 рд╡рд╛ 2) 255.255.255.252" рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рдЖрдиреНрддрд░рд┐рдХ IP рдареЗрдЧрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  4. рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН secret.key рдЖрджреЗрд╢:
    # openvpn --genkey --secret secret.key 
  5. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН:
    # chmod +x vpn8.sh
  6. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
    # ./vpn8.sh nZbVGBuX5dtturD

    рдЬрд╣рд╛рдБ nZbVGBuX5dtturD рдЙрддреНрдкрдиреНрди рдЬрдбрд╛рди ID рд╣реЛ рдпрд╣рд╛рдБ

рд░рд┐рдореЛрдЯ рдиреЛрдбрдорд╛, secret.key рд░ рдЬрдбрд╛рди ID рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдмрд╛рд╣реЗрдХ рд╕рдмреИ рдХреБрд░рд╛ рд╕рдорд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддрд┐рдиреАрд╣рд░реВ рд╕рдорд╛рди рд╣реБрдиреБрдкрд░реНрдЫред

рдЕрдкрдбреЗрдЯ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдг (рд╕рд╣реА рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордп рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рд╣реБрдиреБрдкрд░реНрдЫ):

cat vpn10.sh

#!/bin/bash
stuns="stun.sipnet.ru stun.ekiga.net"   		# ╨б╨┐╨╕╤Б╨╛╨║ STUN ╤Б╨╡╤А╨▓╨╡╤А╨╛╨▓ ╤З╨╡╤А╨╡╨╖ ╨┐╤А╨╛╨▒╨╡╨╗
username=" Login "		# ╨Ы╨╛╨│╨╕╨╜ ╨╛╤В ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║╨░
password=" Password "   	# ╨Я╨░╤А╨╛╨╗╤М ╨╛╤В ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║╨░
intip="10.23.22.1"		# IP-╨░╨┤╤А╨╡╤Б ╨▓╨╜╤Г╤В╤А╨╡╨╜╨╜╨╡╨│╨╛ ╨╕╨╜╤В╨╡╤А╤Д╨╡╨╣╤Б╨░
WARN='33[37;1;41m'
END='33[0m'
RED='33[0;31m'
GREEN='33[0;32m'
al="ip echo readlink dirname grep awk md5sum openssl sha256sum shuf curl sleep openvpn cat stun"
ch=0
for i in $al; do which $i > /dev/null || echo -e "${WARN}╨Ф╨╗╤П ╤А╨░╨▒╨╛╤В╤Л ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝ $i ${END}"; which $i > /dev/null || ch=1; done
if (( $ch > 0 )); then echo -e "${WARN}╨Ю╨╣, ╨╛╤В╤Б╤Г╤В╤Б╤В╨▓╤Г╤О╤В ╨╜╨╡╨╛╨▒╤Е╨╛╨┤╨╕╨╝╤Л╨╡ ╨┤╨╗╤П ╨║╨╛╤А╤А╨╡╨║╤В╨╜╨╛╨╣ ╤А╨░╨▒╨╛╤В╤Л ╨┐╤А╨╕╨╗╨╛╨╢╨╡╨╜╨╕╤П${END}"; exit; fi
if [[ $1 == '' ]];
then
echo -e "${WARN}╨Т╨▓╨╡╨┤╨╕╤В╨╡ ╨╕╨┤╨╡╨╜╤В╨╕╤Д╨╕╨║╨░╤В╨╛╤А ╤Б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╤П (╨╗╤О╨▒╨╛╨╡ ╤Г╨╜╨╕╨║╨░╨╗╤М╨╜╨╛╨╡ ╤Б╨╗╨╛╨▓╨╛, ╨┤╨╛╨╗╨╢╨╜╨╛ ╨▒╤Л╤В╤М ╨╛╨┤╨╕╨╜╨░╨║╨╛╨▓╨╛╨╡ ╤Б ╨┤╨▓╤Г╤Е ╤Б╤В╨╛╤А╨╛╨╜!) ${END} t
${GREEN}╨Ф╨╗╤П ╨╖╨░╨┐╤Г╤Б╨║╨░ ╨▓ ╨░╨▓╤В╨╛╨╝╨░╤В╨╕╤З╨╡╤Б╨║╨╛╨╝ ╤А╨╡╨╢╨╕╨╝╨╡ ╨┐╤А╨╕ ╨▓╨║╨╗╤О╤З╨╡╨╜╨╕╨╕ ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░ ╨╝╨╛╨╢╨╜╨╛ ╨┐╤А╨╛╨┐╨╕╤Б╨░╤В╤М ╨▓ /etc/rc.local ╤Б╤В╤А╨╛╨║╤Г nohup /<╨┐╤Г╤В╤М ╨║ ╤Д╨░╨╣╨╗╤Г>/vpn10.sh  > /var/log/vpn10.log 2>/dev/hull & ${END}"
exit
fi
ABSOLUTE_FILENAME=`readlink -f "$0"`                                                    # ╨┐╨╛╨╗╨╜╤Л╨╣ ╨┐╤Г╤В╤М ╨┤╨╛ ╤Б╨║╤А╨╕╨┐╤В╨░
DIR=`dirname "$ABSOLUTE_FILENAME"`                                                      # ╨║╨░╤В╨░╨╗╨╛╨│ ╨▓ ╨║╨╛╤В╨╛╤А╨╛╨╝ ╨╗╨╡╨╢╨╕╤В ╤Б╨║╤А╨╕╨┐╤В
key="$DIR/secret.key"
until [[ -n "$iftosrv" ]]
do
echo "$(date) ╨Ю╨┐╤А╨╡╨┤╨╡╨╗╤П╤О ╤Б╨╡╤В╨╡╨▓╨╛╨╣ ╨╕╨╜╤В╨╡╤А╤Д╨╡╨╣╤Б"; iftosrv=`ip route get 8.8.8.8 | head -n 1 | sed 's|.*dev ||' | awk '{print $1}'`
sleep 5
done
timedatectl
name=$(uname -n | md5sum | awk '{print $1}')
vpn=$(echo $1 | md5sum | awk '{print $1}')
echo "$(date) ╨б╨╛╨╖╨┤╨░╤О ╨┐╨░╨┐╨║╤Г ╨╜╨░ ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║╨╡"
curl -X MKCOL --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn
echo "$(date) ID ╨╜╨░ ╨┤╨╕╤Б╨║╨╡: $vpn"
until [ $c ];do
echo "$(date) ╨Ю╤З╨╕╤Й╨░╤О ╨┐╨░╨┐╨║╤Г ╨╛╤В ╨▓╤Б╤П╨║╨╛╨│╨╛ ╨╝╤Г╤Б╨╛╤А╨░"
for i in `curl --silent --user "$username:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname" | sed 's/d:displayname//g' | sed 's/>//g' | sed 's/<//' | sed 's////g' | grep -v $(date +%Y-%m-%d-%H-%M)`
do
echo -e "$(date)${RED} ╨г╨┤╨░╨╗╤П╤О ╤Б╤В╨░╤А╤Л╨╣ ╤Д╨░╨╣╨╗: $i${END}"
curl -X DELETE --user "${username}:${password}" https://webdav.yandex.ru/vpn-$vpn/$i
done
echo "$(date) ID ╨╜╨░ ╨┤╨╕╤Б╨║╨╡: $vpn"
openvpn --genkey --secret "$key"
passwd=`echo "$vpn-tt" | sha256sum | awk '{print $1}'`
openssl AES-256-CBC -e -in "$key" -out "$DIR/file.enc" -k "$passwd" -base64
curl -T "$DIR/file.enc" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/key.enc
rm "$DIR"/file.enc
echo -e "$(date) ${GREEN}╨д╨░╨╖╨░ 1 - ╨Я╨╛╨╗╤Г╤З╨╡╨╜╨╕╨╡ ╨│╨╛╤В╨╛╨▓╨╜╨╛╤Б╤В╨╕ ╤Г╨┤╨░╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╤Г╨╖╨╗╨░${END}"
go=3
localport=`shuf -i 20000-65000 -n 1`    # ╨│╨╡╨╜╨╡╤А╨░╤Ж╨╕╤П ╨╗╨╛╨║╨░╨╗╤М╨╜╨╛╨│╨╛ ╨┐╨╛╤А╤В╨░
start=''
remote=''
timeout1=''
nextcheck=''
timestart=''
until [[ $b ]]
do
echo "$(date) ╨Я╤А╨╛╨▓╨╡╤А╤П╤О ╨┐╨░╨┐╨║╤Г"
date=`date +%s`
timeout1=60
echo "$(date) ╨б╨╛╨╖╨┤╨░╨╜╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨│╨╛╤В╨╛╨▓╨╜╨╛╤Б╤В╨╕ $date"
echo "$date" > "/tmp/ready-$date-$name.txt"
curl -T "/tmp/ready-$date-$name.txt" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/ready-$name.txt
readyfile=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep -v $name | grep "ready" | grep "d:displayname" | sed 's/<d:displayname>//g' | sed 's/</d:displayname>//g'`
if [[ -z $readyfile ]]
then
echo -e "$(date) ${RED} ╨г╨┤╨░╨╗╨╡╨╜╨╜╤Л╨╣ ╤Г╨╖╨╡╨╗ ╨╜╨╡ ╨│╨╛╤В╨╛╨▓ ${END}"
echo "$(date) ╨Ц╨┤╤Г 60 ╤Б╨╡╨║╤Г╨╜╨┤"
sleep $timeout1
else
remote=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$readyfile)
echo -e "$(date) ${GREEN} ╨г╨┤╨░╨╗╨╡╨╜╨╜╤Л╨╣ ╤Г╨╖╨╡╨╗ ╨│╨╛╤В╨╛╨▓ ${END}"
start=`curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></>n</g' | grep "start" | grep "d:displayname" | sed 's/-/ /g' | awk '{print $2}'`
if [[ -z $start ]]
then
let nextcheck=$timeout1-$date+$remote
let timestart=$date+$timeout1-$nextcheck
go=$nextcheck
echo "$timestart" > "/tmp/start-$date-$name.txt"
curl -T "/tmp/start-$date-$name.txt" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/start-$date-$name.txt
else
echo "$(date) ╨╢╨┤╤Г $go ╤Б╨╡╨║╤Г╨╜╨┤"
sleep $go
b=1
a=''
fi
fi
done
echo -e "$(date) ${GREEN}╨д╨░╨╖╨░ 2 - ╨Ю╨▒╨╝╨╡╨╜ ╨┤╨░╨╜╨╜╤Л╨╝╨╕ ╨╕ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨║╨░ ╤Б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╤П${END}"
mydata=''
filename=''
address=''
myip=''
ip=''
port=''
ex=0
until [ $a ]; do
until [[ -n "$mydata" ]]; do
k=`echo "$stuns" | wc -w`
x=1
z=`shuf -i 1-$k -n 1`
for st in $stuns; do
if [[ $x == $z ]]; then
stun=$st;
fi;
(( x++ ));
done
echo "$(date) ╨Я╨╛╨┤╨║╨╗╤О╤З╨╡╨╜╨╕╨╡ ╨╕ ╨┐╨╛╨╗╤Г╤З╨╡╨╜╨╕╨╡ ╨┤╨░╨╜╨╜╤Л╤Е ╨╛╤В STUN ╤Б╨╡╤А╨▓╨╡╤А╨░: $stun"
sleep 5 && for pid in $(ps xa | grep "stun "$stun" 1 -p "$localport" -v" | grep -v grep | awk '{print $1}'); do kill $pid; done &
mydata=`stun "$stun" 1 -p "$localport" -v 2>&1 | grep "MappedAddress" | sort | uniq`
done
echo -e "$(date) ${GREEN}╨Ь╨╛╨╕ ╨┤╨░╨╜╨╜╤Л╨╡ ╤Б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╤П: $mydata${END}"
echo "$(date) ╨Ч╨░╨│╤А╤Г╨╖╨║╨░ ╨┤╨░╨╜╨╜╤Л╤Е ╨╜╨░ ╨п╨╜╨┤╨╡╨║╤Б.╨┤╨╕╤Б╨║"
echo "$mydata" > "$DIR/mydata"
echo "IntIP $intip" >> "$DIR/mydata"
curl -T "$DIR/mydata" --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$name-ipport.txt
rm "$DIR/mydata"
sleep 5
echo "$(date) ╨Я╨╛╨╗╤Г╤З╨╡╨╜╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨┤╨░╨╜╨╜╤Л╤Е ╤Г╨┤╨░╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╤Г╨╖╨╗╨░"
filename=$(curl --silent --user "${username}:${password}" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/vpn-$vpn/ | sed 's/></n/g' | grep "d:displayname>" | grep "ipport" | grep -v "$name" |  sed 's|.*d:displayname>||' | sed 's/</ /g' | awk '{print $1}')
if [[ -n "$filename" ]]
then
echo "$(date) ╨з╤В╨╡╨╜╨╕╨╡ ╤Д╨░╨╣╨╗╨░ ╨┤╨░╨╜╨╜╤Л╤Е ╤Г╨┤╨░╨╗╨╡╨╜╨╜╨╛╨│╨╛ ╤Г╨╖╨╗╨░: $filename"
address=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$filename | grep "MappedAddress" | head -n1 | sed 's/:/ /g')
intip2=$(curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/$filename | grep "IntIP" | head -n1 | awk '{print $2}')
echo "$(date) ╨Ю╨┐╤А╨╡╨┤╨╡╨╗╨╡╨╜╨╕╨╡ IP-╨░╨┤╤А╨╡╤Б╨░ ╨╕ ╨┐╨╛╤А╤В╨░: $address $sesid2 $tunid2"
ip=$(echo "$address" | awk '{print $3}')
port=$(echo "$address" | awk '{print $4}')
myip=`ip route get "$ip" | head -n 1 | sed 's|.*src ||' | awk '{print $1}'`
if [[ -n "$ip" && -n "$port" && -n "$myip" && -n "$localport" ]];
then
echo -e "$(date) ${GREEN} ╨б╨╛╨╡╨┤╨╕╨╜╨╡╨╜╨╕╨╡ $ip $port ${END}"
echo -e  "`date` ${GREEN} $myip:$localport -> $ip:$port ${END}"
curl --silent --user "$username:$password" https://webdav.yandex.ru/vpn-$vpn/key.enc > "$DIR/secret.enc"
openssl AES-256-CBC -d -in "$DIR/secret.enc" -out "$key" -k "$passwd" -base64
chmod 600 "$key"
rm "$DIR/secret.enc"
openvpn --remote $ip --rport $port --lport $localport 
--proto udp --dev tun --float --auth-nocache --verb 3 --mute 20 
--ifconfig "$intip" "$intip2" 
--secret "$key" 
--auth SHA256 --cipher AES-256-CBC 
--ncp-disable --ping 10 --ping-exit 20 
--comp-lzo yes
a=1
b=''
fi
else
if (( $ex >= 5 ))
then
echo "$(date) ╨б╨▒╤А╨╛╤Б"
a=1
b=''
fi
(( ex++ ))
sleep 5
fi
done
done

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдЫ:

  1. рдХреНрд▓рд┐рдкрдмреЛрд░реНрдбрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕рдореНрдкрд╛рджрдХрдорд╛ рдЯрд╛рдБрд╕реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
    # nano vpn10.sh 
  2. Yandex.disk (2rd рд▓рд╛рдЗрди) рдХреЛ рд▓рд╛рдЧреА рд▓рдЧрдЗрди (3nd line) рд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕рдВрдХреЗрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  3. рд╕реБрд░реБрдЩрдХреЛ рдЖрдиреНрддрд░рд┐рдХ IP рдареЗрдЧрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЪреМрдереЛ рд▓рд╛рдЗрди)ред
  4. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН:
    # chmod +x vpn10.sh
  5. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:
    # ./vpn10.sh nZbVGBuX5dtturD

    рдЬрд╣рд╛рдБ nZbVGBuX5dtturD рдЙрддреНрдкрдиреНрди рдЬрдбрд╛рди ID рд╣реЛ рдпрд╣рд╛рдБ

рд░рд┐рдореЛрдЯ рдиреЛрдбрдорд╛, рддреНрдпрд╕реИ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕реБрд░реБрдЩ рд░ рдЬрдбрд╛рди ID рдХреЛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЖрдиреНрддрд░рд┐рдХ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕рдХреНрд░рд┐рдп рд╣реБрдБрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдд: рдЪрд▓рд╛рдЙрди, рдо рдлрд╛рдЗрд▓ /etc/ рдорд╛ рд╕рдорд╛рд╡реЗрд╢ "nohup /<script to path>/vpn10.sh nZbVGBuX5dtturD > /var/log/vpn10.log 2>/dev/null &" рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреБред rc.local

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓реЗ рдХрд╛рдо рдЧрд░реНрдЫ, Ubuntu (18.04, 19.10, 20.04) рд░ Debian 9 рдорд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдЯреНрд░рд╛рдиреНрд╕рдорд┐рдЯрд░рдХреЛ рд░реВрдкрдорд╛ рдХреБрдиреИ рдкрдирд┐ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдЕрдиреБрднрд╡рдХреЛ рд▓рд╛рдЧрд┐ рдореИрд▓реЗ Yandex.disk рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВред
рдкреНрд░рдпреЛрдЧрдХреЛ рдХреНрд░рдордорд╛, рдпреЛ рдкрддреНрддрд╛ рд▓рд╛рдЧреНрдпреЛ рдХрд┐ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХрд╛ NAT рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрд▓реЗ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдБрджреИрдирдиреНред рдореБрдЦреНрдпрддрдпрд╛ рдореЛрдмрд╛рдЗрд▓ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдмрд╛рдЯ рдЬрд╣рд╛рдБ рдЯреЛрд░реЗрдиреНрдЯрд╣рд░реВ рдЕрд╡рд░реБрджреНрдз рдЫрдиреНред

рдо рдирд┐рдореНрди рд╕рд░реНрддрд╣рд░реВрдорд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫреБ:

  • secret.key рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЗрдиреЗрд░реЗрд╕рди рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рддрдкрд╛рдИрдВрд▓реЗ рд╕реБрд░реБ рдЧрд░реНрджрд╛, рдЧреБрдкреНрддрд┐рдХрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЯрд╛рдврд╛рдХреЛ рдиреЛрдбрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ Yandex.disk рдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЕрдкрдбреЗрдЯ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдЦрд╛рддрд╛рдорд╛ рд▓рд┐рдИ)
  • рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВрдХреЛ IP рдареЗрдЧрд╛рдирд╛рд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрд╕рд╛рдЗрдирдореЗрдиреНрдЯ
  • Yandex.disk рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБ рдЕрдШрд┐ рдбрд╛рдЯрд╛ рдЗрдиреНрдХреНрд░рд┐рдкреНрдЯ рдЧрд░реНрджреИ
  • рдХреЛрдб рдЕрдиреБрдХреВрд▓рди

рдкреНрд░рддреНрдпреЗрдХ рдШрд░рдорд╛ IPv6 рд╣реБрди рджрд┐рдиреБрд╣реЛрд╕реН!

рдЕрдкрдбреЗрдЯ рдЧрд░рд┐рдпреЛ! рдирд╡реАрдирддрдо рдлрд╛рдЗрд▓рд╣рд░реВ рд░ DEB рдкреНрдпрд╛рдХреЗрдЬ рдпрд╣рд╛рдБ - yandex.disk

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди