Настройка vpn сервера ubuntu 16.04

By admin | July 11, 2018

VPN (Virtual Private Network) – это технология, позволяющая объединять компьютеры через интернет так, как будто они находятся в одной локальной сети. В результате мы можем объединять в одну сеть офисы, расположенные в разных городах и странах.
Установив VPN-сервер дома, а клиентскую часть на смартфон, можно выходить в интернет через публичные точки WiFi не боясь, что ваши пароли  будут перехвачены.
Аренда сервера в в зарубежном дата-центре стоит от 5$ в месяц и разместив VPN в американском регионе мы получаем доступ к Spotify, Pandora, Hulu и другим сервисам, недоступным в вашей стране, да и цензура в интернет вас больше не касается.

1. Установим OpenVPN.

Обновим наш сервер и установим OpenVPN и центр сертификации.

sudo apt update

sudo apt upgrade

sudo apt install openvpn easy-rsa

OpenVPN это виртуальная частная сеть, использующая для шифрования трафика TLS/SSL. А это означает, что нам потребуются доверенные сертификаты.

2. Настройка центра сертификации

Настроим центр сертификации.

make-cadir ~/openvpn-ca

cd ~/openvpn-ca

nano vars

Найдем следующий фрагмент:

 . . . . .

 export KEY_COUNTRY="US"

 export KEY_PROVINCE="CA"

 export KEY_CITY="SanFrancisco"

 export KEY_ORG="Fort-Funston"

 export KEY_EMAIL=""

 export KEY_OU="MyOrganizationalUnit"

 . . . . .

и заменим на свои данные

. . . . .

 export KEY_COUNTRY="

RU

" export KEY_PROVINCE="

SPb

" export KEY_CITY="

Sankt-Peterburg

" export KEY_ORG="

admin812.ru

" export KEY_EMAIL="

" export KEY_OU="

IT

" . . . . .

Несколькими строками ниже поменяем значение KEY_NAME

export KEY_NAME="server"
cd ~/openvpn-ca

source vars

В ответ система должна выдать:

NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

На всякий случай очистим каталог от всех ключей:

./clean-all

и создадим корневой центр сертификации:

./build-ca

Необходимые значения будут автоматически подставляться из файла vars, который мы редактировали чуть выше. Просто нажимаем Enter для подтверждения выбора.

Мы установили центр сертификации который мы будем использовать для создания других необходимых нам файлов.

3. Создание сертификата, ключа и файлов шифрования для сервера

Сперва создадим сертификат OpenVPN и ключи для сервера. Для этого запустим следующую команду:

./build-key-server server

Соглашаемся на все значения по умолчанию, в конце два раза выбираем “y”.
Теперь сгенерируем ключи протокола Диффи-Хеллмана командой:

./build-dh

и подпись HMAC для усиления способности сервера проверять целостность и подлинность передаваемых данных TSL:

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

4. Создание сертификата и пары ключей для клиента

Рассмотрим процедуру создания ключа и сертификата для клиента client1. Если клиентов несколько, процесс создания аналогичен Для автоматического соединения мы создадим файл без пароля. Используем команду build-key:

cd ~/openvpn-ca

source vars

./build-key 

client1

5. Настройка сервиса OpenVPN

Скопируем созданные файлы (сертификат и ключ центра сертификации, сертификат и ключ сервера, подпись HMAC, файл Diffie-Hellman) из директории ~/openvpn-ca/keys в /etc/openvpn

cd ~/openvpn-ca/keys

sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Далее нужно создать и настроить конфигурационный файл сервера.

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

sudo nano /etc/openvpn/server.conf

Найдем раздел HMAC и раскомментируем строку с tls-auth, а также добавим параметр key-direction:

tls-auth ta.key 0 # This file is secret

key-direction 0

Затем ищем раздел шифрования и раскомментируем строку с шифром AES-128-CBC и после нее добавим алгоритм HMAC:

cipher AES-128-CBC

auth SHA256

И в заключении найдем строки user и group и раскомментируем их:

user nobody

group nogroup

6. Включение сервиса OpenVPN

Для того чтобы пользоваться нашим сервером по назначению необходимо чтобы он мог перенаправлять трафик.

sudo nano /etc/sysctl.conf

Найдите и раскомментируйте строку:

net.ipv4.ip_forward=1

Чтобы применить измененные настройки выполните:

sudo sysctl -p

Пропишем как будет запускаться наш сервер. Так как имя конфигурационного файла server.conf дадим такую команду:

sudo systemctl start [email protected]

server

Проверим запустился ли сервер:

sudo systemctl status [email protected]

и поднялся ли интерфейс tun

ip addr show tun0

Если все работает – добавляем настройки в автозагрузку:

sudo systemctl enable [email protected]

7. Скрипт для настройки клиентов.

mkdir -p ~/client-configs/files

chmod 700 ~/client-configs/files

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Внесём некоторые изменения в файл base.conf

nano ~/client-configs/base.conf

Тут необходимо внести изменения в пункте remote

. . .

# The hostname/IP and port of the server. 

# You can have multiple remote entries 

# to load balance between the servers. 

remote 

server_IP_address

1194 . . .

Вместо

server_IP_address

пропишем ip-адрес нашего сервера OpenVPN.

Далее, необходимо убедиться по какому протоколу ( tcp или udp ) работает openvpn и от какого пользователя запускается. Настройки должны быть аналогичным настройкам в файле server.conf

proto udp

user nobody

group nogroup

Сертификаты и ключи мы будем хранить прямо в конфигурационном файле, который далее создадим. Поэтому закомментируем  строки ca, cert и key

# SSL/TLS parms. 

# See the server config file for more 

# description. It's best to use 

# a separate .crt/.key file pair 

# for each client. A single ca 

# file can be used for all clients. 

#ca ca.crt 

#cert client.crt 

#key client.key

Приведем настройки клиентской части  к аналогичным настройкам сервера.

Проверьте на вашей клиентской системе наличие файла /etc/openvpn/update-resolv-conf. Если он есть, последние три строки нужно раскомментировать.

cipher AES-128-CBC 

auth SHA256



key-direction 1



# script-security 2

# up /etc/openvpn/update-resolv-conf

# down /etc/openvpn/update-resolv-conf

Ну, и наконец, создадим скрипт, с помощью которого будем создавать конфигурационные файлы для клиентов.

nano ~/client-configs/make_config.sh

Вставим текст:

#!/bin/bash



# First argument: Client identifier



KEY_DIR=~/openvpn-ca/keys

OUTPUT_DIR=~/client-configs/files

BASE_CONFIG=~/client-configs/base.conf



cat ${BASE_CONFIG} \

    <(echo -e '') \

    ${KEY_DIR}/ca.crt \

    <(echo -e '\n') \

    ${KEY_DIR}/${1}.crt \

    <(echo -e '\n') \

    ${KEY_DIR}/${1}.key \

    <(echo -e '\n') \

    ${KEY_DIR}/ta.key \

    <(echo -e '') \

    > ${OUTPUT_DIR}/${1}.ovpn

Сохраним и закроем файл, после этого сделаем его исполняемым:

chmod 700 ~/client-configs/make_config.sh

8. Генерация файлов конфигураций клиентов

cd ~/client-configs

./make_config.sh 

client1

Проверим что получилось:

ls ~/client-configs/files

в результате мы должны получить файл

client1.ovpn

с настройками соединения,сертификатами и ключом.

Данный файл нужно доставить на клиентский компьютер, используя защищенное соединение. В Linux можно воспользоваться командой scp.  На клиентском компьютере запустим:

scp

[email protected]_server_ip

:client-configs/files/client1.ovpn ~/

Копируем файл «client1.ovpn» c удаленного сервера на локальный компьютер.

 9. Установка файлов конфигураций клиентов

Последующие действия будем выполнять только на клиентском компьютере c Ubuntu. Установим OpenVPN.

sudo apt-get update

sudo apt-get install openvpn

Проверим, есть ли на нашей системе файл /etc/openvpn/update-resolv-conf

ls /etc/openvpn

Если при выводе мы получаем:

update-resolve-conf

отредактируем файл конфигурации client1.ovpn, который мы скачали с сервера

nano 

client1

.ovpn

Раскомментируем следующие строки:

script-security 2

up /etc/openvpn/update-resolv-conf

down /etc/openvpn/update-resolv-conf

Сохраним и закроем файл.

Теперь пробуем запустить соединение:

sudo openvpn --config 

client1

.ovpn

Если вы сделали все правильно, то в результате подключитесь к серверу.

65% людей при поцелуях наклоняют голову вправо.

Previous Opera vpn portable
Next Прокси для кей коллектора