Запуск VPN-сСрвСра Π·Π° провайдСрским NAT’ΠΎΠΌ

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ VPN-сСрвСр Π·Π° NAT’ΠΎΠΌ домашнСго ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° (Π±Π΅Π· Π±Π΅Π»ΠΎΠ³ΠΎ IP-адрСса). Π‘Ρ€Π°Π·Ρƒ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ: Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ рСализация Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° NAT ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π’Π°ΡˆΠΈΠΌ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€ΠΎΡƒΡ‚Π΅Ρ€ΠΎΠΌ.
Π˜Ρ‚Π°ΠΊ, Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Ρƒ мСня Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ со своСго Android-смартфона ΠΊ Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, ΠΎΠ±Π° дСвайса ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· провайдСрскиС NAT’Ρ‹, плюсом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ Ρ‡Π΅Ρ€Π΅Π· домашний Ρ€ΠΎΡƒΡ‚Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΎΠΆΠ΅ NAT’ΠΈΠ» соСдинСния.
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ схСма с использованиСм Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ VPS/VDS с Π±Π΅Π»Ρ‹ΠΌ IP-адрСсом, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Ρ€Π΅Π½Π΄Π° Π±Π΅Π»ΠΎΠ³ΠΎ IP-адрСса Ρƒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»Π°ΡΡŒ ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ.
Π‘ ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΎΠΏΡ‹Ρ‚Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… статСй, провСдя нСсколько ΠΎΠΏΡ‹Ρ‚ΠΎΠ² со STUNΠ°ΠΌΠΈ ΠΈ NAT’Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ². РСшился Π½Π° нСбольшой экспСримСнт, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° домашнСм Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ Π½Π° ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ΅ OpenWRT:

$ 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-транслятора Π½Π° Ρ€ΠΎΡƒΡ‚Π΅Ρ€Π΅ Π΄Ρ€ΠΎΠΏΠ°Π» Π΅Π³ΠΎ.
Запуск VPN-сСрвСра Π·Π° провайдСрским 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-сСрвСры.
Π’Π°ΠΊ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ» Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° запись «will hairpin β€” Π±ΡƒΠ΄Π΅Ρ‚ шпилька«, Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ

Hairpinning позволяСт ΠΎΠ΄Π½ΠΎΠΉ машинС Π² локальной сСти Π·Π° NAT ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ машинС Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ сСти ΠΏΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ адрСсу ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

Запуск VPN-сСрвСра Π·Π° провайдСрским NAT'ΠΎΠΌ
Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ поддСрТания UDP-сСссии Ρ€Π΅ΡˆΠΈΠ» просто β€” запустил ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° этом ΠΆΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с сСрвСром.
Π Π°Π±ΠΎΡ‚Π°Π»ΠΎ это Ρ‚Π°ΠΊ:

  • запускал STUN-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ 11111
  • ΠΏΠΎΠ»ΡƒΡ‡Π°Π» ΠΎΡ‚Π²Π΅Ρ‚ с внСшним IP-адрСсом ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ XX.1XX.1X4.2XX:4398
  • отправлял Π΄Π°Π½Π½Ρ‹Π΅ с внСшним IP-адрСсом ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвис), Π½Π°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π½Π° смартфонС
  • запускал OpenVPN-сСрвСр Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΠΎΠΉ UDP/11111 ΠΏΠΎΡ€Ρ‚Π°
  • запускал OpenVPN-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ XX.1XX.1X4.2XX:4398 для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ
  • Π² любоС врСмя запускал OpenVPN-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° смартфонС с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ IP-адрСса ΠΈ ΠΏΠΎΡ€Ρ‚Π° (Π² ΠΌΠΎΠ΅ΠΌ случаС IP-адрСс Π½Π΅ мСнялся) для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Запуск VPN-сСрвСра Π·Π° провайдСрским NAT'ΠΎΠΌ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ своСму ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ со смартфона. Данная рСализация позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ любого 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, скопировав ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», сСртификаты ΠΈ настроив Π΅Π³ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚Π°ΠΊ:
На смартфонС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ почтуЗапуск VPN-сСрвСра Π·Π° провайдСрским NAT'ΠΎΠΌ
ΠŸΡ€Π°Π²Π»ΡŽ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΡ€Ρ‚Π° Π² настройкахЗапуск VPN-сСрвСра Π·Π° провайдСрским NAT'ΠΎΠΌ
Π—Π°ΠΏΡƒΡΠΊΠ°ΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡΡŒΠ—Π°ΠΏΡƒΡΠΊ VPN-сСрвСра Π·Π° провайдСрским NAT'ΠΎΠΌ

Π’ процСссС написания ΡΡ‚Π°Ρ‚ΡŒΠΈ я пСрСнСс ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π½Π° 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