เชชเซเชฐเชฆเชพเชคเชพ NATs เชฆเซเชตเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเซเชธ เชตเชšเซเชšเซ‡ เชกเชพเชฏเชฐเซ‡เช•เซเชŸ VPN เชŸเชจเชฒ (VPS เชตเชฟเชจเชพ, STUN เชธเชฐเซเชตเชฐ เช…เชจเซ‡ Yandex.disk เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡)

เชšเชพเชฒเซ เชฐเชพเช–เชตเซเช‚ เชฒเซ‡เช– NAT เชชเซเชฐเชฆเชพเชคเชพเช“เชจเซ€ เชชเชพเช›เชณ เชธเซเชฅเชฟเชค เชฌเซ‡ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเซเชธ เชตเชšเซเชšเซ‡ เชฎเซ‡เช‚ เชธเซ€เชงเซ€ VPN เชŸเชจเชฒ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡. เช…เช—เชพเช‰เชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชคเซƒเชคเซ€เชฏ เชชเช•เซเชทเชจเซ€ เชฎเชฆเชฆเชฅเซ€ เช•เชจเซ‡เช•เซเชถเชจ เช—เซ‹เช เชตเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชตเชฐเซเชฃเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ - เชเช• เชฎเชงเซเชฏเชธเซเชฅเซ€ (เชเช• เชญเชพเชกเซ‡ เช†เชชเซ‡เชฒ VPS เชœเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ STUN เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชจเซ‹เชก เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเซ€เชŸเชฐ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡). เช† เชฒเซ‡เช–เชฎเชพเช‚ เชนเซเช‚ เชคเชฎเชจเซ‡ เช•เชนเซ€เชถ เช•เซ‡ เชนเซเช‚ VPS เชตเชฟเชจเชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซเชฏเซเช‚, เชชเชฐเช‚เชคเซ เชฎเชงเซเชฏเชธเซเชฅเซ€เช“ เชฐเชนเซเชฏเชพ เช…เชจเซ‡ เชคเซ‡เช“ STUN เชธเชฐเซเชตเชฐ เช…เชจเซ‡ Yandex.Disk...
เชชเซเชฐเชฆเชพเชคเชพ NATs เชฆเซเชตเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเซเชธ เชตเชšเซเชšเซ‡ เชกเชพเชฏเชฐเซ‡เช•เซเชŸ VPN เชŸเชจเชฒ (VPS เชตเชฟเชจเชพ, STUN เชธเชฐเซเชตเชฐ เช…เชจเซ‡ Yandex.disk เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡)

เชชเชฐเชฟเชšเชฏ

เช…เช—เชพเช‰เชจเซ€ เชชเซ‹เชธเซเชŸเชจเซ€ เชŸเชฟเชชเซเชชเชฃเซ€เช“ เชตเชพเช‚เชšเซเชฏเชพ เชชเช›เซ€, เชฎเชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ€ เชฎเซเช–เซเชฏ เช–เชพเชฎเซ€ เช เชฎเชงเซเชฏเชธเซเชฅเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชนเชคเซ‹ - เชคเซƒเชคเซ€เชฏ เชชเช•เซเชท (เชตเซ€เชชเซ€เชเชธ) เชœเซ‡ เชจเซ‹เชกเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชชเชฐเชฟเชฎเชพเชฃเซ‹, เช•เซเชฏเชพเช‚ เช…เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชคเซ‡ เชธเซ‚เชšเชตเซ‡ เช›เซ‡. เช† STUN เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชญเชฒเชพเชฎเชฃเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ (เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช˜เชฃเซเช‚ เชฌเชงเซเช‚ เช›เซ‡) เชตเชฐเซเชคเชฎเชพเชจ เชœเซ‹เชกเชพเชฃ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชธเซŒ เชชเซเชฐเชฅเชฎ, เชœเซเชฏเชพเชฐเซ‡ STUN เชธเชฐเซเชตเชฐ เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เชนเชคเซเช‚ เช…เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชตเชพเช‚เชšเซ€ เชจ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชฐเชนเซ€ เชนเชคเซ€ เชคเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ TCPDump เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชนเซเช‚ เชœเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเซเช‚ เช›เซเช‚ เชคเซ‡เชจเซ‡ เช—เซ‚เช—เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชคเซ‹ เชฒเซ‡เช–. เชฎเชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เชนเซเช‚ เชฎเชพเชฐเซ€ เชœเชพเชคเซ‡ STUN เชธเชฐเซเชตเชฐเชจเซ‡ เช•เชฐเซ‡เชฒเซ€ เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ€ เชถเช•เซเชฏเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เชตเชฟเชšเชพเชฐเชจเซ‡ "เชฆเซ‚เชฐเชจเชพ เชฌเซ‰เช•เซเชธ"เชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชถเช•เซเชฏเซ‹ เชจเชฅเซ€.

เชฅเชฟเชฏเชฐเซ€

เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชฎเชพเชฐเซ‡ เชชเซ‡เช•เซ‡เชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชฌเชฟเชฏเชจ เชชเชฐ STUN เชธเชฐเซเชตเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚

# apt install stun-server

เช…เชจเซ‡ เชจเชฟเชฐเซเชญเชฐเชคเชพเชฎเชพเช‚ เชฎเซ‡เช‚ เชธเซเชŸเชจ-เช•เซเชฒเชพเชฏเชจเซเชŸ เชชเซ‡เช•เซ‡เชœ เชœเซ‹เชฏเซเช‚, เชชเชฐเช‚เชคเซ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชจเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซเชฏเซเช‚ เชจเชนเซ€เช‚. เชชเชฐเช‚เชคเซ เชชเช›เซ€เชฅเซ€ เชฎเชจเซ‡ เชธเซเชŸเชจ-เช•เซเชฒเชพเชฏเชจเซเชŸ เชชเซ‡เช•เซ‡เชœ เชตเชฟเชถเซ‡ เชฏเชพเชฆ เช†เชตเซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เช—เซ‚เช—เชฒเชฟเช‚เช— เช…เชจเซ‡ เชฏเชพเชจเซเชกเซ‡เช•เซเชธเชฎเชพเช‚ เชถเซ‹เชง เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชฎเชจเซ‡ เชฎเชณเซเชฏเซเช‚:

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

เชœเชตเชพเชฌเชฎเชพเช‚ เชฎเชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซเช‚:

STUN เช•เซเชฒเชพเชฏเช‚เชŸ เชตเชฐเซเชเชจ 0.97
fd 21234 เชธเชพเชฅเซ‡ 3 เชชเซ‹เชฐเซเชŸ เช–เซ‹เชฒเซเชฏเซเช‚
fd 21235 เชธเชพเชฅเซ‡ 4 เชชเซ‹เชฐเซเชŸ เช–เซ‹เชฒเซเชฏเซเช‚
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 0

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹: 92 เชฌเชพเช‡เชŸเซเชธ
เชฎเซ‡เชช เช•เชฐเซ‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ = <My IP>:2885
เชธเซเชคเซเชฐเซ‹เชค เชธเชฐเชจเชพเชฎเซเช‚ = 216.93.246.18:3478
เชฌเชฆเชฒเชพเชฏเซ‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ = 216.93.246.17:3479
เช…เชœเซเชžเชพเชค เชฒเช•เซเชทเชฃ: 32800
เชธเชฐเซเชตเชฐเชจเซเช‚ เชจเชพเชฎ = Vovida.org 0.98-CPC
257 id=1 เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 0

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.17:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 0

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ <My IP>:2885 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‹ เช›เซ‡
เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹: 28 เชฌเชพเช‡เชŸเซเชธ
เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ = 0
1 id=11 เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 0

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.17:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹: 92 เชฌเชพเช‡เชŸเซเชธ
เชฎเซ‡เชช เช•เชฐเซ‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ = <My IP>:2885
เชธเซเชคเซเชฐเซ‹เชค เชธเชฐเชจเชพเชฎเซเช‚ = 216.93.246.17:3479
เชฌเชฆเชฒเชพเชฏเซ‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ = 216.93.246.18:3478
เช…เชœเซเชžเชพเชค เชฒเช•เซเชทเชฃ: 32800
เชธเชฐเซเชตเชฐเชจเซเช‚ เชจเชพเชฎ = Vovida.org 0.98-CPC
257 id=10 เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 4

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชธเซเชŸเชจ เชธเช‚เชฆเซ‡เชถ:
เชเชจเซเช•เซ‹เชกเชฟเช‚เช— เชšเซ‡เชจเซเชœ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ: 2

เชฒเซ‡เชจ 28 เชจเซ‹ เชฎเซ‡เชธเซ‡เชœ 216.93.246.18:3478 เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพ เชตเชฟเชถเซ‡
เชŸเซ‡เชธเซเชŸ I = 1
เชŸเซ‡เชธเซเชŸ II = 0
เชŸเซ‡เชธเซเชŸ III = 0
เชŸเซ‡เชธเซเชŸ I(2) = 1
nat = 1 เช›เซ‡
เชฎเซ‡เชช เช•เชฐเซ‡เชฒ IP เชธเชฎเชพเชจ = 1
hairpin = 1
เชธเชพเชšเชตเชจเชพเชฐ เชชเซ‹เชฐเซเชŸ = 0
เชชเซเชฐเชพเชฅเชฎเชฟเช•: เชธเซเชตเชคเช‚เชคเซเชฐ เชฎเซ‡เชชเชฟเช‚เช—, เชชเซ‹เชฐเซเชŸ เชกเชฟเชชเซ‡เชจเซเชกเชจเซเชŸ เชซเชฟเชฒเซเชŸเชฐ, เชฐเซ‡เชจเซเชกเชฎ เชชเซ‹เชฐเซเชŸ, เชนเซ‡เชฐเชชเชฟเชจ เช•เชฐเชถเซ‡
เชตเชณเชคเชฐ เชฎเซ‚เชฒเซเชฏ 0x000006 เช›เซ‡

เชฎเซ‚เชฒเซเชฏ เชธเชพเชฅเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช—

เชฎเซ‡เชช เช•เชฐเซ‡เชฒ เชธเชฐเชจเชพเชฎเซเช‚ = <My IP>:2885

เชคเชฎเชจเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เช›เซ‡ เชคเซ‡ เชœ! เชคเซ‡ เชธเซเชฅเชพเชจเชฟเช• UDP เชชเซ‹เชฐเซเชŸ 21234 เชชเชฐ เช•เชจเซ‡เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช† เชฎเชพเชคเซเชฐ เช…เชกเชงเซ€ เชฒเชกเชพเชˆ เช›เซ‡; เช† เชกเซ‡เชŸเชพเชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชนเซ‹เชธเซเชŸ เชชเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเซ‹ เช…เชจเซ‡ VPN เช•เชจเซ‡เช•เซเชถเชจ เช—เซ‹เช เชตเชตเซเช‚ เชคเซ‡ เชชเซเชฐเชถเซเชจ เชŠเชญเซ‹ เชฅเชฏเซ‹. เชฎเซ‡เช‡เชฒ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เช…เชฅเชตเชพ เช•เชฆเชพเชš เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ?! เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‡เช‚ เชฏเชพเชจเซเชกเซ‡เช•เซเชธ.เชกเชฟเชธเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชนเซเช‚ เช†เชตเซเชฏเซ‹ เช›เซเช‚ 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. เชฌเชจเชพเชตเซ‹ เช—เซเชชเซเชค เช•เซ€ เช†เชฆเซ‡เชถ:
    # 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 (2เชœเซ€ เชฒเชพเช‡เชจ) เชฎเชพเชŸเซ‡ เชฒเซ‹เช—เชฟเชจ (3เชœเซ€ เชฒเชพเช‡เชจ) เช…เชจเซ‡ เชชเชพเชธเชตเชฐเซเชก เชธเซ‚เชšเชตเซ‹.
  3. เชŸเชจเชฒเชจเซเช‚ เช†เช‚เชคเชฐเชฟเช• IP เชธเชฐเชจเชพเชฎเซเช‚ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‹ (4เชฅเซ€ เชฒเชพเช‡เชจ).
  4. เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ‹:
    # chmod +x vpn10.sh
  5. เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซ‹:
    # ./vpn10.sh nZbVGBuX5dtturD

    เชœเซเชฏเชพเช‚ nZbVGBuX5dtturD เช เชœเชจเชฐเซ‡เชŸ เชฅเชฏเซ‡เชฒ เช•เชจเซ‡เช•เซเชถเชจ ID เช›เซ‡ เช…เชนเซ€เช‚

เชฐเชฟเชฎเซ‹เชŸ เชจเซ‹เชก เชชเชฐ, เชคเซ‡ เชœ เช•เชฐเซ‹, เชŸเชจเชฒ เช…เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจ ID เชจเชพ เช…เชจเซเชฐเซ‚เชช เช†เช‚เชคเชฐเชฟเช• IP เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹.

เชœเซเชฏเชพเชฐเซ‡ เชšเชพเชฒเซ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เช“เชŸเซ‹เชฐเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ /etc/ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชฎเชพเชตเชฟเชทเซเชŸ "nohup /<script to the path>/vpn10.sh nZbVGBuX5dtturD > /var/log/vpn10.log 2>/dev/null &" เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚. rc.local

เชจเชฟเชทเซเช•เชฐเซเชท

เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เช‰เชฌเซเชจเซเชŸเซ (18.04, 19.10, 20.04) เช…เชจเซ‡ เชกเซ‡เชฌเชฟเชฏเชจ 9 เชชเชฐ เชšเช•เชพเชธเชพเชฏเซ‡เชฒ เช›เซ‡. เชคเชฎเซ‡ เชŸเซเชฐเชพเชจเซเชธเชฎเซ€เชŸเชฐ เชคเชฐเซ€เช•เซ‡ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เชธเซ‡เชตเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เช…เชจเซเชญเชต เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ Yandex.disk เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡.
เชชเซเชฐเชฏเซ‹เช—เซ‹ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชเชตเซเช‚ เชœเชพเชฃเชตเชพ เชฎเชณเซเชฏเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเช•เชพเชฐเชจเชพ NAT เชชเซเชฐเชฆเชพเชคเชพเช“ เชœเซ‹เชกเชพเชฃ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชคเชพ เชจเชฅเซ€. เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชฎเซ‹เชฌเชพเช‡เชฒ เช“เชชเชฐเซ‡เชŸเชฐเซ‹ เชคเชฐเชซเชฅเซ€ เชœเซเชฏเชพเช‚ เชŸเซ‹เชฐเซ‡เชจเซเชŸเซเชธ เช…เชตเชฐเซ‹เชงเชฟเชค เช›เซ‡.

เชนเซเช‚ เช†เชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เช˜เชกเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚:

  • เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชคเชฎเซ‡ เชฐเซ€เชฎเซ‹เชŸ เชจเซ‹เชก เชชเชฐ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ secret.key เชจเซ€ เช†เชชเซ‹เช†เชช เชœเชจเชฐเซ‡เชถเชจ เชถเชฐเซ‚ เช•เชฐเซ‹, เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ‹ เช…เชจเซ‡ Yandex.disk เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเซ‹ (เช…เชชเชกเซ‡เชŸเซ‡เชก เชตเชฐเซเชเชจเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ)
  • เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเชพ IP เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เช†เชชเซ‹เช†เชช เชธเซ‹เช‚เชชเชฃเซ€
  • Yandex.disk เชชเชฐ เช…เชชเชฒเซ‹เชก เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชเชจเซเช•เซเชฐเชฟเชชเซเชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
  • เช•เซ‹เชก เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ

เชฆเชฐเซ‡เช• เช˜เชฐเชฎเชพเช‚ IPv6 เชฐเชนเซ‡เชตเชพ เชฆเซ‹!

เช…เชชเชกเซ‡เชŸ! เชจเชตเซ€เชจเชคเชฎ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ DEB เชชเซ‡เช•เซ‡เชœ เช…เชนเซ€เช‚ - yandex.disk

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹