Π‘ΡΠ°ΡΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ VPN-ΡΠ΅ΡΠ²Π΅Ρ Π·Π° NAT’ΠΎΠΌ Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° (Π±Π΅Π· Π±Π΅Π»ΠΎΠ³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ°). Π‘ΡΠ°Π·Ρ ΠΎΠ³ΠΎΠ²ΠΎΡΡΡΡ: ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° NAT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΠ°ΡΠΈΠΌ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΡΠ΅ΡΠΎΠΌ.
ΠΡΠ°ΠΊ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Ρ ΠΌΠ΅Π½Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΡΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ Android-ΡΠΌΠ°ΡΡΡΠΎΠ½Π° ΠΊ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, ΠΎΠ±Π° Π΄Π΅Π²Π°ΠΉΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡΠΊΠΈΠ΅ NAT’Ρ, ΠΏΠ»ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΡΠΎΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΆΠ΅ NAT’ΠΈΠ» ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡ
Π΅ΠΌΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°ΡΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ VPS/VDS Ρ Π±Π΅Π»ΡΠΌ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ Π°ΡΠ΅Π½Π΄Π° Π±Π΅Π»ΠΎΠ³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ° Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»Π°ΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ.
Π‘ ΡΡΠ΅ΡΠΎΠΌ
$ stun stun.sipnet.ru
ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
STUN client version 0.97
Primary: Independent Mapping, Independent Filter, random port, will hairpin
Return value is 0x000002
ΠΠΎΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄:
Independent Mapping β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Independent Filter β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΡΠΈΠ»ΡΡΡ
random port β ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΠΏΠΎΡΡ
will hairpin β Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΠ»ΡΠΊΠ°
ΠΡΠΏΠΎΠ»Π½ΠΈΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΠ, ΠΏΠΎΠ»ΡΡΠΈΠ»:
STUN client version 0.97
Primary: Independent Mapping, Port Dependent Filter, random port, will hairpin
Return value is 0x000006
Port Dependent Filter β ΠΏΠΎΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΡΠΈΠ»ΡΡΡ
Π Π°Π·Π½ΠΈΡΠ° Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ
Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄ Π³ΠΎΠ²ΠΎΡΠΈΠ»Π° ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΡΠΎΡΡΠ΅Ρ Π²Π½ΠΎΡΠΈΠ» Β«ΡΠ²ΠΎΡ Π»Π΅ΠΏΡΡΒ» Π² ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΡΡΠΎ ΠΏΡΠΎΡΠ²Π»ΡΠ»ΠΎΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅:
stun stun.sipnet.ru -p 11111 -v
Ρ ΠΏΠΎΠ»ΡΡΠ°Π» ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
β¦
MappedAddress = XX.1XX.1X4.2XX:4398
…
Π² ΡΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π»Π°ΡΡ UDP-ΡΠ΅ΡΡΠΈΡ, Π΅ΡΠ»ΠΈ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π°ΡΡ UDP-Π·Π°ΠΏΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: netcat XX.1XX.1X4.2XX 4398 -u), ΡΠΎ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ» Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΡΠΎΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ» TCPDump Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π½Π° Π½Π΅ΠΌ, Π½ΠΎ Π·Π°ΠΏΡΠΎΡ Π½Π΅ Π΄ΠΎΡ
ΠΎΠ΄ΠΈΠ» Π΄ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° β IPtables Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ NAT-ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ° Π½Π° ΡΠΎΡΡΠ΅ΡΠ΅ Π΄ΡΠΎΠΏΠ°Π» Π΅Π³ΠΎ.
ΠΠΎ ΡΠ°ΠΌ ΡΠ°ΠΊΡ ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ UDP Π·Π°ΠΏΡΠΎΡΠ° ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡΠΊΠΈΠΉ NAT Π΄Π°Π²Π°Π» Π½Π°Π΄Π΅ΠΆΠ΄Ρ Π½Π° ΡΡΠΏΠ΅Ρ
. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΡΡΠ΅Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΌΠΎΠ΅ΠΉ ΡΡΠΈΡΠ΄ΠΈΠΊΡΠΈΠΈ, ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ UDP/11111 ΠΏΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ:
iptables -t nat -A PREROUTING -i eth1 -p udp -d 10.1XX.2XX.XXX --dport 11111 -j DNAT --to-destination 192.168.X.XXX
Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ UDP-ΡΠ΅ΡΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Ρ Π»ΡΠ±ΠΎΠ³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ°. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΡΡΡΠΈΠ» OpenVPN-server (ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π²) ΡΠ»ΡΡΠ°Ρ UDP/11111 ΠΏΠΎΡΡ, ΡΠΊΠ°Π·Π°Π» Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Π²Π½Π΅ΡΠ½ΠΈΠΉ IP-Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ (XX.1XX.1X4.2XX:4398) ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΡΡ ΡΠΎ ΡΠΌΠ°ΡΡΡΠΎΠ½Π° ΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ. ΠΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ UDP-ΡΠ΅ΡΡΠΈΡ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ OpenVPN-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ, Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π·Π°ΠΏΡΡΠΊΠΎΠΌ STUN-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΌΠ½Π΅ Π½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ β Π½Π΅ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ Π²ΠΏΡΡΡΡ Π½Π°Π³ΡΡΠΆΠ°ΡΡ STUN-ΡΠ΅ΡΠ²Π΅ΡΡ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΡ «
Hairpinning ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π·Π° NAT ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΡΠΈ ΠΏΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ Π°Π΄ΡΠ΅ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°.
Π ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ UDP-ΡΠ΅ΡΡΠΈΠΈ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΡΡΠΎ β Π·Π°ΠΏΡΡΡΠΈΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΡΡΠΎΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ.
Π Π°Π±ΠΎΡΠ°Π»ΠΎ ΡΡΠΎ ΡΠ°ΠΊ:
- Π·Π°ΠΏΡΡΠΊΠ°Π» STUN-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ 11111
- ΠΏΠΎΠ»ΡΡΠ°Π» ΠΎΡΠ²Π΅Ρ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠΎΠΌ XX.1XX.1X4.2XX:4398
- ΠΎΡΠΏΡΠ°Π²Π»ΡΠ» Π΄Π°Π½Π½ΡΠ΅ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠΎΠΌ Π½Π° ΠΏΠΎΡΡΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ), Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅
- Π·Π°ΠΏΡΡΠΊΠ°Π» OpenVPN-ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΠΏΡΠΎΡΠ»ΡΡΠΊΠΎΠΉ UDP/11111 ΠΏΠΎΡΡΠ°
- Π·Π°ΠΏΡΡΠΊΠ°Π» OpenVPN-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ XX.1XX.1X4.2XX:4398 Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
- Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π» OpenVPN-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ IP-Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΡΠ° (Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ IP-Π°Π΄ΡΠ΅Ρ Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΡΡ) Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΠΎ ΡΠΌΠ°ΡΡΡΠΎΠ½Π°. ΠΠ°Π½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ OpenVPN-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΠ°ΠΊΡΠΈΠΊΠ°
ΠΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ:
# apt install openvpn stun-client sendemail
ΠΠ°ΠΏΠΈΡΠ°Π² ΠΏΠ°ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΠΏΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ (ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌ) ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ OpenVPN-ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅
# cat vpn11.sh
#!/bin/bash
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
ABSOLUTE_FILENAME=`readlink -f "$0"`
DIR=`dirname "$ABSOLUTE_FILENAME"`
localport=11111
until [[ $a ]]; do
address=`stun stun.sipnet.ru -v -p $localport 2>&1 | grep "MappedAddress" | sort | uniq | head -n 1 | sed 's/:/ /g' | awk '{print $3" "$4}'`
ip=`echo "$address" | awk {'print $1'}`
port=`echo "$address" | awk {'print $2'}`
srv="openvpn --config $DIR/server.conf --port $localport --daemon"
$srv
echo "$(date) Π‘Π΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ Π°Π΄ΡΠ΅ΡΠΎΠΌ $ip:$port"
$DIR/sendemail.sh "OpenVPN-Server" "$ip:$port"
sleep 1
openvpn --config $DIR/client.conf --remote $ip --port $port
echo "$(date) CΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΡΠ°Π·ΠΎΡΠ²Π°Π½ΠΎ"
for i in `ps xa | grep "$srv" | grep -v grep | awk '{print $1}'`; do
kill $i && echo "$(date) ΠΠ°Π²Π΅ΡΡΠ΅Π½ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° $i ($srv)"
done
echo "ΠΠ΄Ρ 15 ΡΠ΅ΠΊ"
sleep 15
done
Π‘ΠΊΡΠΈΠΏΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΏΠΎΡΡΡ:
# cat sendemail.sh
#!/bin/bash
from="ΠΡ ΠΊΠΎΠ³ΠΎ"
pass="ΠΠ°ΡΠΎΠ»Ρ"
to="ΠΠΎΠΌΡ"
theme="$1"
message="$2"
server="smtp.yandex.ru:587"
sendEmail -o tls=yes -f "$from" -t "$to" -s "$server" -xu "$from" -xp "$pass" -u "$theme" -m "$message"
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠ΅ΡΠ²Π΅ΡΠ°:
# cat server.conf
proto udp
dev tun
ca /home/vpn11-srv/ca.crt
cert /home/vpn11-srv/server.crt
key /home/vpn11-srv/server.key
dh /home/vpn11-srv/dh2048.pem
server 10.2.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
tls-server
tls-auth /home/vpn11-srv/ta.key 0
tls-timeout 60
auth SHA256
cipher AES-256-CBC
client-to-client
keepalive 10 30
comp-lzo
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
log /var/log/vpn11-server.log
verb 3
mute 20
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
# cat client.conf
client
dev tun
proto udp
ca "/home/vpn11-srv/ca.crt"
cert "/home/vpn11-srv/client1.crt"
key "/home/vpn11-srv/client1.key"
tls-client
tls-auth "/home/vpn11-srv/ta.key" 1
auth SHA256
cipher AES-256-CBC
auth-nocache
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
log /var/log/vpn11-clent.log
verb 3
mute 20
ping 10
ping-exit 30
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΏΠΎ
ΠΠ°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠ°:
# ./vpn11.sh
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°Π² Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ
# chmod +x vpn11.sh
ΠΠ° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠΌΠ°ΡΡΡΠΎΠ½Π°
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ OpenVPN Π΄Π»Ρ Android, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΠ² Π΅Π³ΠΎ, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠ°ΠΊ:
ΠΠ° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡ ΠΏΠΎΡΡΡ
ΠΡΠ°Π²Π»Ρ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΠΠ°ΠΏΡΡΠΊΠ°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡ
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ°ΡΡΠΈ Ρ ΠΏΠ΅ΡΠ΅Π½Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π½Π° Raspberry Pi 3 ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π·Π°ΠΏΡΡΡΠΈΡΡ Π²ΡΡ ΡΡΠΎ Π΄Π΅Π»ΠΎ Π½Π° LTE ΠΌΠΎΠ΄Π΅ΠΌΠ΅, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ! Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
# stun stun.ekiga.net -p 11111
STUN client version 0.97
Primary: Independent Mapping, Port Dependent Filter, random port, will hairpin
Return value is 0x000006
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Port Dependent Filter Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠΎ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄Π°Π» Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π° Raspberry Pi 3.
Π ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Π²ΡΠ±-ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ, ΡVLC Π΄Π»Ρ
ΡΠΎΠ·Π΄Π°Π½ΠΈΡ RTSP-ΠΏΠΎΡΠΎΠΊΠ° Ρ Π²ΡΠ±-ΠΊΠ°ΠΌΠ΅ΡΡ
$ cvlc v4l2:///dev/video0:chroma=h264 :input-slave=alsa://hw:1,0 --sout '#transcode{vcodec=x264,venc=x264{preset=ultrafast,profile=baseline,level=31},vb=2048,fps=12,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:rtp{sdp=rtsp://10.2.0.1:8554/}' --no-sout-all --sout-keep
ΠΈ VLC Π½Π° ΡΠΌΠ°ΡΡΡΠΎΠ½Π΅ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° (ΠΏΠΎΡΠΎΠΊ rtsp://10.2.0.1:8554/), ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ Π½Π΅ ΠΏΠ»ΠΎΡ Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΠΈΠ΄Π΅ΠΎΠ½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π½Π° ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΈ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΡΡΡ Samba, ΠΌΠ°ΡΡΡΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ°ΡΠΈΠΊ ΡΠ΅ΡΠ΅Π· VPN, ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ Π΅ΡΠ΅β¦
ΠΡΠ²ΠΎΠ΄
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, Π΄Π»Ρ ΠΎΡΠ³ΠΈΠ½ΠΈΠ·Π°ΡΠΈΠΈ VPN-ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈ Π±Π΅Π· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ IP-Π°Π΄ΡΠ΅ΡΠ° Π·Π° ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ ΠΏΠ»Π°ΡΠΈΡΡ, ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π·Π° Π°ΡΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ VPS/VDS. ΠΠΎ Π²ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ Ρ
ΠΎΡΠ΅Π»ΠΎΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°Ρ
ΠΈ ΡΠΈΠΏΠ°Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
NAT’ΠΎΠ², Π½ΠΎ Π²Π΅Π΄Ρ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°Π»ΠΎβ¦
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com