เบญเบธเป‚เบกเบ‡ VPN เป‚เบ”เบเบเบปเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบœเปˆเบฒเบ™ NATs เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ (เป‚เบ”เบเบšเปเปˆเบกเบต VPS, เปƒเบŠเป‰เป€เบŠเบตเบšเป€เบงเบต STUN เปเบฅเบฐ Yandex.disk)

เบชเบทเบšเบ•เปเปˆ เบšเบปเบ”เบ„เบงเบฒเบก เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฑเบ”เบเบฒเบ™เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบญเบธเป‚เบกเบ‡ VPN เป‚เบ”เบเบเบปเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ NAT. เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก - เบ•เบปเบงเบเบฒเบ‡ (VPS เบ—เบตเปˆเป€เบŠเบปเปˆเบฒเป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ STUN เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡ node เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ). เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบ‚เป‰เบญเบเบˆเบฐเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบ‚เป‰เบญเบเบˆเบฑเบ”เบเบฒเบ™เปเบ™เบงเปƒเบ”เป‚เบ”เบเบšเปเปˆเบกเบต VPS, เปเบ•เปˆเบ•เบปเบงเบเบฒเบ‡เบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ STUN เปเบฅเบฐ Yandex.Disk ...
เบญเบธเป‚เบกเบ‡ VPN เป‚เบ”เบเบเบปเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบœเปˆเบฒเบ™ NATs เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ (เป‚เบ”เบเบšเปเปˆเบกเบต VPS, เปƒเบŠเป‰เป€เบŠเบตเบšเป€เบงเบต STUN เปเบฅเบฐ Yandex.disk)

เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบต

เบซเบผเบฑเบ‡เบˆเบฒเบเบญเปˆเบฒเบ™เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเปˆเบฒเบ‚เปเป‰เป€เบชเบเบ›เบฝเบšเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบเบฒเบ‡ - เบšเบธเบเบ„เบปเบ™เบ—เบตเบชเบฒเบก (VPS) เบ—เบตเปˆเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ node, เบšเปˆเบญเบ™เบ—เบตเปˆเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ STUN เบ™เบตเป‰ (เปƒเบ™เบ™เบฑเป‰เบ™เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ) เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ‚เป‰เบญเบเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰ TCPDump เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ STUN เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเป€เบ™เบทเป‰เบญเบซเบฒเบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. Googling เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบžเบปเบš เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹. เบ‚เป‰เบญเบเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ STUN เบ”เป‰เบงเบเบ•เบปเบงเบ‚เป‰เบญเบเป€เบญเบ‡เปเบฅเบฐเป€เบญเบปเบฒเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เป„เบงเป‰เปƒเบ™ "เบเปˆเบญเบ‡เบซเปˆเบฒเบ‡เป„เบ".

เบ—เบดเบ”เบชเบฐเบ”เบต

เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ STUN เปƒเบ™ Debian เบˆเบฒเบเบŠเบธเบ”

# apt install stun-server

เปเบฅเบฐเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบŠเบธเบ”เบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเบซเบ™เป‰เบฒเบ›เบฐเบซเบฅเบฒเบ”เปƒเบˆ, เปเบ•เปˆเบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบกเบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบกเบฑเบ™. เปเบ•เปˆเบ•เปเปˆเบกเบฒเบ‚เป‰เบญเบเบˆเบทเปˆเป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบŠเบธเบ”เบฅเบนเบเบ„เป‰เบฒ stun เปเบฅเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ, เบซเบผเบฑเบ‡เบˆเบฒเบ googling เปเบฅเบฐเบ„เบปเป‰เบ™เบซเบฒเปƒเบ™ Yandex เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบš:

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

เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹:

เบฅเบนเบเบ„เป‰เบฒ STUN เบฅเบธเป‰เบ™ 0.97
เป€เบ›เบตเบ”เบžเบญเบ” 21234 เบ”เป‰เบงเบ fd 3
เป€เบ›เบตเบ”เบžเบญเบ” 21235 เบ”เป‰เบงเบ fd 4
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 0

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก stun: 92 bytes
MappedAddress = <My IP>:2885
SourceAddress = 216.93.246.18:3478
ChangeedAddress = 216.93.246.17:3479
เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ: 32800
ServerName = Vovida.org 0.98-CPC
เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ›เบฐเป€เบžเบ” 257 id=1
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 0

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.17:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 0

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ <My IP>:2885
เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก stun: 28 bytes
ChangeRequest = 0
เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ›เบฐเป€เบžเบ” 1 id=11
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 0

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.17:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก stun: 92 bytes
MappedAddress = <My IP>:2885
SourceAddress = 216.93.246.17:3479
ChangeedAddress = 216.93.246.18:3478
เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบ: 32800
ServerName = Vovida.org 0.98-CPC
เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ›เบฐเป€เบžเบ” 257 id=10
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 4

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบ„เบงเบฒเบก stun:
เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ” ChangeRequest: 2

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ msg เบ‚เบญเบ‡ len 28 เบซเบฒ 216.93.246.18:3478
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš I = 1
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš II = 0
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš III = 0
เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš I(2) = 1
เปเบกเปˆเบ™ nat = 1
เปเบœเบ™เบ—เบตเปˆ IP เบ”เบฝเบงเบเบฑเบ™ = 1
เบ›เบฑเบเบœเบปเบก = 1
เบŠเปˆเบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ = 0
เบ›เบฐเบ–เบปเบก: เปเบœเบ™เบ—เบตเปˆเป€เบญเบเบฐเบฅเบฒเบ”, Port Dependent Filter, เบžเบญเบ”เบชเบธเปˆเบก, เบˆเบฐ hairpin
เบ„เปˆเบฒเบเบฑเบšเบ„เบทเบ™เปเบกเปˆเบ™ 0x000006

String เบกเบตเบ„เปˆเบฒ

MappedAddress = <My IP>:2885

เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹! เบกเบฑเบ™เบชเบฐเปเบ”เบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฐเบˆเบธเบšเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบขเบนเปˆเปƒเบ™เบžเบญเบ” UDP เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ 21234. เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบนเป‰เบฎเบปเบš; เบ„เปเบฒเบ–เบฒเบกเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป‚เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เป„เบ›เบซเบฒเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเปเบฅเบฐเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ VPN. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™ mail, เบซเบผเบทเบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ Telegram?! เบกเบตเบซเบฅเบฒเบเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบฅเบฐเบ‚เป‰เบญเบเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰ Yandex.disk, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเบกเบฒ เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ Curl เบœเปˆเบฒเบ™ WebDav เบเบฑเบš Yandex.disk. เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบซเบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบชเบฑเบ™เบเบฒเบ™เบงเปˆเบฒ nodes เบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบตเบเบฒเบ™เบชเบฐเปเบ•เบกเป€เบงเบฅเบฒเบขเบนเปˆเปƒเบ™ Yandex.disk;
  2. เบ–เป‰เบฒ nodes เปเบกเปˆเบ™เบเบฝเบกเบžเป‰เบญเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป„เบ”เป‰เบฎเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ STUN;
  3. เบญเบฑเบšเป‚เบซเบฅเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ›เบ—เบตเปˆ Yandex.disk;
  4. เบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบกเบตเบขเบนเปˆเปเบฅเบฐเบญเปˆเบฒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡ node เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเบˆเบฒเบเป„เบŸเบฅเปŒเปƒเบ™ Yandex.disk;
  5. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป‚เบฎเบ”เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเป‚เบ”เบเปƒเบŠเป‰ OpenVPN.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”

เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบดเบ”เป€เบฅเบฑเบเบ™เป‰เบญเบ, เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เบ•เบปเบงเบซเบ™เบฑเบ‡เบชเบทเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™:

# apt install openvpn stun-client curl 

script เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡:

เบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš

# 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. เป€เบฎเบฑเบ”เปƒเบซเป‰ script เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰:
    # chmod +x vpn8.sh
  6. เปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบš:
    # ./vpn8.sh nZbVGBuX5dtturD

    เบšเปˆเบญเบ™เบ—เบตเปˆ nZbVGBuX5dtturD เปเบกเปˆเบ™ ID เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ เบ—เบตเปˆเบ™เบตเป‰

เปƒเบ™ node เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ, เป€เบฎเบฑเบ”เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ”เบฝเบงเบเบฑเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ secret.key เปเบฅเบฐ ID เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ, เบžเบงเบเบกเบฑเบ™เบ•เป‰เบญเบ‡เบ„เบทเบเบฑเบ™.

เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡ (เป€เบงเบฅเบฒเบ•เป‰เบญเบ‡เบ–เบทเบ synchronized เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡):

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. เบŠเบตเป‰เบšเบญเบเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš (เปเบ–เบงเบ—เบต 2) เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบš Yandex.disk (เปเบ–เบงเบ—เบต 3).
  3. เบฅเบฐเบšเบธเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบญเบธเป‚เบกเบ‡ (เปเบ–เบงเบ—เบต 4).
  4. เป€เบฎเบฑเบ”เปƒเบซเป‰ script เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰:
    # chmod +x vpn10.sh
  5. เปเบฅเปˆเบ™เบชเบฐเบ„เบฃเบดเบš:
    # ./vpn10.sh nZbVGBuX5dtturD

    เบšเปˆเบญเบ™เบ—เบตเปˆ nZbVGBuX5dtturD เปเบกเปˆเบ™ ID เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ เบ—เบตเปˆเบ™เบตเป‰

เปƒเบ™ node เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ, เป€เบฎเบฑเบ”เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เบฅเบฐเบšเบธเบ—เบตเปˆเบขเบนเปˆ IP เบžเบฒเบเปƒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบญเบธเป‚เบกเบ‡เปเบฅเบฐ ID เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.

เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบชเบฐเบ„เบฃเบดเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”, เบ‚เป‰เบญเบเปƒเบŠเป‰เบ„เบณเบชเบฑเปˆเบ‡ โ€œnohup /<path to the script>/vpn10.sh nZbVGBuX5dtturD> /var/log/vpn10.log 2>/dev/null &โ€ เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ /etc/ rc.เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เบชเบฐเบซเบฅเบธเบš

เบชเบฐเบ„เบฃเบดเบšเป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เบปเบ”เบชเบญเบšเปƒเบ™ Ubuntu (18.04, 19.10, 20.04) เปเบฅเบฐ Debian 9. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เป‰เบญเบเปƒเบŠเป‰ Yandex.disk.
เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡, เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ„เบปเป‰เบ™เบžเบปเบšเบงเปˆเบฒเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ NAT เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบกเบทเบ–เบทเบ—เบตเปˆ torrents เบ–เบทเบเบšเบฅเบฑเบญเบ.

เบ‚เป‰เบญเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡:

  • เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡ secret.key เบ—เบธเบเป†เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเป„เบ›เบ—เบตเปˆ Yandex.disk เป€เบžเบทเปˆเบญเป‚เบญเบ™เป„เบ›เบซเบฒ node เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ (เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบฐเบšเบฑเบšเบ›เบฑเบšเบ›เบธเบ‡)
  • เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš
  • เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบญเบฑเบšเป‚เบซเบฅเบ”เป„เบ›เบเบฑเบ‡ Yandex.disk
  • เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบซเบฑเบ”

เบ‚เปเปƒเบซเป‰เบกเบต IPv6 เปƒเบ™เบ—เบธเบเบšเป‰เบฒเบ™!

เบญเบฑเบšเป€เบ”เบ”เปเบฅเป‰เบง! เป„เบŸเบฅเปŒเบซเบผเป‰เบฒเบชเบธเบ” เปเบฅเบฐเบŠเบธเบ” DEB เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰ - yandex.disk

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™