Простая установка OpenVPN через Webmin на Ubuntu Server 14.04.4

Сразу скажу что цель этой статьи не прятать IP, как в большинстве статей в сети. Мы хотим из дома подключаться по RDP к рабочим машинам!

Долго думал как это всё реализовать в рамках VirtualBox. И в итоге самое простое решение оказалось самым верным - и это сетевой мост! Ну то-есть наш локальный NAT будет типа провайдер, и локальные адреса нашего NATа будут типа белые адреса. Хе, а почему нет!

Конфигурация нашего тестового стенда:
ubuntu server
eth0 192.168.3.120 сетевой мост типа WAN типа выход на провайдера
eth1 192.168.5.5 внутренняя сеть типа LAN выход на локальную сеть с рабочими компами

windows машина на работе
eth0 адрес 192.168.5.6
шлюз 192.168.5.1
eth1 - временно подключенная сетка просто для того чтобы поставить Putty и скачать модуль open vpn для webmin


windows машина дома
eth0 192.168.3.121 сетевой мост в VirtualBox такой же сетвеой мост как и в eth0 на сервере (эмуляция интернета во общем)

####

В ходе изучения вопроса я заметил такую особенность, на стороне "работы" сервер конечно пингует windows машину и наоборот windows машина пингует наш OpenVPN Linux сервер и всё это при том что даже если совсем убрать шлюз у той windows машины, НО подключаемая по openvpn удалённая тачка "из дома", при подключении к серверу, изначально естевственно пингует локальный адрес сервера а вот локальный адрес windows машины не пингуется, и соответственно RDP нету, ну то есть весь замысел не работает. Как вариант это решается если машины "на работе" все будут шлюзоваться на наш OpenVPN Linux сервер! Но ведь не всегда бывает так просто, нет так ли! Короче эта проблема решается вот этой командой (где 192.168.5.5 - локальный адрес нашего openvpn сервера):
sudo iptables -t nat -A POSTROUTING ! -s 192.168.5.5 -o eth1 -j SNAT --to 192.168.5.5

итак приступим:

Устанавливаем нужное ПО Windows машинах, на рабочих и на удалённой домашней.

Установка OpenVPN клиента для Windows:
https://openvpn.net/index.php/open-source/downloads.html
и Putty:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
или
http://putty.huewebrothers.de/download.html


Устанавливаем нужное ПО на наш Ubuntu server:

Установка собственно самого пакета OpenVPN


sudo apt-get install openvpn easy-rsa

Установка webmin

Переходим на страницу загрузки deb паекта и копируем команду загрузки
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.791_all.deb

Далее выполняем команду

sudo dpkg --install webmin_1.791_all.deb

Инсталлятор выругается что нет зависимостей и мы это исправим:

sudo apt-get install -f

# https://192.168.5.5:10000/
Проверяем в браузере, вбиваем адрес сервера с портом 10000. Не забываем сразу сменить порт, убрать доступ до webmin из глобала, и разрешить конкретным юзерам.


Установка модуля Webmin для работы с openvpn
В браузере переходим по этой ссылке:
http://www.webmin.com/cgi-bin/search_third.cgi?search=openvpn

И копируем адресс ссылки, на момент написания этого текста она вот такая:
http://www.openit.it/downloads/OpenVPNadmin/openvpn-2.6.wbm.gz

Далее переключаемся в web интерфейс webmin, ставим нужный модуль, Webmin - Webmin Configuration - Webmin Modules, переставляем чек на From ftp or http URL, вставлеям нашу ссылку и кликаем Install Module
###############
Далее настраиваем сертификаты нашего OpenVPN (тут webmin работатет с файлом /etc/openvpn/openvpn-ssl.cnf)

Webmin - Servers - OpenVPN + CA

Пишем имя нашего сертификата, например MyCA
жмём Save и какое-то время ждём генерацию файла /etc/openvpn/keys/myca/dh2048.pem 2048
Генерация будет в каталог /etc/openvpn/keys

############

После этого переходим на Certification Authority List
кликаем по "keys" в строке с нашим myca
Далее в появившемся диалоге заполняем Key name - это имя ключа сервера (ставим что-то типа MyServer), а также поле Key Server переставляем на server, жмём Save и ждём генерации.

#
Теперь тоже самое для клиентской части:

Certification Authority List - кликаем keys в строке с нашим myca
Далее в появившемся диалоге заполняем Key name - это имя ключа Клиента(ставим что-то типа MyClient), а также поле Key Server переставляем на client, жмём Save и ждём генерации.
#
После этого в табличке "Keys list of Certification Authority myca" видим 2 строчки "MyServer" и "MyClient" На этом работа в разделе Certification Authority List закончена.

#
Переходим в VPN List
кликаем на чудесной кнопке New VPN server - меняем Name допустим на MyVPN.
Далее спускаемся до Net IP assigns (option server) и проставляем диапазон локальных адресов для, подключающихся vpn клиентов:
# network 10.10.10.0 netmask 255.255.255.0

Далее переходим в поле Additional Configurations и вбиваем в поле:
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "redirect-gateway def1 bypass-dhcp"

Жмём Save
#

Теперь в VPN List, в нашей строке с нашим MyVPN, кликаем на Client List - далее по кнопке New VPN Client - и в появившемся диалоге вбиваем в разделе "remote (Remote IP)" наш вожделенный белый адрес:
IP server "192.168.3.120" - в моём случае (виртуалка потому что, а на самом деле здесь глобальный или белый IP адрес)
Жмём Save
#
Далее в таблице VPN Client List MyVPN, в строке нашего myclient жмём Export и сохраняем архив для передачи в клиентскую часть.
В windows клиенте путь такой: Program Files\OpenVPN\config
Кидаем туда все файлы из архива, кроме myclient.conf
а именно скопированны должны быть:
ca.crt
dh2048.pem
myclient.crt
myclient.key
myclient.ovpn


######

# Решаем проблему разных шлюзов в сети на стороне "работы":
Нам надо сделать так чтобы наш сервер поднимал наши правила Iptables при загрузке. Для этого эти правила должны находиться в определённом файле (допустим /etc/nat) и этот самый файл будет стартовать вместе с системой с помощью например того же /etc/network/interfaces.

создаём файл командой touch

sudo touch /etc/nat

sudo nano /etc/nat
И наполним его следующим содержимым:


######

#!/bin/sh

#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# тоже самое если проделать вот это:
# sudo nano /etc/sysctl.conf
# раскоментировать строку net.ipv4.ip_forward=1

# Разрешаем интернет на подключенных к нам удалённых машинах
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Решаем проблему разных шлюзов
iptables -t nat -A POSTROUTING ! -s 192.168.5.5 -o eth1 -j SNAT --to 192.168.5.5

##########

Далее дадим нашему файлу права на исполнение:

sudo chmod +x /etc/nat

Далее в конце содержимого файла /etc/network/interfaces добавляем строку:

post-up /etc/nat


Перезагружаем наш сервер!
####


Вот и всё! Подробности в видеоролике.


------------------------------------------------------- --------------------------------------------------------------------------
счетчик посещений