[Video] 17. Доступ в домашнюю сеть из Интернета через VPN на Raspberry Pi.

В этом видео я рассказываю о том как получить доступ в домашнюю сеть из Интернета:
– настройка OpenVPN access server для маршрутизации трафика в домашнюю сеть через одного из подключённых пользователей;
– подключение компьютера к VPN серверу;
– настройка маршрутизации на Raspberry Pi;
– настройка NAT на Raspberry Pi;


Необходимые настройки:

Если для доступа в домашнюю сеть Вы используете РС на базе Linux, то следующие настройки могут пригодиться.
Т.к. в линуксе нельзя сменить настройки dns при старте vpn…, то лучше задать этому публичные РС DNS сервера от Google и Yandex одновременно.
DNS Yandex.
Google Public DNS.
Если вдруг PC использует внутренний dns не доступный по CONNECTED подсети, то после установления vpn доступ к dns пропадёт и многое работать перестанет…
Если информация о dns поступает по dhcp то она будет более приоритетна по сравнению с записанным dns сервером в настройках
/etc/network/interfaces
Для этого необходимо сделать ваш, например google 8.8.8.8 сервер более приоритетным, первым в конфигурации – активируем его при запуске loopback interface:

~$ sudo cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
dns-nameservers 8.8.8.8 77.88.8.8

<часть настроек удалена>

—–
Проверить очерёдность DNS серверов можно здесь:
~$ sudo cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 77.88.8.8
nameserver 10.33.51.98
search it-inside.org

Настройка маршрутизации на Raspberry Pi (Linux):
Проверка возможности маршрутизации, если “0”, то выключена:
$ cat /proc/sys/net/ipv4/ip_forward
0

Временное влючение маршрутизации (слетает после перезагрузки):
$ sudo sysctl -w net.ipv4.conf.all.forwarding=1
net.ipv4.conf.all.forwarding = 1

Проверка возможности маршрутизации, если "1", то включена:
$ cat /proc/sys/net/ipv4/ip_forward
1

Включение маршрутизации на постоянной основе.
Проверка возможности маршрутизации, если “0”, то выключена или если закомментировано:
sudo cat /etc/sysctl.conf | grep net.ipv4.ip_forward
#net.ipv4.ip_forward=1

Включение маршрутизации – раскомментируем #net.ipv4.ip_forward=1

How to Enable IP Forwarding in Linux.

Настройка NAT на Raspberry Pi.
Необходимо настроить NAT для того, что все пакеты которые нужно отправить в туннель из домашней сети(с любого устройства в домашней сети) шли на Raspberry Pi:

sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o wlan0 -j ACCEPT

Проверка настроек iptables:
sudo iptables -L -v -n --line-numbers

Проверка настроек NAT в iptables:
sudo iptables -t nat -L

—————————————
Дополнительно про работу VPN на Raspberry Pi через wifi адаптер.
Для запуска openvpn clien на rpi через wifi интерфейс пришлось сделать следующее:
you have to edit
/etc/default/ifplugd
and change

INTERFACES="auto" <----- я не удалял эту строчку. HOTPLUG_INTERFACES="all" to HOTPLUG_INTERFACES="eth0 wlan0"

Похоже, что есть какая-то проблема в работе данного демона данной сборке rpi, так как данная проблема извесна с 2013, вероятно не много народу пользуется openvpn на rpi (как минимум через wifi).
Сам wifi работает на rpi, Openvpn работает через ethernet без проблем...
В статье ниже написано, что у пользователя проиходил сбой в работе vpn после нескольких часов работы - у меня туннель проработал более 14 часов.
raspbian "wheezy" wifi connection Openvpn disconnects wicd

Удачи!