OpenVpn Server Ubuntu

OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым кодом. OpenVPN использует библиотеку OpenSSL, что позволяет использовать полный набор шифров из этой библиотеки для увеличения безопасности и сохранности данных. OpenVPN — одна из самых молодых реализаций VPN, тем не менее является одной из самых популярных и функциональных. OpenVPN используется в настоящее время во всех популярных операционных системах.

Примеры использования OpenVPN (VPN)

Корпоративная виртуальная частная сеть (VPN) Есть у нас офис, но сотрудники офиса желают иметь доступ к внутренней сети везде где есть доступ к сети интернет, при этом невозможно каждому участнику сети получить выделенный IP адрес, более того все IP адреса, постоянно меняются, как и провайдеры. Но нашей целью является организовать сеть и она должна быть безопасной, корпоративная тайна и все такое — Вы понимаете. Вот нам и понадобится OpenVPN (VPN).

Личная виртуальная частная сеть (VPN) У меня несколько компьютеров, они могут регулярно подключаться к разным провайдерам, с разных точек планеты, тем более что для разных задач я с собой беру разное устройство. Получить выделенный IP тут не возможно. Хранить все свои данные на сервере в интернет нет желания. Но несмотря на все я хочу с любого устройства иметь доступ к другим своим компьютерам (мало ли что).

VPN туннель для подключения к интернету Представьте, что большая часть сети заблокирована провайдером (шлюзом), т.е. мы не можем получить доступ к нужным ресурсам. Тут можно настроить VPN туннель и подключаться к интернету через сервер VPN (туннель).

Думаю с примерами нам уже нужно завязывать и переходить к настройке сего чуда. В конце статьи есть Видео

Настройка сервера OpenVPN (VPN) в Debian

Перед установкой OpenVPN необходимо озаботится поддержкой системой псевдо-устройства «tun».
Для Debian проверить его наличие и поддержку можно следующим образом:

bash:

ls -l /dev/net/tun

Для работы с интерфейсом «tun» нам понадобится модуль ядра «tun». Проверяем, загружен ли он:

bash:

lsmod | grep tun

На самом деле проверку можно опустить, если конечно Вы не пересобрали сами ядро без поддержки tun.
Далее переходим к установке пакетов OpenVPN, OpenSSL и библиотеку сжатия трафика LZO:

bash:

apt-get install openvpn openssl easy-rsa

Копируем директорию для работы с утилитами для создания ключей и сертификатов и переходим в директорию:

bash:

cd /usr/share/easy-rsa/

В файле vars редактируем строки под себя, достаточно поправить:

bash:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

Затем создайте новые ключи и сертификаты:

bash:

. ./vars
./clean-all
./build-ca

Нужно будет ответить на вопросы, например: код страны, штат/провинция, населенный пункт, название организации, имя и адрес почты.

Далее создадим ключ сервера:

bash:

./build-key-server server

Нужно будет опять ответить на много вопросов, в результате появятся файлы server.key и server.crt.
Так же сделаем ключ клиента. В примере используется имя client1 (можете называть как угодно, ключи Вам понадобится передавать клиентам для подключения к OpenVPN — VPN):

если вы планируете использовать tls-auth, который позволит скрыть порт на котором сервер слушает vpn подключения, защитить от DoS атак и кое чего еще, то выполните еще и эту строку:

openvpn --genkey --secret ./keys/ta.key

bash:

./build-key client1

Затем создадим ключ Diffie Hellman:

bash:

./build-dh

В результате будет создан файл dh2048.pem. Для OpenVPN будем использовать TLS аутентификацию.
В папке ./keys появляется созданные ключи, нужные ключи нужно скопировать в директорию /etc/openvpn/:

cp ./keys/ca.crt /etc/openvpn
cp ./keys/server.crt /etc/openvpn
cp ./keys/server.key /etc/openvpn
cp ./keys/dh1024.pem /etc/openvpn

Только что мы создали ключи, теперь нужно настроить OpenVPN. Мой рабочий server.conf:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
dh dh2048.pem
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
verb 3

Сервер OpenVPN готов — перезапускам его:

bash:

service openvpn restart

Маршруты пакетов в виртуальной частной сети (VPN)

Для обеспечения правильного передвижения пакетов внутри сети, необходимо настраивать маршрутизацию на сервере, для этого можно воспользоваться например iptables.
В моем случае я хотел реализовать проброс порта 48888 с сервера VPN, на клиента VPN 10.10.10.6, общий список используемых мною правил:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d %внешний ip адрес сервера% -p tcp -m tcp --dport 48888 -j DNAT --to-destination 10.10.10.6:48888
iptables -A FORWARD -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Настройка клиента OpenVPN (VPN) в Debian

Переходим к установке пакетов OpenVPN, OpenSSL и библиотеку сжатия трафика LZO:

bash:

aptitude install openvpn openssl liblzo2-2

С сервера, клиенту нужно передать ключи, которые мы генерировали, а конкретней:

  • ca.crt
  • client1.crt
  • client1.key

Скопировать ключи клиента, необходимо в директорию /etc/openvpn/ на клиенте.
Теперь сделаем файл настроек клиента, для подключения к серверу:

bash:

remote xxx.xxx.xxx.xxx 1194 # ip и порт нашего сервера
client
dev tun
ping 10
comp-lzo
proto tcp 
tls-client
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
ns-cert-type server
verb 3
pull

Закрываем, сохраняем в папке /etc/openvpn под названием client.conf и перезапускам клиента vpn:

bash:

service openvpn restart

В результате имеем примерно такую картинку:

bash:

root@valualit:~# service openvpn restart
Stopping virtual private network daemon: client.                                                                                                                                                                                             
Starting virtual private network daemon: client.                                                                                                                                                                                             
root@valualit:~#

Для настройки клиента под windows необходимо:

Скачать и установить дистрибутив OpenVpn с официального сайта https://openvpn.net/index.php/open-source/downloads.html, после этого положить ключи и файл настроек в папку C:\Program Files\OpenVPN\config, запустить openvpn-gui.exe от имени администратора и нажать «Подключиться».

Вывод:

  1. Мы создали частную виртуальную сеть VPN над интернетом с помощью OpenVPN, объединив нужные компьютеры в локальную сеть.
  2. Клиенты виртуальной частной сети VPN используют в нашем случае сервер, как шлюз для выхода в интернет.
  3. С помощью iptables и NAT мы указали правила движения пакетов и конечно проброс порта на нужный. В результате я могу подключится из любой точки мира к своему компьютеру, который не имеет выделенного ip адреса.
Видео по настройке

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *