Разное

Openvpn ubuntu настройка: Настройка OpenVPN в Ubuntu | Losst

Содержание

Настройка OpenVPN в Ubuntu | Losst

Настоящая частная виртуальная сеть или Virtual Private Network (VPN)  — это зашифрованное соединенный туннель между двумя сетями, который соединяет две доверенные точки. Это не веб-протокол HTTPS, который считает доверенными всех клиентов. К VPN могут подключиться только те клиенты, которые имеют специальные ключи доступа.

Понятие VPN в наши дни стало очень растянутым, после появления частных виртуальных сетей, которые доверяют всем и распространения HTTPS. Многие из сетей VPN представляют из себя коммерческие решения с минимальным количеством настроек для обеспечения удаленного доступа сотрудников. Но не все доверяют этим решениям. Частная виртуальная сеть соединяет две сети в одну, например, сеть офиса и домашнюю сеть работника. Сервер VPN необходим для того чтобы сервер и клиент могли пройти аутентификацию друг с другом.

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

Содержание статьи:

Установка OpenVPN

На обоих машинах должен быть установлен OpenVPN, это довольно популярная программа, поэтому вы можете установить ее из официальных репозиториев. Также нам понадобится Easy-RSA для работы с секретными ключами. Для установки программ в Ubuntu используйте такую команду:

sudo apt install openvpn easy-rsa

Оба пакеты должны быть установлены как на сервере, так и на клиенте. Они понадобятся для настройки программы. Первый этап статьи установка и настройка openvpn завершен.

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

Первое что нужно сделать, это создать правильную инфраструктуру для открытых ключей на сервере. Сервером мы считаем ту машину, к которой будут подключаться пользователи. Собственный центр сертификации дает несколько преимуществ, у вас будет собственный орган сертификации, который упростит распространение ключей и управление ими. Например, вы можете отозвать сертификаты клиента на сервере. Также теперь не нужно хранить все клиентские сертификаты, центру сертификации будет достаточно знать, что сертификат подписан CA. Кроме сложной системы ключей, вы можете использовать статические ключи, если нужно предоставить доступ только нескольким пользователям.

Обратите внимание, что все секретные ключи должны находится в надежном месте. В OpenVPN открытый ключ называется сертификатом и имеет расширение .crt, а закрытый ключ так и называется ключом, его расширение — .key.

Сначала создайте папку для хранения сертификатов Easy-RSA. Фактически, конфигурация OpenVPN выполняется вручную, так что папку можно разместить где угодно:

sudo mkdir /etc/openvpn/easy-rsa

Затем скопируем в эту папку все необходимые скрипты easy-rsa:

sudo cp -R /usr/share/easy-rsa /etc/openvpn/

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

cd /etc/openvpn/easy-rsa/

sudo -i
# source ./vars
# ./clear-all
# ./build-ca

 

Первой командной мы переключаемся в консоль от имени суперпользователя, второй загружаем переменные окружения из файла ./vars. Команда ./clear-all создает папку keys если ее нет и очищает ее содержимое. И последняя команда инициализирует наш центр сертификации. Теперь в папке .keys появились все необходимые ключи:

Настройка сертификатов клиента

 

Дальше нужно повторить процедуру копирования скриптов управления RSA, как мы это делали на сервере:

sudo cp -R /usr/share/easy-rsa /etc/openvpn/

 

Теперь нам нужно скопировать сертификат, файл с расширением .crt в папку /etc/openvpn на всех клиентах. Например, скачаем этот файл для нашего клиента с помощью scp:

sudo scp пользователь@хост:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys

Только теперь можно создать свой секретный ключ на основе сертификата CA:

cd /etc/openvpn/easy-rsa/

sudo -i
# source ./vars
# build-req Sergiy

Обратите внимание, что ca.crt должен лежать в папке с ключами, иначе ничего не сработает. Теперь утилита создаст ключ, на основе которого, вы сможете подключиться к OpenVPN серверу, но вам еще осталось подписать его на сервере. Отправьте полученный .csr файл на сервер с помощью того же самого scp:

scp /etc/openvpn/easy-rsa/keys/Sergiy.csr пользователь@хост:~/

Затем уже на сервере в папке /etc/openvpn/easy-rsa нужно выполнить команду подписи сертификата:

./sign-req ~/Sergiy

Подпись сертификата нужно подтвердить. Затем программа сообщит что он был подписан и добавлен в базу данных. В папке с сертификатом csr появится файл .crt, который нужно вернуть назад на клиентскую машину:

sudo scp пльзователь@хост:/home/Sergiy.crt /etc/openvpn/easy-rsa/keys

Только после этого сервер и клиент имеют все необходимые ключи для подключения и установки связи. Осталось еще несколько настроек. Если вы планируете использовать шифрование TLS, то необходимо создать на сервере набор данных Диффи-Хафмана, для этого используйте команду:

./build-dh

Дальше будет рассмотрена настройка OpenVPN для сервера и клиента, осталось совсем немного до получения рабочей конфигурации.

Настройка OpenVPN

Теперь настройка сервера OpenVPN. По умолчанию, в папке конфигурационных файлов OpenVPN ничего нет. Их нужно создать самостоятельно в зависимости от того, что планируется настраивать, сервер или клиент. Нужный файл конфигурации OpenVPN можно найти по адресу /usr/share/doc/openvpn/examples/sample-config-files/. Сначала создадим конфигурационный файл для сервера:

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

Здесь вам нужно настроить несколько параметров:

port и proto — порт и протокол, по которым будет работать программа;

port 1194
proto udp

Все созданные ключи нужно прописать в конфигурационном файле. Наши ключи хранятся по адресу /etc/openvpn/easy-rsa/keys:

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/ca.crt
key /etc/openvpn/easy-rsa/keys/ca.key
dh /etc/openvpn/easy-rsa/keys/dh.pem

Настраиваем диапазон адресов для виртуальной сети, наш сервер будет доступен по первому из них — 10.8.0.1:

server 10.8.0.0 255.255.255.0

После завершения настройки сохраните изменения в файле, вы можете либо вставить всю эту конфигурацию себе или отредактировать файл с примером. Готовые рабочие настройки сервера:

port 1194
proto udp
comp-lzo
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh3048.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

Настройка сервера OpenVPN завершена. Дальше необходимо запустить OpenVPN сервер. Это можно сделать прямо из командной строки, просто укажите адрес конфигурационного файла:

openvpn /etc/openvpn/server.conf

Дальше нам нужно настроить компьютер клиента. Вы можете аналогично скопировать конфигурационный файл из директории с примерами, только на этот раз его не нужно распаковывать:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf  /etc/openvpn/client.conf

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

remote — это ваш адрес сервера OpenVPN, адрес и порт должны совпадать с настроенными на сервере, например:

remote 194.67.215.125 1194

 

ca — ключ, который вы получили от центра сертификации, мы расположили его в папке /etc/openvpn/.

cert и key — это открытый и секретный ключи клиента, с помощью них вы и будете подключаться к серверу. Как вы помните, мы сохранили их в папке /etc/openvpn/easy-rsa/keys/.

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key

Остальные настройки можно оставить как есть. Вот файл настройки целиком, который вы можете скопировать:

client
dev tun
proto udp
remote 194.67.215.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
verb 3

Сохраните настройки, теперь клиент готов к подключению. Обратите внимание, что конфигурационные файлы должны максимально совпадать, отсутствие определенных опций в одном из файлов может привести к ошибкам. Это не значит, что файлы будут идентичны, но основные параметры openvpn должны быть одинаковыми. Вам осталось запустить OpenVPN на этой машине используя этот конфигурационный файл:

openvpn /etc/openvpn/client.conf

Готово, теперь все работает, если вы выполните ifconfig, то увидите что был добавлен интерфейс tun0:

ifconfig

Также вы можете попробовать выполнить ping адреса 10.8.0.1, именно этот адрес мы настроили для нашего сервера OpenVPN, пакеты ping будут нормально отправляться. Если пакеты не идут, или еще что-то не работает, обратите внимание на вывод обоих программ, возможно, возникли какие-либо ошибки или предупреждения, также убедитесь, что брандмауэр сервера разрешает доступ извне по udp для порта 1194. Еще можно запустить сервер или клиент, настроив в конфиге уровень подробности на максимум verb 9. Очень часто это помогает понять почему что-то не работает. Но вы еще не можете направлять трафик через туннель. Для этого нужно разрешить форвардинг и добавить несколько правил iptables. Сначала разрешаем транзит пакетов на сервере:

 sysctl -w net.ipv4.ip_forward=1

Затем добавьте такие правила. Разрешаем всем подключаться к нашему серверу:

 iptables -A INPUT -p udp --dport 1194 -j ACCEPT

Разрешаем пользователям OpenVPN доступ к интернету:

 iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Выводы

В этой статье мы рассмотрели как выполняется установка и настройка OpenVPN Ubuntu, а также как настроить openvpn для работы с аутентификацией по ключу. Организация частных виртуальных сетей может быть очень полезной не только в организациях, но и скажем для обмена данными между двумя вашими компьютерами или для повышения безопасности в сети.

OpenVPN | Русскоязычная документация по Ubuntu

OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.

  • Хотим соединить в одну виртуальную сеть несколько локальных сетей в офисах, географически расположенных в разных местах, посредством Интернета.

  • Хотим иметь доступ в рабочую локальную сеть из дома или в поездке

  • Имея сервер с белым IP есть желание выходить в сеть с этого IP (например если этот IP за пределами страны или сети, в которой блокируются определенные ресурсы в Интернете)

Локальная сеть 1

192.168.1.0/24 192.168.1.1
Белый внешний IP (здесь будет сервер OpenVPN)
Внутренний IP сервера OpenVPN - 192.168.1.100

Локальная сеть 2

192.168.0.0/24 192.168.0.1
Динамический IP (или даже серый - не важно для клиента OpenVPN)
Внутренний IP клиента OpenVPN - 192.168.0.100. Клиент в данном случае будет являться шлюзом для устройств в своей подсети.

Все действия проводятся с правами суперпользователя root.

sudo -i

Установка

И на сервере и на клиенте ставим один и тот же пакет.

apt-get install openvpn

Создание сервера

Создание ключей и сертификатов

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов.
Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не изменять оригиналы.

(для 12.04 LTS)

mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

(для 14.04 LTS)
С лета 2013 года easy-rsa не входит в OpenVPN и команда указанная выше не сработает(не найдет easy-rsa),
тогда делаем следующее:

apt-get install easy-rsa
mkdir /etc/openvpn/easy-rsa
cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa/2.0

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов

cd /etc/openvpn/easy-rsa/2.0

Редактируем файл переменных

nano vars

Здесь можно заполнить например так:

# Почти в самом низу файла, заполняем информацию о сертификатах по умолчанию (ваши значения).
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Amur Region"
export KEY_CITY="Blagoveschensk"
export KEY_ORG="Organization"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"
# PKCS11 я не использовал, поэтому оставил без изменений. Кто шарит нафига эта штука, допишите статью.
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

#Добавить
export KEY_ALTNAMES="VPNsRUS"

копируем конфиг openssl

cp openssl-1.0.0.cnf openssl.cnf

Загружаем переменные

source ./vars

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей

./clean-all

Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars, поэтому можно ничего не менять.

./build-ca

Создаем ключ сервера

A challenge password []: Если вы решили ввести challenge password, то необходимо убедиться, что сохранили этот пароль в безопасном месте. Если вам понадобится когда-нибудь переустановить этот сертификат, то потребуется ввести этот пароль снова.

./build-key-server server

В конце соглашаемся с запросом на подпись и добавление сертификата в базу.

Можно сразу создать ключи для клиента, перейдя в соответствующую часть статьи. Я вынес в отдельный раздел, т.к. ключи клиента могут генерироваться не один раз, чтобы было понятнее с чего начать в том случае когда нужно добавить клиента

Создаем ключ Диффи-Хеллмана

./build-dh

Cоздаем ключ для tls-аутификации

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

Перемещаем сертификаты

cp -r /etc/openvpn/easy-rsa/2.0/keys/ /etc/openvpn/

Создание файла конфигурации сервера

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn
gunzip -d /etc/openvpn/server.conf.gz

nano /etc/openvpn/server.conf
port 1194
# Протокол может быть UDP или TCP, я выбрал 1-й вариант.
proto udp
# Если вы выберите протокол TCP, здесь должно быть устройство tap. Однако, это вариант я не проверял, поэтому ищите информацию отдельно. FIXME
dev tun

# Указываем где искать ключи
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key  # This file should be kept secret
dh /etc/openvpn/keys/dh3048.pem
# Для 12.04 dh2024.pem

# Задаем IP и маску виртуальной сети. Произвольно, но если не уверены лучше делайте как показано здесь
server 10.8.0.0 255.255.255.0

# Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
client-config-dir ccd

# Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения.
ifconfig-pool-persist ipp.txt

# Указываем сети, в которые нужно идти через туннель (сеть-клиента).
route 192.168.0.0 255.255.255.0

# Включаем TLS
tls-server
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
auth SHA1
cipher AES-256-CBC

# Если нужно, чтобы клиенты видели друг друга раскомментируйте
;client-to-client

keepalive 10 120

# Сжатие трафика
comp-lzo

# Максимум клиентов
max-clients 10

user nobody
group nogroup

# Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
persist-key
persist-tun

status openvpn-status.log
log /var/log/openvpn.log
# Детальность логирования
verb 3
# Защита от повторов (максимум 20 одинаковых сообщений подряд)
mute 20

# Файл отозванных сертификатов. Разремить, когда такие сертификаты появятся.
;crl-verify /etc/openvpn/crl.pem

Создадим директорию для клиентских конфигов

mkdir /etc/openvpn/ccd

Можно запускать наш сервер OpenVPN

service openvpn restart

Смотрим список интерфейсов

ifconfig

Если среди прочих видим

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

значит VPN-сервер завелся. Если нет, то смотрим лог

tail -f /var/log/openvpn.log

Настройка маршрутизации на стороне сервера

Если сервер имеет «белый» IP то никакой маршрутизации на стороне сервера настраивать не нужно. Если сервер находится в локальной сети за NAT роутера то необходимо настроить маршрутизацию.
Для того, чтобы клиенты могли достучаться до сервера нужно пробросить порты с роутера на сервер. В разных моделях это делается по разному. Суть в том, чтобы стучась на внешний порт, например 12345 1), клиенты попадали на порт OpenVPN-сервера 1194 (или другой, который мы задали для нашего сервера).
Кроме того устройствам в локальной сети нужно сообщить, что для доступа к сети за OpenVPN-сервером нужно обращаться к нему. Но проще задать этот маршрут на роутере, который обслуживает локалку.

Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. /etc/openvpn/ccd/client

# Маршрут в сеть клиента. Требуется для доступа к сетевым устройствам в сети клиента. Если не требуется - не прописывайте.
iroute 192.168.0.0 255.255.255.0

# Задаем маршрут для клиента, чтобы он видел сеть за OpenVPN-сервером.
push "route 192.168.1.0 255.255.255.0"

Включаем ipv4_forwarding

В /etc/sysctl.conf расскомментируем #net.ipv4.ip_forward=1
после чего

sysctl -p

Создание клиента

Создание ключей и сертификатов

Ключи клиента создаются на сервере

Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов

cd /etc/openvpn/easy-rsa/2.0

Загружаем переменные

source vars

Создаем ключ клиента

В данном случае название ключа — client. Каждый ключ должен быть со своим именем.

./build-key client

Если хотим защитить ключ паролем, то генерируем его другой командой

./build-key-pass client

В этом случае при запуске соединения нужно будет каждый раз вводить пароль на ключ.

Теперь нужно не забыть скопировать ключи (ca.crt, client.crt, client.key, ta.key) на клиента OpenVPN в /etc/openvpn/keys/

Создание файла конфигурации клиента

/etc/openvpn/client.conf

client
dev tun
proto udp

# Внеший IP, на или за которым находится ваш сервер OpenVPN и порт (на сервере или роутере, за которым стоит сервер)
remote 111.222.333.444 1194

# необходимо для DynDNS
resolv-retry infinite

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
tls-client
tls-auth /etc/openvpn/keys/ta.key 1
auth SHA1
cipher AES-256-CBC
remote-cert-tls server
comp-lzo
persist-key
persist-tun

status openvpn-status.log
log /var/log/openvpn.log
verb 3
mute 20

Можно запускать наш клиент OpenVPN

service openvpn restart

Настройка маршрутизации на стороне клиента

Машина с openvpn уже готова работать с сервером в чём можно убедится

ping -c 2 10.8.0.1
ping -c 2 192.168.1.100

Но для того, чтобы пользоваться туннелем в другой офис могли другие устройства в локальной сети нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что часто проще и быстрее прописать это правило маршрутизации на роутере, который является шлюзом для устройств в сети.

Включаем ipv4_forwarding

Также как в случае с сервером.

Настройка выхода в интернет с IP сервера

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

Настройки сервера

Если же вы хотите организовать доступ из VPN сети в интернет с IP адреса сервера, то вам нужно настроить на сервере NAT.
Сделать это можно следующей командой (на сервере):

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Здесь мы указали, что сеть 10.8.0.0/24 будет выходить наружу через интерфейс eth0.

Для того что бы настройки iptables сохранились после перезагрузки нужно их дополнительно сохранить:

iptables-save > /etc/iptables.up.rules
echo "pre-up iptables-restore < /etc/iptables.up.rules" >> /etc/network/interfaces

Настройки клиента

К конфиге клиента client.conf нужно добавить строчку

redirect-gateway def1

Отзыв сертификата

cd /etc/openvpn/easy-rsa/2.0
. ./vars
./revoke-full client2

Если все прошло штатно вы должны увидеть следующий вывод, сообщающий о том, что сертификат отозван:

error 23 at 0 depth lookup:certificate revoked

Скрипт revoke-full создаст CRL-файл (certificate revocation list, список отозванных сертификатов) с именем crl.pem в подкаталоге keys. Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ. Ранее в конфиге мы прописали, что этот файл должен находится в /etc/openvpn, туда и копируем.

Отключение автозапуска OpenVPN

Это бывает полезно, например для клиента с ключем защищенным паролем, т.к. всё равно при старте системы такое соединение не поднимется в виду отсутствия пароля для ключа. Да и в том случае, если вы сделали ключ с паролем, значит, скорее всего, вам не нужно постоянное соединение.

nano /etc/default/openvpn

Раскомментируем строчку

AUTOSTART="none"

Тест производительности OpenVPN

Условия теста:

  1. VPN-сервер на ВМ Virtualbox (1 ядро i5-4670)

  2. Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ/с). Скорость буду указывать в мегабайтах, НЕ в мегабитах!

  3. Форвардинг на хоста

  4. Клиент Windows 7, OpenVPN 2.3 64, FX-6300

Результаты:

  1. Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% — 40% на 1/6 ядер.

  2. С конфигом выше — 14 МБ/с

  3. Отключаем сжатие ;comp-lzo — прибавка не более 1 МБ/с — до 15 МБ/с

  4. Отключаем аутентификацию auth none +2 МБ/с — до 17 МБ/с

  5. Отключаем шифрование cipher none +2 МБ/с — до 19 МБ/с

  6. Сжатие comp-lzo сжимает хорошо сжимаемые файлы в 2 раза хуже, чем zlib, зато почти не влияет не загрузку ЦП (в десятки раз быстрее). Проверял на копировании установленного в Windows Libreoffice 5. Сжатие в zip с помощью архиватора 7z дало результат около 35%, сжатие comp-lzo по статистике сетевого интерфейса — около 70%.

Максимальный прирост при отключении сжатия, шифрования и аутентификации составил около 35%. Не думаю, что это стоит того, чтобы отключать механизмы защиты, но ситуации бывают разные.

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

Инструкция по утсановке и настройке OpenVPN в Ubuntu

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

Как работает OpenVPN?

По окончании настройки сервера и его запуске, он перейдет в режим готовности приема и перенаправления внешних защищенных SSL-соединений на виртуальный сетевой адаптер (tun/tap).

По желанию, маршрутизация сервера может быть настроена таким образом, чтобы Интернет-трафик клиентов проходил через сервер и становился трафиком сервера. В этом случае OpenVPN будет выполнять проксирование трафика (proxy).

Что требуется от операционной системы?

Перед установкой OpenVPN необходимо убедиться в корректности базовых параметров.

  1. У сервера есть хотя бы один “белый” статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет. Если адрес динамический, но сервер все же остается быть доступным из глобальной сети — воспользуйтесь услугами DynDNS.

  2. Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа “#” решетка в начале строки).

  3. Должны быть верно указаны параметры сети — hostname, параметры DNS-серверов.

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

Приступаем к установке.

Все действия по установке будем выполнять от пользователя root.

1. Обновляем информацию о репозиториях:

apt-get update

2. Устанавливаем текущие обновления системы и установленных программ:

apt-get upgrade

3. Устанавливаем OpenVPN:

apt-get install openvpn

Важно. В базовых репозиториях, зачастую отсутствует новейшая версия пакета. Разработчики OpenVPN ведут собственный репозиторий, о том как его настроить можно ознакомиться на официальном сайте.

4. Аналогичным образом устанавливаем пакет easy-rsa:

apt-get install easy-rsa

Действия после установки.

Размещаем скрипты easy-rsa:

cd /etc/openvpn/ && make-cadir easy-rsa

Подготавливаем публичные ключи (PKI — Public Key Infrastructure):

1. Переходим в директорию /etc/openvpn/easy-rsa:

cd /etc/openvpn/easy-rsa

2. Создаем символьную ссылку на файл конфигурации openssl:

ln -s openssl-1.0.0.cnf openssl.cnf

3. Инициализируем скрипт vars:

source ./vars

Система сообщит: NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys

4. Выполняем ./clean-all

5. Для создания центра сертификации выполняем скрипт:

./build-ca

В ходе своей работы, программа задаст несколько вопросов. Отвечать на них следует латиницей. Если вы не заполните какое-либо поле, программа подставит значения по умолчанию, обычно указанные в скобках.

Создаем ключ сервера.

Для создания ключа сервера выполним команду:

./build-key-server server

Следует обратить внимание, что процесс похож на генерацию сертификата центра сертификации, однако, перед подписанием сертификата программа задаст 2 уточняющих вопроса. Если все указано верно, отвечаем “y”.

Генерация клиентских ключей.

Аналогично генерации серверных ключей создаются и клиентские:

./build-key client1

Следует обратить внимание, что созданный client1.key не имеет парольной или криптографической защиты. Это может привести к тому, что любой пользователь завладевший файлом может попробовать подключиться к серверу. Если такая угроза существует, лучше генерировать ключи другим скриптом:

./build-key-pass client2

Скрипт запросит пароль ную фразу в самом начале. Далее процесс ничем не отличается от генерации ключей сервера и простого клиента.

Следует помнить, что имена ключей должны быть уникальными. Один пользователь — один ключ с уникальным именем.

Бывает так, что в процессе работы сервера, по прошествии некоторого времени, необходимо создать еще один или несколько сертификатов. Для этого потребуется повторно инициализировать скрипт vars и только потом запустить процесс генерации ключа:

cd /etc/openvpn/easy-rsa

source ./vars

./build-key client3

Генерация ключа Диффи-Хеллмана

Благодаря протоколу Диффи-Хеллмана, две и более стороны могут получить один секретный ключ, который позволит выстроить защищенный канал связи. Генерируются ключи командой:

./build-dh

Результат будет примерно таким.

По окончании работы программы, в директории /etc/openvpn/easy-rsa/keys/ появится файл dh3048.pem

Перемещение сертификатов и ключей

Сервер

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

1. Переходим в каталог с ключами:

cd /etc/openvpn/easy-rsa/keys

2. Копируем только необходимые серверу файлы:

cp ca.crt ca.key dh3048.pem server.crt server.key /etc/openvpn

Важно понимать, что перечисленные выше файлы являются основой работы и безопасности VPN сервера. Утеря или подмена этих файлов может иметь крайне негативные последствия. Важно хранить их в надежном месте и не передавать по открытым каналам связи.

Клиенты

Клиенту понадобится всего 3 файла ca.crt, client1.crt, client1.key. Каждому клиенту необходимо отдавать только его ключи. Данные файлы можно разместить в директории /etc/openvpn на машине клиента, если она под управлением Linux-подобной ОС.

В ОС Windows их следует разместить в пользовательский каталог.

Настройка сервера и клиента

Сервер

Большинство устанавливаемых программ в ОС Linux имеют так называемые sample-файлы. Эти файлы содержат примеры настройки и объяснения их. OpenVPN не стал исключением. Распакуем серверный конфигурационный файл в директорию /etc/openvpn:

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

С полученным файлом сервер уже готов к работе. Он сконфигурирован с возможностью туннелирования, однако не имеет возможности к проксированию, т.е. отправки клиентского трафика от своего имени. Исправим это.

Для начала, проверяем какие файлы оказались в директории /etc/openvpn:

ls /etc/openvpn

Открываем файл конфигурации:

nano /etc/openvpn/server.conf

И проверяем соответствие файлов прописанных в конфигурации с файлами находящимися в каталоге. Интересны строки после “SSL/TLS root certificate (ca), certificate (cert), and private key (key).”

Если имена отличаются от существующих, следует внести необходимые исправления. Выходим из редактора сочетанием клавиш Ctrl + X.

Запускаем сервер:

/etc/init.d/openvpn start

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

/etc/init.d/openvpn status

Настройки клиента.

Предполагается, что на стороне клиента уже установлен пакет OpenVPN.

1. Копируем файл клиентских настроек в домашний каталог пользователя:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root

2. Копируем сгенерированные ключи — client1.key, client1.crt, ca.crt:

cd /etc/openvpn/easy-rsa/keys

cp client1.key client1.crt ca.crt /root

3. Редактируем файл конфигурации клиента:

nano /root/client.conf

4. Находим закомментированные строки “# The hostname/IP and port of the server”. Для параметра remote меняем my-server-1 на IP-адрес сервера или его доменное имя.

5. В том же файле, ниже, находим блок “#SSL/TLS parms.”. Редактируем имена ключей.

6. Выходим из редактирования сочетанием Ctrl + X. На вопрос о сохранении изменений отвечаем “Y”. Имя файла оставляем неизменным.

7. Переносим файлы client1.key, client1.crt, ca.crt и client.conf на компьютер клиента с которого будет происходить подключение к серверу OpenVPN.

Важно! Некоторые клиентские реализации OpenVPN работают только с файлами *.ovpn. В подобных случаях достаточно изменить расширение файл (переименовать) с client.conf на client.ovpn.

8. Подключаемся к серверу командой:

openvpn openvpn.conf

Следует обратить внимание, что проксирование до сих пор не настроено. При этом, когда клиентская машина подключена к OpenVPN-серверу, доступ в Интернет прекращается. Связано это с тем, что созданный адаптер TUN, а в месте с ним и сам сервер, являются шлюзом по умолчанию.

Настройка маршрутизации.

1. На сервере редактируем файл server.conf:

nano /etc/openvpn/server.conf

2. В файле находим следующую строку и удаляем перед ней символ “;”, таким образом раскомментируем ее:

push "redirect-gateway def1 bypass-dhcp"

3. Сохраняем и закрываем редактор.

4. Редактируем файл /etc/sysctl:

nano /etc/sysctl.conf

5. В конец файла добавляем следующую строку:

net.ipv4.ip_forward=1

Это разрешит системе пересылать трафик между интерфейсами, но изменения вступят в силу только после перезагрузки. Сохраняем файл и закрываем редактор.

6. Разрешаем форвардинг пакетов без перезагрузки сервера:

echo 1 > /proc/sys/net/ipv4/ip_forward

7. Настроим NAT в iptables. Поочередно вводим команды:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

iptables -A INPUT -i tun+ -j ACCEPT

iptables -A FORWARD -i tun+ -j ACCEPT

iptables -A INPUT -i tap+ -j ACCEPT

iptables -A FORWARD -i tap+ -j ACCEPT

Также их можно просто вписать в файл /etc/rc.local до строки “exit 0” или выполнить настройку firewall как это указано в нашей статье.

Сервер уже готов к использованию. Однако, задача проксировать весь трафик, а следовательно необходимо настроить форвардинг DNS-запросов. Настроим.

1. Устанавливаем dnsmasq

Если установка выполняется в ОС Ubuntu:

apt-get install dnsmasq

Несмотря на то, что в большинстве современных версий ОС Ubuntu dnsmasq уже предустановлен, в старых версиях необходимо выполнить так:

apt-get install dnsmasq && dpkg-reconfigure resolvconf

Возможно запустится диалоговое окно мастера установки. В нем будет 2 вопроса. В первом случае, на вопрос “prepare /etc/resolv.conf for dynamic updates” отвечаем “Yes”, а на следующий — “Append original file to dynamic file?” отвечаем “No”.

Для ОС Debian 7:

apt-get install dnsmasq resolvconf

2. Отредактируем файл настроек dnsmasq:

nano /etc/dnsmasq.conf

Добавим следующие параметры:

listen-address=10.8.0.1

bind-interfaces

Сохраняем файл и закрываем редактор.

3. Редактируем файл сетевых настроек:

nano /etc/network/interfaces

Требуется указать адрес DNS-серверов в соответствующих секциях настроек адаптера:

dns-nameservers 8.8.8.8 8.8.4.4

Возможно это действие уже произведено,. Повторно его выполнять не нужно.

4. Учитывая особенность запуска и последующей работы dnsmasq — возможность аварийного завершения до инициализации виртуального tun-адаптера, добавим следующую строчку в файл rc.local, перед “exit 0”:

/etc/init.d/dnsmasq restart

5. Теперь разрешим клиентам OpenVPN-сервера использовать DNS. С помощью редактора nano раскомментируем строку:

push "dhcp-option DNS 10.8.0.1"

Фиксируем изменения в файле.

6. Перезагружаем сервер:

reboot

Проверка работы

Выполняем повторное подключение к серверу. Пробуем открыть сайт для проверки IP-адреса. В результате должен быть IP-адрес сервера.

Средняя оценка: 4.0
Оценили: 4

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

700
300

серверная часть – База знаний Timeweb Community

Введение


VPN — виртуальная частная сеть, которая позволяет обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет).


В нашем случае мы рассмотрим создание надежной и защищенной сети VPN на основе ненадежной сети Интернет при помощи продукта OpenVPN в рамках операционной системы Ubuntu 16.04.


OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном, без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL (https://ru.wikipedia.org/wiki/OpenVPN).


Установка необходимых пакетов


Команды будем выполнять от суперпользователя.


Приступим к установке ПО:



apt-get update

apt-get install easy-rsa openvpn


easy-rsa — программа которая служит для создания и ведения инфраструктуры открытых ключей (PKI) в командной строке (CLI). В нашем случае мы будем использовать ее для выполнения действий с ключами и сертификатами, необходимыми для работы OpenVPN.


Демон OpenVPN будет работать у нас от имени непривилегированного пользователя openvpn. Добавим его:



adduser --system --no-create-home --disabled-login --group openvpn


Создание инфраструктуры открытых ключей (PKI)


Далее займемся созданием ключей и сертификатов при помощи easy-rsa. Скопируем необходимые файлы в /etc/openvpn/ и перейдем в эту директорию:



cp -r /usr/share/easy-rsa/ /etc/openvpn/

cd /etc/openvpn/easy-rsa/


Далее для удобства создания сертификатов в /etc/openvpn/easy-rsa/vars изменим следующие строки:


Производить работу с текстовыми файлами вы можете, используя удобные Вам текстовые редакторы (например, vi или nano).


  • export KEY_COUNTRY=»US» # Страна
  • export KEY_PROVINCE=»CA» # Регион/Область
  • export KEY_CITY=»SanFrancisco» # Город
  • export KEY_ORG=»Fort-Funston» # Организация
  • export KEY_EMAIL=»[email protected]» # Электронный адрес
  • export KEY_OU=»MyOrganizationalUnit» # Отдел в компании

Изменение данных переменных на работу VPN не повлияет, однако визуально может сделать подключение более информативным.


Затем необходимо инициализировать переменные, используемые при создании публичного ключа командой:




и удалить существующие ключи:




Приступаем к созданию удостоверяющего центра (CA):




В ходе установки Вам потребуется проверить корректность данных, используемых для запроса на создание сертификата (certificate request). Если Вы предварительно изменили значения переменных в /etc/openvpn/easy-rsa/vars, то Вам достаточно будет просто нажимать Enter. Также, по желанию, Вы сможете указать пароль, который будет защищать приватный ключ удостоверяющего центра. Хорошо запомните его или запишите в надежном месте!


Аналогичным образом создаем остальные ключи и сертификаты.


Сертификат сервера OpenVPN, где «server» — имя сервера:



./build-key-server server


Ключ Диффи-Хеллмана служит для использования одноименного криптографического протокола, который позволяет двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи (создание ключа может занимать от нескольких секунд до нескольких минут, не прерывайте процесс):




Ключ клиента, где «user_1» — имя клиента:




Ключ HMAC для дополнительной защиты от DoS-атак и флуда:



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


Сертификаты с ключами будут помещаться в директорию /etc/openvpn/easy-rsa/keys:




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




и перенести файлы:


# Клиентские



cp user_1.crt user_1.key ca.crt ta.key /etc/openvpn/ccd/


# Серверные



cp server.crt server.key ca.crt dh3048.pem ta.key /etc/openvpn/


Создание конфигурационного файла и запуск OpenVPN


Создаем директорию для логов OpenVPN:




И переходим к созданию конфигурационного файла:



vi /etc/openvpn/server.conf


Подробная информация по директивам в конфигурационном файле доступна в файле /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz.

 



# Пользователь и группа
user openvpn
group openvpn

# Порт, на котором висит openvpn
port 2216
# Протокол, который использует openvpn
proto udp
# Интерфейс, которой будет подниматься
dev tun

# Привязка ключей
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh3048.pem
tls-auth /etc/openvpn/ta.key 0 # 0 - использование на стороне сервера, 1 - на стороне клиента
# Файл отозванных сертификатов. Раскомментировать, когда такие сертификаты появятся.
# Создание сертификата доступно при помощи /etc/openvpn/easy-rsa/revoke-full
;crl-verify /etc/openvpn/crl.pem

# Тип шифрования
cipher AES-256-CBC
# Сжатие трафика
comp-lzo
# IP адреса, которые будут выдаваться клиентам (IP и маска)
server 10.10.0.0 255.255.255.0

# Будет производится пинг каждые 10 секунд, если пинга нет 120 сек, то будет выполнена попытка повторного подключения к клиенту
keepalive 10 120

# При падении туннеля не выключать интерфейсы, не перечитывать ключи
persist-key
persist-tun

# Директория с клиентскими сертификатами
client-config-dir ccd

# Лог статуса сервера
status /var/log/openvpn/status.log
# Лог подключения
log /var/log/openvpn/serv.log
# Уровень логирования от 0 до 9, чем выше тем больше информации
verb 3
# Защита от повторов (максимум 20 одинаковых сообщений подряд)
mute 20

# Cнятие ограничения на размер буфера сокета
sndbuf 0
rcvbuf 0

# Трафик идет через OpenVPN
push "redirect-gateway def1"
# Использование DNS сервера
push "dhcp-options DNS 8.8.8.8"


На этом настройка конфигурации OpenVPN закончена.


Включаем поддержку ipv4_forwarding. Для этого в /etc/sysctl.conf раскомментируем




после чего заново прочитаем файл:




Помимо этого разрешаем маршрутизацию трафика через OpenVPN:



iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE


«eth0» — Ваш сетевой интерфейс для выхода в Интернет. Посмотреть его можно при помощи ifconfig.


Настраиваем iptables, чтобы после перезапуске ОС, настройки сохранились:



iptables-save > /etc/iptables.save

echo -e "\npre-up iptables-restore < /etc/iptables.save" >> /etc/network/interfaces


Перезапуск и проверка корректной работы OpenVPN


Перезапускаем демон:




И проверяем поднялся ли интерфейс tun:




Также Вам могут помочь логи, которые мы настроили, и syslog:



cat /var/log/openvpn/serv.log

tail -50 /var/log/syslog


При необходимости Вы можете запустить OpenVPN вручную и проверить, возникают ли ошибки при запуске:



openvpn --config /etc/openvpn/server.conf


Следующая строка в логе /var/log/openvpn/serv.log будет означать корректный запуск VPN:



Fri Dec 8 07:19:47 2017 Initialization Sequence Completed


Заключение


Теперь Вы знаете, как установить и настроить OpenVPN на Ubuntu 16.04. Более подробную информацию смотрите в документации OpenVPN.




настройка – База знаний Timeweb Community

В статье «OpenVPN на Ubuntu 16.04: установка» было рассказано о том, как установить OpenVPN и создать другие необходимые элементы на вашем сервере. В этой статье я расскажу о следующих шагах – правильной настройке OpenVPN на Ubuntu 16.04.


1. Настройка OpenVPN


Начните с копирования файлов в директорию OpenVPN. Скопировать нужно будет все файлы, которые позже понадобятся в конфигурационной директории /etc/openvpn.


Начать лучше с тех файлов, которые были созданы ранее (о них можно прочитать в предыдущей статье): они были помещены в директорию ~/openvpn-ca/keys. Конкретные файлы, которые нужно будет переместить: сертификат и ключ центра сертификации, сертификат сервера и ключ, а также подпись HMAC и файл протокола Диффи — Хеллмана. Используйте команды ниже:



$ cd ~/openvpn-ca/keys
$ sudo cp ca.crt ca.key server.crt server.key ta.key dh3048.pem /etc/openvpn


Теперь необходимо скопировать и разархивировать пример конфигурационного файла OpenVPN в конфигурационную директорию. Нужно это для того, чтобы использовать этот пример как базу для последующих настроек. Выполните команду:



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


Переходим к настройке конфигурации OpenVPN. Для этого нужно открыть конфигурационный файл сервера:



$ sudo nano /etc/openvpn/server.conf


Базовая конфигурация


Вам нужно найти директиву tls-auth для того, чтобы, в свою очередь, найти секцию HMAC. Удалите знак точки с запятой (;) для того, чтобы раскомментировать строку tls-auth. А ниже добавьте параметр key-direction со значением 0:



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


Следующая задача – найти секцию с криптографическим шифром, и для этого вам нужно найти закомментированные строки cipher. Шифр AES-128-CBC имеет хороший уровень защиты и отличную поддержку разными продуктами. Удалите точку с запятой для того, чтобы раскомментировать строку cipher AES-128-CBC:




Ниже добавьте строку auth для того, чтобы указать алгоритм хеширования HMAC. SHA256 прекрасно подойдет, т.к. в этом случае допускается использование ключей любого размера, а длина хеш-последовательности будет составлять 256 бит.




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



user nobody
group nogroup


Как использовать VPN для всего трафика


Если вы хотите, чтобы для передачи всего трафика между двумя машинами по умолчанию использовался VPN, то вам нужно передать настройки DNS на клиентские компьютеры.


Надо раскомментировать несколько директив для того, чтобы клиентские машины по умолчанию перенаправляли весь трафик через VPN. Найдите секцию redirect-gateway и удалите знак точки с запятой:



push "redirect-gateway def1 bypass-dhcp"


Теперь найдите секцию dhcp-option и точно так же раскомментируйте обе строки:



push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"


Теперь клиенты смогут настроить DNS так, чтобы VPN использовался в качестве канала по умолчанию.

Как изменить порт и протокол

Это еще одна необязательная, но полезная настройка, которая может вам понадобиться. По умолчанию OpenVPN использует порт 1194 и UDP протокол для того, чтобы принимать клиентские соединения. Возможно, вам надо будет изменить порт, если вы столкнетесь с какими-нибудь ограничениями.


Сделать это можно в строке port в файле /etc/openvpn/server.conf. Например, вы можете изменить порт на 443, так как обычно он разрешен для использования большинством фаерволов.




Если протокол, который вы используете, имеет ограничения по номеру порта, то в строке proto вам нужно изменить UDP на TCP:




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


2. Сетевая конфигурация сервера


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


Отправка IP


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


Изменения необходимо вносить в файл /etc/sysctl.conf, поэтому сначала нужно открыть его:



$ sudo nano /etc/sysctl.conf


Теперь найдите строку с net.ipv4.ip_forward. Раскомментируйте ее, удалив знак решетки в начале:




Затем сохраните и закройте файл.


Для того, чтобы применить изменения к вашему сеансу, наберите:




Настройка UFW правил для сокрытия клиентских соединений


Наверняка у вас на сервере фаервол уже используется для того, чтобы блокировать нежелательный трафик. В случае работы с OpenVPN фаервол поможет работать с тем трафиком, который поступает на сервер. Вам будет необходимо изменить файл с правилами для того, чтобы включить маскарадинг (или по-английски masquerading, маскировка). Маскарадинг – это определенный тип трансляции сетевого адреса, при котором отправитель имеет адрес, подставляемый динамически. Перед тем, как перейти к настройке фаервола и включению маскарадинга, нужно найти публичный интерфейс сети используемой машины. Введите команду:



$ ip route | grep default


Название вашего публичного интерфейса будет иди сразу после слова “dev’. В примере ниже интерфейс называется wlp22s0:



default via 203.0.113.1 dev wlp22s0 proto static metric 600


Увидели и запомнили название интерфейса? Тогда идем дальше. Откройте файл /etc/ufw/before.rules для того, чтобы добавить нужную конфигурацию:



$ sudo nano /etc/ufw/before.rules


В этом файле содержатся настройки, которые следует внести до того, как будут применены правила UFW. Ближе к началу файла добавьте строки, написанные ниже (вставить их можно после закомментированного блока rules.before):



# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to wlp22s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp22s0 -j MASQUERADE
COMMIT
# END OPENVPN RULES


Обратите внимание, что в строчке -A POSTROUTING нужно вставить то название интерфейса, которое вы выяснили ранее.


Внесенное изменение позволяет установить правила. которые по умолчанию будут применяться к цепочке POSTROUTING (именно эта цепочка отвечает за маскарадинг) в таблице nat, и весь трафик, который идет от VPN, будет скрыт.


После внесенного изменения сохраните и закройте файл.


Теперь нужно сделать так, что фаервол по умолчанию пропускал перенаправленные пакеты. Для этого откройте вот этот файл:



$ sudo nano /etc/default/ufw


И в нем найдите директиву DEFAULT_FORWARD_POLICY. Ее значение с DROP нужно изменить на ACCEPT.



DEFAULT_FORWARD_POLICY="ACCEPT"


Затем сохраните и закройте файл.

Открытие порта OpenVPN и применение изменений


Теперь перейдем к настройке фаервола, так как необходимо, чтобы он пропускал трафик в OpenVPN.


Если ранее вы не меняли номер порта и протокол в файле /etc/openvpn/server.conf, то вам нужно открыть трафик UDP для порта 1194. Соответственно, если вы используете другой порт и протокол, то в настройках вам нужно будет использовать ваши значения.


Также нужно будет добавить SSH-порт (если ранее вы этого не сделали):



$ sudo ufw allow 1194/udp
$ sudo ufw allow OpenSSH


После этого для того, чтобы изменения вступили в силу, вам нужно выключить включить фаервол:



$ sudo ufw disable
$ sudo ufw enable


Теперь сервер настроен правильно для того, чтобы работать с OpenVPN трафиком.


3. Запуск OpenVPN


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


Для запуска сервера OpenVPN нужно обязательно указать название конфигурационного файла в качестве образца переменной после названия файла systemd. Конфигурационный файл в данном случае имеет название /etc/openvpn/server.conf, а значит, в конце юнит-файла надо написать @server.


Команда будет выглядеть так:



$ sudo systemctl start openvpn@server


Проверьте, что все запустилось корректно:



$ sudo systemctl status openvpn@server


Если все нормально, то вы увидите на экране вывод, который будет выглядеть примерно так:



Output
● [email protected] - OpenVPN connection to server
 Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
 Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
 Docs: man:openvpn(8)
 https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
 https://community.openvpn.net/openvpn/wiki/HOWTO
 Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
Main PID: 5856 (openvpn)
 Tasks: 1 (limit: 512)
 CGroup: /system.slice/system-openvpn.slice/[email protected]
 └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed


Проверьте также и доступность OpenVPN интерфейса tun0:




В выводе вы увидите конфигурацию интерфейса:



Output
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
 link/none
 inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
 valid_lft forever preferred_lft forever


Если все запущено и работает корректно, то вы можете сразу настроить сервис так, чтобы он автоматически включался при запуске сервера:



$ sudo systemctl enable openvpn@server


4. Клиентская инфраструктура


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


Создание структуры клиентской конфигурационной директории


Создайте структуру директорий внутри вашей домашней директории – это место будет использоваться для хранения файлов:



$ 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


Откройте этот новый файл в текстовом редакторе, так как сейчас в него нужно будет внести несколько изменений:



$ nano ~/client-configs/base.conf


Начните с директивы remote. Она указывает клиенту, какой IP-адрес имеет сервер OpenVPN. Этот адрес обязательно должен быть публичным. Если ранее вы изменили порт для сервера OpenVPN, то измените его в этом файле тоже:



. . .
# 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
. . .


И проверьте, что протокол в файле совпадает с тем, который указан в конфигурации сервера:




Раскомментируйте директивы user и group, удалив точку с запятой:



# Downgrade privileges after initialization (non-Windows only)
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


А настройки cipher и auth скопируйте из файла /etc/openvpn/server.conf:



cipher AES-128-CBC
auth SHA256


И еще куда-нибудь в файл вам нужно добавить директиву key-direction, задав ей обязательно значение 1:




Наконец, добавьте и несколько закомментированных строк, которые будут использоваться только для клиентов Linux, использующих файл /etc/openvpn/update-resolv-conf.



# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf


Поэтому если клиент использует Linux, и у него есть файл /etc/openvpn/update-resolv-conf, нужно раскомментировать эти строки в сгенерированном клиентском конфигурационном файле OpenVPN.


После всех этих изменений сохраните файл.


5. Скрипт генерации конфигурационных файлов


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


Сгенерированные конфигурации будут находиться в директории ~/client-configs/files.


Создайте и откройте файл под названием make_config.sh в директории ~/client-configs:



$ 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 '<ca>') \
 ${KEY_DIR}/ca.crt \
 <(echo -e '</ca>\n<cert>') \
 ${KEY_DIR}/${1}.crt \
 <(echo -e '</cert>\n<key>') \
 ${KEY_DIR}/${1}.key \
 <(echo -e '</key>\n<tls-auth>') \
 ${KEY_DIR}/ta.key \
 <(echo -e '</tls-auth>') \
 > ${OUTPUT_DIR}/${1}.ovpn


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


Установите для скрипта права на исполнение:



$ chmod 700 ~/client-configs/make_config.sh


6. Генерация клиентских конфигураций


Теперь вы можете легко генерировать клиентские конфигурационные файлы.


Если вы выполняли действия из статьи «OpenVPN на Ubuntu 16.04: установка», то у вас уже есть клиентский сертификат и ключ client1.и client1.key. Созданный выше скрипт можно использовать для того, чтобы создать конфигурацию для этих файлов (но перед этим нужно перейти в соответствующую директорию):



$ cd ~/client-configs
$ ./make_config.sh client1


Если все было выполнено правильно, у вас должен появиться файл client1.ovpn в директории ~/client-configs/files. Проверьте:



$ ls ~/client-configs/files


Вывод на экране:




Передача конфигурации клиентским машинам

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


То, как вы будете передавать файл, напрямую зависит от того, какую операционную систему использует ваш компьютер, и вашего личного желания. Однако лучше все-таки использовать SFTP (протокол для безопасного копирования файлов) либо SCP на бэкенде. Таким образом файлы будут переданы по защищенному соединению.


Например, если вы хотите использовать SFTP для передачи client1.ovpn с компьютера на Linux или Mac OS, то используйте такую команду:



$ sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/


Файл будет перемещен в домашнюю директорию.


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


Теперь нужно поговорить о том, как установить клиентский VPN профиль на разных устройствах. В этой статье я расскажу о том, как это сделать на компьютерах на Windows и Linux.


Соединение OpenVPN имеет такое же название, как и файл .ovpn. Например, в данном случае мы работаем с файлом client1.ovpn, который был создан для первого клиента.


Windows


Установка


Клиентское приложение OpenVPN для Windows вы можете найти на странице загрузок OpenVPN.


Выбирайте в зависимости от вашей версии Windows. Обратите внимание, что для установки вы должны обладать административными правами.


После установки OpenVPN скопируйте файл .ovpn в следующую папку: C:\Program Files\OpenVPN\config

После запуска OpenVPN программа автоматически увидит профиль и сделает его доступным.


OpenVPN надо всегда запускать от имени администратора, даже в тех случаях, когда вы уже зашли под административным аккаунтом. Для этого надо нажать правой кнопкой мыши на значке программы и выбрать «Запуск от имени администратора». А значит, обычным пользователям для запуска OpenVPN придется вводить административный пароль.


Для того, чтобы OpenVPN всегда запускался от имени администратора, вам нужно щелкнуть правой кнопкой мыши на иконке и зайти в «Свойства». Во вкладке «Совместимость» нажмите кнопку «Изменить параметры для всех пользователей», а в следующем окне – «Запуск программы от имени администратора».


Соединение


При запуске OpenVPN Windows будет всегда спрашивать, можно ли программе вносить изменения в ваш компьютер, и вам нужно нажимать «Да». Запуск клиента OpenVPN не устанавливает соединение автоматически, а помещает программу в область уведомлений (системный трей) для того, чтобы вы могли включать и выключать использование VPN.


После того, как вы запустили OpenVPN, вам нужно установить соединение. Сделать это можно следующим образом: нажмите правой кнопкой на иконке OpenVPN в области уведомлений, в контекстном меню выберите client1 и нажмите «Соединиться» (Connect).


Пока будет работать соединение, вы будете видеть его лог в окне статуса.


Отсоединиться от VPN можно таким же способом: нажав правую кнопку мыши на иконке OpenVPN в трее, вам нужно выбрать клиентский профиль и нажать «Отсоединиться» (Disconnet).


Linux


Установка


Если вы используете Linux, то есть несколько возможных инструментов, которые вы можете использовать (в зависимости от конкретной системы, которую вы используете).


Если это Ubuntu или Debian, то для установки используйте такие команды:



$ sudo apt-get update
$ sudo apt-get install openvpn


Для CentOS надо сначала установить EPEL репозитории и затем установить OpenVPN



$ sudo yum install epel-release
$ sudo yum install openvpn


Настройка


Проверьте, есть ли в вашем дистрибутиве скрипт /etc/openvpn/update-resolv-conf:




Вывод:




Дальше откройте клиентский конфигурационный файл OpenVPN, который вы передали ранее:




Раскомментируйте три строчки, которые добавляли ранее в DNS настройках:



script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf


В случае с CentOS поменяйте group c nogroup на nobody:




Затем сохраните и закройте файл.


Теперь вы можете использовать VPN при помощи команды openvpn:



$ sudo openvpn --config client1.ovpn


После этого вы подключитесь к серверу.


Настраиваем OpenVPN клиент Linux на примере Ubuntu / Ubuntu / Howitmake.ru

Здравствуйте.
Как и обещал, в выкладываю статью по настройке OpenVPN клиента Linux, мы с вами уже настроили OpenVPN сервер, и нам осталось настроить подключение к нему, иначе для чего он нам нужен, если к нему никто не подключается… С данным мануалом настройка будет весьма проста, эта схема была успешно оттестирована в условиях IT компании и работает по сей день.

Установим пакет OpenVPN:

sudo apt-get install openvpn

Поднимем права до root:

sudo -s

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

nano /etc/openvpn/client.conf

С содержимым:

# Тип подключения -клиент
client

# Через какое устройстов подлючаемся
dev tun0

# Через какой протокол работаем, такойже как на сервере
proto tcp

# Адрес OpenVPN сервера и его порт (можно указать IP или URL)
remote openvpn.example.org 1194

# Тип шифрования, как на OpenVPN сервере
cipher AES-256-CBC

# Сертификат удостоверяющего центра
ca ca.crt

# Сертификат и ключ клиента
cert user.crt
key user.key

# Клиент поддерживает шифрование
tls-client

# Указываем путь к ключу TLS
tls-auth ta.key 1

# Включаем компрессию данных
comp-lzo

persist-key
persist-tun

# В документации рекомендуется этот пункт для клиентов с нестабильым доступом, например Wi-Fi
resolv-retry infinite

# Не использовать специфический порт для работы
nobind

# Скрипт работает при подключении, он обновляет записи в resolv.conf при подключении к серверу и очищает их при отколючении от OpenVPN сервера
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

# Статус-лог переданные данные и т.п.
status /var/log/openvpn-status.log
# Лог клиента
log /var/log/openvpn.log
# Уровень логирования 0 в лог попадают только записи о критических ошибках, если нужно подробнее, то выставляем 9 для дебагинга
verb 0
# Количество записей после которых будет производиться запись в лог
mute 20

Нам остаётся скачать c OpenVPN сервера, где живет наш удостоверяющий центр, 4 файла:

ca.crt
user.crt
user.key
ta.key

И положить их в директорию /etc/openvpn рядом с файлом client.conf

Перезапускаем openvpn

/etc/init.d/openvpn restart

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

traceroute 172.16.1.20

traceroute to 172.16.1.20 (172.16.1.20), 30 hops max, 60 byte packets

1 172.16.10.1 (172.16.10.1) 4.066 ms 8.001 ms 7.974 ms

2 172.16.1.20 (172.16.1.20) 7.952 ms 7.931 ms 7.910 ms

Видно что пакет ушел на адрес 172.16.10.1 и с интерфеса eth2 в локальную сеть к целевому IP

Выполним трассировку к google.ru, получаем ответ вида:

traceroute google.ru

traceroute to google.ru (173.194.32.159), 30 hops max, 60 byte packets

1 111.111.111.111 (111.111.111.111) 1.360 ms 1.252 ms 1.177 ms

2 46.61.227.225 (46.61.227.225) 1.865 ms 1.271 ms 1.707 ms

3 95.167.90.39 (95.167.90.39) 18.209 ms 95.167.90.37 (95.167.90.37) 18.170 ms 95.167.90.39 (95.167.90.39) 18.496 ms

4 74.125.146.86 (74.125.146.86) 17.827 ms 17.984 ms 17.946 ms

5 216.239.42.97 (216.239.42.97) 17.771 ms 18.058 ms 18.319 ms

6 216.239.42.83 (216.239.42.83) 17.765 ms 216.239.42.49 (216.239.42.49) 19.130 ms 19.004 ms

7 72.14.236.242 (72.14.236.242) 19.287 ms 18.554 ms 18.802 ms

8 173.194.32.159 (173.194.32.159) 18.025 ms 18.269 ms 18.224 ms

Видно что ответ вылетел черз шлюз сети к которой подключен клиент, а не через наш VPN канал

Для обычного пользователя все работает как надо, чтобы проверить под пользователем supersuer нам необходимо положить ключи в директорию openvpn и поменять запись в client.conf указывающих на названия ключа и сертификата

перезапустить OpenVPN клиента и повторить трасисровку пакетов

traceroute 172.16.1.20

traceroute to 172.16.1.20 (172.16.1.20), 30 hops max, 60 byte packets

1 172.16.10.1 (172.16.10.1) 4.066 ms 8.001 ms 7.974 ms

2 172.16.1.20 (172.16.1.20) 7.952 ms 7.931 ms 7.910 ms

В локальную сеть пакеты ходят без изменений, тут ничего не поменялось

traceroute google.ru

traceroute to google.ru (173.194.122.248), 30 hops max, 60 byte packets

1 172.16.10.1 (172.16.10.1) 6.115 ms 11.448 ms 11.500 ms

2 222.222.222.222 (222.222.222.222) 11.614 ms 11.649 ms 11.676 ms

3 10.158.192.1 (10.158.192.1) 11.691 ms 11.705 ms 11.719 ms

4 v811.m9-3.caravan.ru (212.24.42.49) 11.729 ms 11.744 ms 11.751 ms

5 msk-ix-gw1.google.com (195.208.208.232) 11.736 ms 15.341 ms 15.350 ms

6 66.249.94.100 (66.249.94.100) 15.346 ms 5.884 ms 8.451 ms

7 72.14.252.22 (72.14.252.22) 49.777 ms 49.787 ms 49.796 ms

8 173.194.122.248 (173.194.122.248) 49.510 ms 49.620 ms 49.671 m

А тут видно что пакет попал на наш OpenVPN сервер и вылетел во внешний мир через интерфейс eth0
Значит и эта маршрутизация работает правильно

На этом я свой опус пожалуй и закончу, если нашли ошибку пишите в личку, возникли вопросы оставляйте их в комментариях.

OpenVPN | Русскоязычная документация по Ubuntu

OpenVPN

Если вы хотите больше, чем просто предварительно распространенные ключи, OpenVPN упрощает установку и использование инфраструктуры открытых ключей (PKI), предназначенной для аутентификации с использованием SSL/TLS сертификатов и обмена ключами между VPN сервером и клиентами. OpenVPN может использоваться режимах VPN с роутингом и сетевым мостом и настраиваться на использование как UDP так и TCP. Номер порта также может настраиваться, но официально используется 1194. И он один используется для всех коммуникаций. Реализации VPN клиента доступны почти для всего, включая все дистрибутивы Linux, OS X, Windows и OpenWRT, являющийся основой для WLAN роутеров.

Установка сервера

Для установки openvpn наберите в терминале:

sudo apt-get install openssl openvpn

Установка структуры открытых ключей (PKI)

Первым шагом при построении конфигурации OpenVPN является установка PKI. PKI состоит из:

  1. отдельные сертификаты (также известные как открытые ключи) и секретные ключи для сервера и каждого клиента

  2. главный сертификат центра сертификатов (CA) и секретный ключ, которые используются для цифровой подписи сертификатов сервера и клиентов.

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

И сервер и клиент аутентифицируют друг друга сначала проверяя, что представленный сертификат подписан главным сертификатом центра сертификатов, а затем проверяя информацию в заголовке свеже-аутентифицированного сертификата, такую как общее имя или тип сертификата (клиент или сервер).

Установка центра сертификатов

Для установки вашего собственного центра сертификатов (CA) и генерации сертификатов с секретными ключами для OpenVPN сервера и множества клиентов, сперва скопируйте easy-rsa каталог в /etc/openvpn. Это гарантирует, что любые изменения в сценариях не будут потеряны при обновлении пакета. Из терминала переключитесь на суперпользователя (sudo -s — прим. пер.) и выполните:

mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

Далее отредактируйте /etc/openvpn/easy-rsa/vars, исправив следующее в соответствии с вашей действительностью:

export KEY_COUNTRY="US"
export KEY_PROVINCE="NC"
export KEY_CITY="Winston-Salem"
export KEY_ORG="Example Company"
export KEY_EMAIL="[email protected]"

Введите следующее для создания главного сертификата центра сертификатов и его секретного ключа:

cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-ca
Серверные сертификаты

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

./build-key-server myservername

Как и на предыдущем шаге большинство параметров можно выбирать по умолчанию. Два других запроса требуют положительного ответа: «Sign the certificate? [y/n]» и «1 out of 1 certificate requests certified, commit? [y/n]».

Должны быть созданы параметры Деффи-Хеллмана (Diffie-Hellman) для OpenVPN сервера:

./build-dh

Все сертификаты и ключи будут создаваться в подкаталоге keys/. Общая практика копировать их в /etc/openvpn/:

cd keys/
cp myservername.crt myservername.key ca.crt dh2024.pem /etc/openvpn/
Клиентские сертификаты

VPN клиент тоже требует наличие сертификата для аутентификации на сервере. Обычно вы создаете отдельные сертификаты для каждого клиента. Для создания сертификата, введите следующее в терминале под суперпользователем:

cd /etc/openvpn/easy-rsa/
source vars
./build-key client1

Скопируйте следующие файлы на сторону клиента, используя защищенный метод:

  1. /etc/openvpn/easy-rsa/keys/client1.crt

  2. /etc/openvpn/easy-rsa/keys/client1.key

Поскольку сертификаты и секретные ключи требуются только на стороне клиента, вам нужно удалить их с сервера.

Настройка простого сервера

Вместе с вашей установкой OpenVPN вы получаете эти примеры конфигурационных файлов (и много чего еще, если проверите):

root@server:/# ls -l /usr/share/doc/openvpn/examples/sample-config-files/
total 68
-rw-r--r-- 1 root root 3427 2011-07-04 15:09 client.conf
-rw-r--r-- 1 root root 4141 2011-07-04 15:09 server.conf.gz

Начните с копирования и распаковки server.conf.gz в /etc/openvpn/server.conf:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz

Отредактируйте /etc/openvpn/server.conf и убедитесь что следующие строки указывают на сертификаты и ключи, которые мы создали в предыдущем разделе.

ca ca.crt
cert myservername.crt
key myservername.key 
dh dh2024.pem

Это тот минимум, который вы должны настроить, чтобы получить работающий OpenVPN сервер. Вы можете использовать все значения по умолчанию из файла примера server.conf. Теперь запустите сервер. Вы найдете журнал событий и ошибок в вашем syslog.

root@server:/etc/openvpn# /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)...
   *   Autostarting VPN 'server'                     [ OK ]

Теперь проверьте, что OpenVPN создал интерфейс tun0:

root@server:/etc/openvpn# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
[...]

Настройка простого клиента

Существует несколько реализаций клиента OpenVPN как с графическим интерфейсом так и без него. Вы можете сможете прочитать больше о клиентах в следующем разделе. На данный момент мы используем OpenVPN клиент для Ubuntu который использует ту же программу, что и сервер. Поэтому вам снова придется поставить пакет openvpn но уже на клиентской машине:

sudo apt-get install openvpn

Тем временем скопируем файл примера client.conf в каталог /etc/openvpn/:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Скопируйте ключи клиента и сертификат центра сертификатов, созданные в предыдущем разделе, например, в /etc/openvpn/ и отредактируйте /etc/openvpn/client.conf, чтобы убедиться, что следующие строки указывают на эти файлы. Если вы положили файлы в /etc/openvpn/, то путь к ним можете опустить.

ca ca.crt
cert client1.crt
key client1.key

И вам осталось указать адрес или имя OpenVPN сервера. Убедитесь в наличии ключевого слова client в файле настроек. Оно включает режим клиента:

client
remote vpnserver.example.com 1194

Далее запустим OpenVPN клиента:

root@client:/etc/openvpn# /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)...   
   *   Autostarting VPN 'client'                          [ OK ] 

Убедитесь, что интерфейс tun0 создан:

root@client:/etc/openvpn# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1

Проверьте, что вам доступен OpenVPN сервер:

root@client:/etc/openvpn# ping 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=0.920 ms

Сервер OpenVPN всегда использует первый доступный адрес в сети клиента и только этот IP адрес будет откликаться на ping. Например, если вы настроили маску /24 клиентской сети, то будет использован адрес, оканчивающийся на .1. Адрес P-t-P, который вы видите в выводе ifconfig выше обычно не отвечает на запросы ping.

Проверьте вашу маршрутизацию:

root@client:/etc/openvpn# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.8.0.5        0.0.0.0         255.255.255.255 UH        0 0          0 tun0
10.8.0.1        10.8.0.5        255.255.255.255 UGH       0 0          0 tun0
192.168.42.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         192.168.42.1    0.0.0.0         UG        0 0          0 eth0

Первичное решение проблем

Если что-то из того, что рассмотрено выше, у вас не работает, проверьте следующее:

  1. Проверьте ваш syslog, например, так:

    grep -i vpn /var/log/syslog
  2. Может ли клиент соединиться с сервером? Возможно доступ блокирует firewall? Проверьте syslog на сервере.

  3. Клиент и сервер должны использовать одни и те же протокол и порт, например, UDP порт 1194. Смотрите опции настройки port и proto.

  4. Клиент и сервер должны использовать одно и то же сжатие. Смотрите опцию настройки comp-lzo.

  5. Клиент и сервер должны использовать один и тот же режим: маршрутизации (routed) или моста (bridged). Смотрите опцию настройки server или server-bridge.

Расширенные настройки

Расширенная настройка VPN на сервере в режиме маршрутизации

Выше рассмотрена очень простая работающая VPN. Клиент имеет доступ к сервисам на машине VPN сервера через зашифрованный канал. Если вы хотите получить доступ к большему количеству серверов или к чему-то в других сетях, добавьте несколько маршрутов на клиенте. Например, если сеть вашей компании в целом может быть описана как 192.168.0.0/16, вы можете добавить этот маршрут на клиенте. Но вам придется также изменить маршрут для обратного направления — ваши сервера должны знать как проложить маршрут до сети VPN клиента.

Или вы можете указать шлюз по умолчанию для всех клиентов чтобы посылать весь их трафик сначала на VPN сервер, а от него через защитный сервер (firewall) компании в интернет. В этом разделе вы увидите некоторые возможные варианты настроек.

Передать маршрут клиенту чтобы разрешить ему доступ к другим частным подсетям за сервером. Помните, что эти частные сети также должны знать как построить маршрут до диапазона адресов клиента OpenVPN, находящегося за OpenVPN сервером:

push "route 10.0.0.0 255.0.0.0"

Если указана, то такая директива настроит всех клиентов на перенаправление их сетевых шлюзов по умолчанию через VPN, что заставит весь трафик, такой как просмотр страниц интернет-сайтов или DNS запросы, проходить через VPN (машине OpenVPN сервера или вашему центральному firewall может потребоваться маскировать с помощью NAT интерфейсы TUN/TAP в сторону интернета, чтобы они работали правильно):

push "redirect-gateway def1 bypass-dhcp"

Настройка режима сервера и предоставление VPN подсети для OpenVPN откуда брать клиентские адреса. Сервер заберет себе адрес 10.8.0.1, а остальные могут использоваться для предоставления клиентам. Каждый клиент будет иметь возможность подключиться к серверу по адресу 10.8.0.1. Поставьте комментарий на этой строке, если используете режим сетевого моста:

server 10.8.0.0 255.255.255.0

Сохранять записи соответствий клиента с их виртуальными IP адресами в указанном файле. Если OpenVPN выключается или перегружается, повторно подключившиеся клиенты получат те же виртуальные IP адреса, что и в прошлый раз:

ifconfig-pool-persist ipp.txt

Передать настройки на DNS сервера клиенту:

push "dhcp-option DNS 10.0.0.2"
push "dhcp-option DNS 10.1.0.2"

Разрешить соединения между клиентами:

client-to-client

Разрешить сжатие на VPN соединении:

comp-lzo

Директива keepalive обеспечивает отправку сообщений типа ping вперед и назад через соединение для того, чтобы каждая сторона знала, когда другая сторона становится недоступна. Проверка раз в секунду и решение, что удаленная точка не отвечает, если ответ не принят в течение 3 секунд:

keepalive 1 3

Хорошей идеей является снижение привилегий для сервиса OpenVPN после установки:

user nobody
group nogroup

OpenVPN 2.0 включает возможность для сервера OpenVPN безопасно получать имя пользователя и пароль от подключающегося клиента и использовать эту информацию как основу аутентификации клиента. Для использования этого метода аутентификации сперва добавьте директиву auth-user-pass в настройку клиента. Это укажет клиенту OpenVPN запрашивать у пользователя имя и пароль и передавать их на сервер через безопасный канал TLS.

# client config!
auth-user-pass

Это скажет серверу OpenVPN проверять имя и пароль, введенные клиентом, с помощью модуля PAM. Это применимо если у вас централизованная аутентификация, например, с помощью Kerberos.

plugin /usr/lib/openvpn/openvpn-auth-pam.so login
Расширенная настройка VPN на сервере в режиме сетевого моста

OpenVPN может быть настроен в двух режимах VPN: маршрутизации (routed) и сетевого моста (bridged). Иногда их относят к VPN уровню-2 (канальный) и уровню-3 (пакетный) сетевой модели OSI. В режиме сетевого моста все VPN кадры (frames) 2-го уровня, такие как кадры ethernet, посылаются VPN партнеру, в то время как в режиме маршрутизации посылаются только пакеты уровня-3. В режиме моста весь трафик, включая традиционно локальный трафик, такой как сетевые широковещательные пакеты, DHCP запросы, ARP запросы и т.д., посылается VPN партнеру, в то время как в режиме маршрутизации он будет отфильтрован.

Подготовка настроек интерфейса для сетевого моста на сервере

Убедитесь, что у вас установлен пакет bridge-utils:

sudo apt-get install bridge-utils

Перед настройкой OpenVPN в режиме сетевого моста вам потребуется изменить настройки вашего интерфейса. Давайте предположим, что ваш сервер подключен через eth0 к интернету, а интерфейс eth2 соединен с вашей локальной сетью для которой вы хотите установить сетевой мост. Ваш файл /etc/network/interfaces должен выглядеть как-то так:

auto eth0
iface eth0 inet static
  address 1.2.3.4
  netmask 255.255.255.248
  default 1.2.3.1

auto eth2
iface eth2 inet static
  address 10.0.0.4
  netmask 255.255.255.0

Такая настройка прямого перенаправления интерфейсов должна быть исправлена для режима моста, где настройка интерфейса eth2 перемещается на новый интерфейс br0. Плюс мы укажем, что br0 будет интерфейсом моста для eth2. Нам также стоит убедиться, что интерфейс eth2 всегда находится в смешанном (promiscuous) режиме — это скажет интерфейсу пересылать все ethernet пакеты в стек IP.

auto eth0
iface eth0 inet static
  address 1.2.3.4
  netmask 255.255.255.248
  default 1.2.3.1

auto eth2
iface eth2 inet manual
  up ip link set $IFACE up promisc on

auto br0
iface br0 inet static
  address 10.0.0.4
  netmask 255.255.255.0
  bridge_ports eth2

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

sudo /etc/init.d/network restart
Подготовка настроек сервера для сетевого моста

Отредактируйте /etc/openvpn/server.conf, изменив следующие настройки:

;dev tun
dev tap
up "/etc/openvpn/up.sh br0 eth2"
;server 10.8.0.0 255.255.255.0
server-bridge 10.0.0.4 255.255.255.0 10.0.0.128 10.0.0.254

Далее создайте вспомогательный сценарий для добавления tap интерфейса для моста и для проверки, что eth2 находится в смешанном режиме. Создайте /etc/openvpn/up.sh:

#!/bin/sh

BR=$1
ETHDEV=$2
TAPDEV=$3

/sbin/ip link set "$TAPDEV" up
/sbin/ip link set "$ETHDEV" promisc on
/sbin/brctl addif $BR $TAPDEV

Сделайте файл исполняемым:

sudo chmod 755 /etc/openvpn/up.sh

После настройки сервера перезапустите openvpn, введя:

sudo /etc/init.d/openvpn restart
Настройка клиента

Сначала установите openvpn на клиенте:

sudo apt-get install openvpn

Затем с настроенным сервером и скопированными сертификатами клиентов в каталог /etc/openvpn/, создайте файл конфигурации клиента, скопировав пример. В терминале на клиентской машине введите:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn

Теперь отредактируйте /etc/openvpn/client.conf, изменив следующие опции:

dev tap
;dev tun

Наконец перезапустите openvpn:

sudo /etc/init.d/openvpn restart

Теперь у вас есть возможность соединиться с удаленной сетью через VPN.

Реализации клиентского программного обеспечения

Графический интерфейс сетевого менеджера Linux для OpenVPN

Множество дистрибутивов Linux, включая варианты Ubuntu desktop, поставляются с программой Network Manager, прекрасным графическим интерфейсом для настройки вашей сети. Он также позволяет управлять вашими VPN соединениями. Убедитесь, что пакет network-manager-openvpn установлен. Здесь вы можете также увидеть установку всех остальных необходимых пакетов:

root@client:~# apt-get install network-manager-openvpn
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  liblzo2-2 libpkcs11-helper1 network-manager-openvpn-gnome openvpn
Suggested packages:
  resolvconf
The following NEW packages will be installed:
  liblzo2-2 libpkcs11-helper1 network-manager-openvpn
  network-manager-openvpn-gnome openvpn
0 upgraded, 5 newly installed, 0 to remove and 631 not upgraded.
Need to get 700 kB of archives.
After this operation, 3,031 kB of additional disk space will be used.
Do you want to continue [Y/n]? 

Для информирования network-manager о новых установленных пакетах вам придется его перезагрузить:

root@client:~# restart network-manager 
network-manager start/running, process 3078

Откройте интерфейс Network Manager, выберите закладку VPN и затем нажмите кнопку ‘Add’ (Добавить). Выберите OpenVPN в качестве типа VPN в открывшемся запросе и нажмите ‘Create’ (Создать). В следующем окне добавьте имя сервера OpenVPN в качестве шлюза, установите тип в ‘Certificates (TLS)’, укажите в ‘User Certificate’ ваш пользовательский сертификат, в ‘CA Certificate’ сертификат вашего Центра Сертификатов и в ‘Private Key’ файл вашего секретного ключа. Используйте кнопку ‘Дополнительно’ для разрешения сжатия и других специальных настроек, которые вы устанавливали на сервере. Теперь попробуйте установить ваш VPN.

OpenVPN с графическим интерфейсом под Mac OS X: Tunnelblick

Tunnelblick является великолепной свободной реализацией графического интерфейса для OpenVPN с открытым кодом под OS X. Домашняя страница проекта находится по адресу http://code.google.com/p/tunnelblick/. Загрузите оттуда последний OS X установщик и запустите его. Далее положите ваш файл настроек client.ovpn вместе с сертификатами и секретным ключом в /Users/username/Library/Application Support/Tunnelblick/Configurations/ и загрузите Tunnelblick из каталога приложений.

# sample client.ovpn for Tunnelblick
client
remote blue.example.com
port 1194
proto udp
dev tun
dev-type tun
ns-cert-type server
reneg-sec 86400
auth-user-pass
auth-nocache
auth-retry interact
comp-lzo yes
verb 3
ca ca.crt
cert client.crt
key client.key
OpenVPN с графическим интерфейсом под Windows 7

Для начала загрузите и установите последний OpenVPN Windows Installer. На момент написания последней версией был OpenVPN 2.2.2. Дополнительно загрузите альтернативный графический интерфейс Open VPN Windows GUI. OpenVPN MI GUI представляется более удачным интерфейсом для Windows 7. Загружайте последнюю версию. На момент написания это 20120316.

Вам потребуется запустить сервис OpenVPN. Выберите в стартовом меню Start > Computer > Manage > Services and Applications > Services. Найдите сервис OpenVPN и запустите его. Установите тип загрузки в автоматический. Когда вы загружаете OpenVPN MI GUI в первый раз, вам надо сделать это в режиме администратора. Для этого надо нажать правую кнопку мыши на значке программы и вы увидите такую настройку.

Вам потребуется записать вашу конфигурацию OpenVPN в текстовый файл и поместить его в каталог C:\Program Files\OpenVPN\config\client.ovpn вместе с сертификатом центра сертификатов. Вы можете положить сертификат пользователя в домашний каталог, как указано в данном примере:

# C:\Program Files\OpenVPN\config\client.ovpn
client
remote server.example.com
port 1194
proto udp
dev tun
dev-type tun
ns-cert-type server
reneg-sec 86400
auth-user-pass
auth-retry interact
comp-lzo yes
verb 3
ca ca.crt
cert "C:\\Users\\username\\My Documents\\openvpn\\client.crt"
key "C:\\Users\\username\\My Documents\\openvpn\\client.key"
management 127.0.0.1 1194
management-hold
management-query-passwords
auth-retry interact
OpenVPN для OpenWRT

OpenWRT описывается как Linux дистрибутив для встраивания в устройства типа WLAN маршрутизаторов. Существует определенный набор маршрутизаторов, в которые может быть прописан OpenWRT. В зависимости от доступной памяти ваш OpenWRT маршрутизатор может запускать программы, такие как OpenVPN и вы можете, например, построить небольшой недорогой внешний офис с маршрутизатором, соединенным через VPN с центральным офисом. Здесь можно найти больше информации по OpenVPN под OpenWRT. А здесь находится домашняя страница проекта OpenWRT.

Подключитесь к вашему OpenWRT маршрутизатору и установите OpenVPN:

opkg update
opkg install openvpn

Найдите /etc/config/openvpn и поместите в него ваши настройки клиента. Скопируйте сертификаты и ключи в /etc/openvpn/.

config openvpn client1
        option enable 1                                  
        option client 1                                  
#       option dev tap                                   
        option dev tun  
        option proto udp   
        option ca /etc/openvpn/ca.crt                
        option cert /etc/openvpn/client.crt
        option key /etc/openvpn/client.key
        option comp_lzo 1  

Перезапустите OpenVPN:

/etc/init.d/openvpn restart

Вам нужно будет посмотреть не требуется ли изменить в маршрутизаторе маршрутизацию и правила firewall.

Ссылки

  1. Посетите сайт OpenVPN для дополнительной информации.


Настройка OpenVPN в Ubuntu | Losst

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

Понятие VPN в наши дни стало очень растянутым, после появления частных виртуальных сетей, которые доверяют всем и распространению HTTPS.Многие из сетей VPN предоставляют из себя коммерческие решения с минимальным набором настроек для обеспечения удаленного доступа сотрудников. Но не все доверяют этим решениям. Частная виртуальная сеть соединяет две сети в одну, например, сеть офиса и домашнюю сеть работника. Сервер VPN необходим для того, чтобы сервер и клиент мог пройти аутентификацию друг с другом.

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

Содержание статьи:

Установка OpenVPN

На обоих машинах должен быть установлен OpenVPN, это довольно популярная программа, поэтому вы можете установить ее из официального репозиториев.Также нам понадобится Easy-RSA для работы с секретными ключами. Для установки программ в Ubuntu используйте такую ​​команду:

sudo apt установить openvpn easy-rsa

Оба пакета должны быть установлены как на сервере, так и на клиенте. Они понадобятся для настройки программы. Первый этап статьи установка и настройка openvpn завершен.

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

Первое что нужно сделать, это создать правильную инфраструктуру для открытого ключа на сервере.Сервером мы считаем ту машину, к которой будут подключаться пользователи. Собственный центр сертификации дает несколько преимуществ, у вас будет собственный орган сертификации, который упростит распространение ключей и управление ими. Например, вы можете отозвать сертификаты клиента на сервере. Также теперь не нужно хранить все клиентские сертификаты, сертификаты сертификации будет достаточно знать, что сертификат подписан CA. Кроме сложных систем ключей, вы можете использовать статические ключи, если нужно предоставить доступ только нескольким пользователям.

Обратите внимание, что все секретные ключи должны находится в надежном месте. В OpenVPN открытый ключ называется сертификатом и имеет расширение .crt, а закрытый ключ так и называется ключом, его расширение — .key.

Сначала создайте папку для хранения сертификатов Easy-RSA. Фактически, конфигурация OpenVPN выполняется вручную, так что можно папку link где угодно:

судо mkdir / и т. Д. / Openvpn / easy-rsa

Затем скопируем в эту папку все необходимые скрипты easy-rsa:

sudo cp -R / usr / share / easy-rsa / etc / openvpn /

Далее нам нужно создать центр сертификации в этом списке.Для этого выполните в нее и выполните такие команды:

cd / etc / openvpn / easy-rsa /

sudo -i
# source ./vars
# ./clear-all
# ./build-ca

Первой мобильной мы переключаемся в консоль от имени суперпользователя, второй загружаем переменные окружения из файла ./vars. Команда ./clear-all создает папку keys, если ее нет и очищает ее содержимое. И последняя команда инициализирует наш центр сертификации.Теперь в папке .keys появились все необходимые ключи:

Настройка сертификатов клиента

Дальше нужно повторить копирование скриптов управления RSA, как это делали на сервере:

sudo cp -R / usr / share / easy-rsa / etc / openvpn /

Теперь нам нужно скопировать сертификат, файл с расширением .crt в папке / etc / openvpn на всех клиентах. Например, скачаем этот файл для нашего клиента с помощью scp:

sudo scp пользователь @ хост: / etc / openvpn / easy-rsa / keys / ca.crt / и т. д. / openvpn / easy-rsa / ключи

Только теперь можно создать свой секретный ключ на основе сертификата CA:

cd / etc / openvpn / easy-rsa /

sudo -i
# source ./vars
# build-req Сергей

Обратите внимание, что ca.crt должен лежать в папке с ключами, иначе ничего не сработает. Теперь утилита создаст ключ, на основе которого вы сможете подключиться к OpenVPN серверу, но вам еще осталось подписать его на сервере.Отправьте полученный .csr файл на сервер с помощью того же самого scp:

scp /etc/openvpn/easy-rsa/keys/Sergiy.csr пользователь @ хост: ~ /

Затем уже на сервере в папке / etc / openvpn / easy-rsa нужно выполнить команду подписи сертификата:

./sign-req ~ / Сергей

Подпись сертификата нужно подтвердить. Затем программа сообщит что он был подписан и добавлен в базу данных. В папке с сертификатом csr появится файл.crt, который нужно вернуть назад на клиентскую машину:

sudo scp пльзователь @ хост: /home/Sergiy.crt / etc / openvpn / easy-rsa / keys

Только после этого сервера и клиент имеют все необходимые ключи для подключения и установки связи. Осталось еще несколько настроек. Если вы планируете использовать шифрование TLS, необходимо создать на сервере набор данных Диффи-Хафмана, для этого используйте команду:

./build-dh

Дальше будет рассмотрена настройка OpenVPN для сервера и клиента, осталось совсем немного до получения рабочей конфигурации.

Настройка OpenVPN

Теперь настройка сервера OpenVPN. По умолчанию, в папке конфигурационных файлов OpenVPN ничего нет. Их нужно создать самостоятельно в зависимости от того, что планируется настроить, сервер или клиент. Нужный файл конфигурации OpenVPN можно найти по адресу / usr / share / doc / openvpn / examples / sample-config-files /. Сначала создадим конфигурационный файл для сервера:

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

Здесь вам нужно настроить несколько параметров:

порт и proto — порт и протокол, по которому будет работать программа;

порт 1194
протокол протокол udp

Все созданные ключи нужно прописать в конфигурационном файле. Наши ключи хранятся по адресу / etc / openvpn / easy-rsa / keys:

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert / etc / openvpn / easy-rsa / keys / ca.crt
ключ /etc/openvpn/easy-rsa/keys/ca.key
dh /etc/openvpn/easy-rsa/keys/dh.pem

Настраиваем диапазон для сети, наш сервер будет доступен по первому из них — 10.8.0.1:

сервер 10.8.0.0 255.255.255.0

После завершения настройки сохраните изменения в файле, вы можете либо вставить всю эту конфигурацию себе или отредактировать файл с примером. Готовые рабочие настройки сервера:

порт 1194
proto udp
comp-lzo
dev tun
ca / ​​etc / openvpn / easy-rsa / 2.0 / keys / ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh3048.pem Топология
подсеть
сервер 10.8. 0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

Настройка сервера OpenVPN завершена. Дальше необходимо запустить OpenVPN сервер. Это можно сделать прямо из командной строки, укажите конфигурацию файла:

openvpn /etc/openvpn/server.conf

Дальше нам нужно настроить компьютер клиента.Вы можете аналогично скопировать конфигурационный файл из директории с примерами, только на этот раз его не нужно распаковывать:

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf

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

удаленный — это ваш адрес сервера OpenVPN, адрес и порт должны совпадать с настроенными на сервере, например:

удаленный 194.67.215.125 1194

ca — ключ, который вы получили от центра сертификации, вы расположили в папке / etc / openvpn /.

сертификат и ключ — это открытый и секретный ключи клиента, с помощью которых вы и будете подключаться к серверу. Как вы помните, мы сохранили их в папку / etc / openvpn / easy-rsa / keys /.

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
key / etc / openvpn / easy-rsa / keys / Sergiy.ключ

Остальные настройки можно оставить как есть. Вот файл настройки целиком, который вы можете скопировать:

клиент
dev tun
proto udp
удаленный 194.67.215.125 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert / etc /openvpn/easy-rsa/keys/Sergiy.crt
ключ /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
глагол 3

Сохраните настройки, теперь клиент готов к подключению.Обратите внимание, что в одном из файлов может привести к ошибкам. Это не значит, что файлы будут идентичны, но основные параметры openvpn должны быть одинаковыми. Вам осталось запустить OpenVPN на этой машине с использованием этого конфигурационного файла:

openvpn /etc/openvpn/client.conf

Готово, теперь все работает, если вы выполните ifconfig, то увидите что был добавлен интерфейс tun0:

ifconfig

Также вы можете попробовать выполнить адрес 10.8.0.1, именно этот адрес мы настроили для нашего сервера OpenVPN, пакеты ping будут нормально отправляться. Если пакеты не идут, обратите внимание на вывод обоих программ, возможно, возникли какие-либо ошибки или предупреждения, также убедитесь, что брандмауэр разрешает доступ извне по udp для порта 1194. Еще можно запустить сервер или клиент, настроив в конфиге подробности на максимум глагол 9. Очень часто это помогает понять почему что-то не работает. Но вы еще можете направлять трафик через туннель.Для этого нужно разрешить форвардинг и добавить несколько правил iptables. Сначала разрешаем транзит пакетов на сервере:

sysctl -w net.ipv4.ip_forward = 1

Затем добавьте такие правила. Разрешаем всем подключаться к нашему серверу:

iptables -A INPUT -p udp --dport 1194 -j ACCEPT

Разрешаем пользователям OpenVPN доступ к интернету:

iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Выводы

В этой статье мы рассмотрели как выполнить установку и настройку OpenVPN Ubuntu, а также как настроить openvpn для работы с аутентификацией по ключу.Организация частных виртуальных сетей может быть очень полезной не только в организациих, но и скажем для обмена данными между двумя вашими компьютерами или для повышения безопасности в сети.

.

OpenVPN | Русскоязычная документация по Ubuntu

OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.

  • Хотим соединить в одну виртуальную сеть несколько локальных сетей в офисах, географически расположенных в разных местах, посредством Интернета.

  • Хотим иметь доступ в рабочую локальную сеть из дома или в поездке

  • Имея сервер с белым IP есть желание выходить в сеть с этого IP-адреса (например, если этот IP-адрес за пределами страны или сети, в которой имеется блокируются источники в Интернете)

Локальная сеть 1

 192.168.1.0/24 192.168.1.1
Белый внешний IP (здесь будет сервер OpenVPN)
Внутренний IP сервера OpenVPN - 192.168.1.100 

Локальная сеть 2

 192.168.0.0 / 24 192.168.0.1
Динамический IP (или даже серый - не важно для клиента OpenVPN)
Внутренний IP клиента OpenVPN - 192.168.0.100. Клиент в данном случае будет являться шлюзом для устройств в своей подсети. 

Все действия действуют с правами суперпользователя root.

 судо -i 

Установка

И на сервере и на клиенте ставим один и тот же пакет.

 apt-get install openvpn 

Создание сервера

Создание ключей и сертификатов

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов.Для их генерации в пакете OpenVPN имеются специальные скрипты, расположенные в /usr/share/doc/openvpn/examples/easy-rsa/2.0 Перед началом работы скопируем их, чтобы не эксперты оригиналы.

(для 12.04 LTS )

 mkdir / и т. Д. / Openvpn / easy-rsa
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 / etc / openvpn / easy-rsa 

(для 14.04 LTS )
С лета 2013 года easy-rsa не входит в OpenVPN и команда указанная выше не сработает (не найдет easy-rsa),
тогда делаем следующее:

 apt-get install easy-rsa 
 mkdir / и т. Д. / Openvpn / easy-rsa
cp -r / usr / share / easy-rsa / etc / openvpn / easy-rsa / 2.0 

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов

 компакт-диск /etc/openvpn/easy-rsa/2.0 

Редактируем файл фон

 нано варс 

Здесь можно заполнить например так:

 # Почти в самом низу файла, заполняем информацию сертификатов по умолчанию (ваши значения).
экспорт KEY_COUNTRY = "RU"
export KEY_PROVINCE = "Амурская область"
экспорт KEY_CITY = "Благовещенск"
экспорт KEY_ORG = "Организация"
экспорт KEY_EMAIL = "ваш @ email.тут "
export KEY_OU = "MyOrganizationalUnit"
# PKCS11 я не использовал, поэтому оставил без изменений. Кто шарит нафига эта штука, допишите статью.
экспорт PKCS11_MODULE_PATH = changeme
экспорт PKCS11_PIN = 1234

# Добавить
экспорт KEY_ALTNAMES = "VPNsRUS" 

копируем конфиг openssl

 cp openssl-1.0.0.cnf openssl.cnf 

Загружаем переменные

Источник

. / Варс 

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

./ чистый-все 

Создаем сертификат. По умолчанию поля будут заполняться данными, введенными ранее в vars , поэтому можно ничего не менять.

 ./build-ca 

Создаем ключ сервера

Пароль для проверки []: Если вы решили ввести пароль для проверки, необходимо убедиться, что сохранили этот пароль в безопасном месте. Если вам понадобится когда-нибудь переустановить этот сертификат, то потребуется этот пароль снова.

./ build-key-server сервер 

В конце соглашаемся с запросом на подпись и добавление сертификата в базу.

Можно сразу создать ключи для клиента, перейдя в соответствующую часть статьи. Я вынес в отдельный раздел, т.к. ключи могут генерироваться не один раз, чтобы было понятнее с чего начать в том случае когда нужно добавить клиента

Создаем ключ Диффи-Хеллмана

 ./build-dh 

Cоздаем ключ для tls-аутификации

 openvpn --genkey --secret keys / ta.ключ 

Перемещаем сертификаты

 cp -r /etc/openvpn/easy-rsa/2.0/keys/ / etc / openvpn / 

Создание файла конфигурации сервера

 cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn /
cd / etc / openvpn
gunzip -d /etc/openvpn/server.conf.gz

нано /etc/openvpn/server.conf 
 порт 1194
# Протокол может быть UDP или TCP, я выбрал 1-й вариант.
прото udp
# Если вы выбираете протокол TCP, здесь должно быть устройство tap.Однако, это вариант я не проверял, поэтому ищите информацию отдельно. ИСПРАВИТЬ МЕНЯ
Dev Tun

# Указываем где искать ключи
ca /etc/openvpn/keys/ca.crt
сертификат /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # Этот файл следует хранить в секрете
dh /etc/openvpn/keys/dh3048.pem
# Для 12.04 dh2024.pem

# Задаем IP и маску сети. Произвольно, но если не уверены, делайте как показано здесь
сервер 10.8.0.0 255.255.255.0

# Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
клиент-config-dir ccd

# Запоминать динамически выданные адреса для VPN-клиентов и при подключении назначать те же значения.ifconfig-pool-persist ipp.txt

# Указываем сети, которые нужно идти через туннель (сеть-клиента).
маршрут 192.168.0.0 255.255.255.0

# Включаем TLS
tls-сервер
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
авторизация SHA1
шифр AES-256-CBC

# Если нужно, чтобы клиенты видели друг друга раскомментируйте
; от клиента к клиенту

Keepalive 10 120

# Сжатие трафика
comp-lzo

# Максимум клиентов
макс-клиентов 10

пользователь никто
группа nogroup

# Не перечитывать ключи, не закрывать и переоткрывать TUN \ TAP устройство, после получения SIGUSR1 или ping-restart
постоянный ключ
настойчивый туннель

статус openvpn-status.журнал
журнал /var/log/openvpn.log
# Детальность логирования
глагол 3
# Защита от повторов (максимум 20 одинаковых сообщений подряд)
немой 20

# Файл отозванных сертификатов. Разремить, когда такие сертификаты появятся.
; crl-verify /etc/openvpn/crl.pem 

Создадим директорию для клиентских конфигов

 мкдир / и т. Д. / Openvpn / ccd 

Можно запустить наш сервер OpenVPN

 сервис openvpn перезапуск 

Смотрим список интерфейсов

 ifconfig 

Если среди прочих видим

 tun0 Ссылка на ссылку: UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet адрес: 10.8.0.1 P-t-P: 10.8.0.2 Маска: 255.255.255.255
          ТОЧКА ВВЕРХ ТОЧКА РАБОТАЕТ NOARP MULTICAST MTU: 1500 Метрическая система: 1
          Пакеты RX: 0 ошибок: 0 отброшено: 0 переполнений: 0 кадров: 0
          Пакеты TX: 0 ошибок: 0 отброшено: 0 переполнений: 0 носитель: 0
          коллизии: 0 txqueuelen: 100
          Байты приема: 0 (0,0 Б) Байты передачи: 0 (0,0 Б) 

значит VPN-сервер завелся. Если нет, то смотрим лог

 хвост -f /var/log/openvpn.log 

Настройка маршрутизации на стороне сервера

Если имеет «белый» IP-сервер никакой маршрутизации на стороне сервера, настроить не нужно.Если сервер находится в сети за NAT-роутера то необходимо настроить маршрутизацию.
Для того, чтобы клиенты могли достучаться до сервера, нужно пробросить порты с роутера на сервер. В разных моделях это делается по разному. Суть в том, чтобы стучась на внешний порт, например 12345 1) , клиенты попадали на порт OpenVPN-сервера 1194 (или другой, который мы задали для нашего сервера).
Кроме того, для доступа к сети к OpenVPN-серверу нужно указать, что для доступа к сети.Но проще задать этот маршрут на роутере, который обслуживает локалку.

Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. / и т. Д. / Openvpn / ccd / клиент

 # Маршрут в сеть клиента. Требуется для доступа к сетевым устройствам в сети клиента. Если не требуется - не прописывайте.
iroute 192.168.0.0 255.255.255.0

# Задаем маршрут для клиента, чтобы он видел сеть за OpenVPN-сервером.
нажмите "маршрут 192.168.1.0 255.255.255.0" 

Включаем ipv4_forwarding

В / etc / sysctl.conf расскомментируем # net.ipv4.ip_forward = 1
после чего

 sysctl -p 

Создание клиента

Создание ключей и сертификатов

Ключи клиента на сервере

Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов

 компакт-диск /etc/openvpn/easy-rsa/2.0 

Загружаем переменные

 исходные вары 

Создаем ключ клиента

В данном случае название ключа — клиент .Каждый должен быть со своим именем.

 ./build-key client 

Если хотим защитить ключ паролем, то генерируем его другую команду

 ./build-key-pass клиент 

В этом случае при запуске нужно будет каждый раз вводить пароль на ключ.

Теперь нужно не забыть скопировать ключи ( ca.crt, client.crt, client.key, ta.key ) на клиента OpenVPN в / etc / openvpn / keys /

Создание файла конфигурации клиента

/ и т. Д. / Openvpn / client.conf

 клиент
Dev Tun
прото udp

# Внеший IP, на или за которым находится ваш сервер OpenVPN и порт (на сервере или роутере, за которым стоит сервер)
пульт 111.222.333.444 1194

# необходимо для DynDNS
resolv-retry бесконечно

ca /etc/openvpn/keys/ca.crt
сертификат /etc/openvpn/keys/client.crt
ключ /etc/openvpn/keys/client.key
tls-клиент
tls-auth /etc/openvpn/keys/ta.key 1
авторизация SHA1
шифр AES-256-CBC
удаленный сервер сертификатов TLS
comp-lzo
постоянный ключ
настойчивый туннель

статус openvpn-status.log
журнал / var / журнал / openvpn.журнал
глагол 3
немой 20 

Можно запустить наш клиент OpenVPN

 сервис openvpn перезапуск 

Настройка маршрутизации на стороне клиента

Машина с openvpn уже готова работать с сервером в чём можно убедится

 пинг -c 2 10.8.0.1
пинг -c 2 192.168.1.100 

Чтобы пользоваться туннелем в другом офисе, нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что проще и быстрее прописать это правило маршрутизации на роутере, которое является шлюзом для устройств в сети.

Включаем ipv4_forwarding

Также как в случае с сервером.

Настройка выхода в интернет с IP сервера

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

Настройки сервера

Если же вы хотите организовать доступ из сети VPN в интернет с IP-адреса сервера, то вам нужно настроить на сервере NAT.Сделать это можно следующей командой (на сервере):

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

Здесь мы указали, что сеть 10.8.0.0/24 будет выходить наружу через интерфейс eth0.

Для того что бы настройки iptables после перезагрузки нужно их снова сохранить:

 iptables-save> /etc/iptables.up.rules
echo "pre-up iptables-restore > / etc / network / interfaces 

Настройки клиента

К конфиге клиента клиент.conf нужно добавить строчку

 шлюз перенаправления def1 

Отзыв сертификата

 компакт-диск /etc/openvpn/easy-rsa/2.0
. ./vars
./revoke-full client2 

Если все прошло штатно, вы должны увидеть следующий вывод, сообщающий о том, что сертификат отозван:

 ошибка 23 при поиске глубины 0: сертификат отозван 

Скрипт revoke-full создаст CRL-файл (список отозванных сертификатов, список отозванных сертификатов) с именем crl.pem в подкаталоге ключей.Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ. Ранее в конфиге мы прописали, что этот файл должен находится в / etc / openvpn, туда и копируем.

Отключение автозапуска OpenVPN

Это бывает полезно, например для клиента с ключем защищенным паролем, т.к. всё равно при старте системы такое соединение не поднимается в виду отсутствия пароля для ключа. Да и в том случае, если вы сделали ключ с паролем, значит, скорее всего, вам не нужно постоянное соединение.

 нано / и т. Д. / По умолчанию / openvpn 

Раскомментируем строчку

 AUTOSTART = "none" 

Тест производительности OpenVPN

Условия теста:

  1. VPN-сервер на ВМ Virtualbox (ядро i5-4670)

  2. Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ / с). Скорость буду указывать в мегабайтах, НЕ в мегабитах!

  3. Форвардинг на хоста

  4. Клиент Windows 7, OpenVPN 2.3 64, FX-6300

Результаты:

  1. Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% — 40% на 1/6 ядер.

  2. С конфигом выше — 14 МБ / с

  3. Отключаем сжатие; comp-lzo — прибавка не более 1 МБ / с — до 15 МБ / с

  4. Отключаем аутентификацию auth none +2 МБ / с — до 17 МБ / с

  5. Отключаем шифрование cipher none +2 МБ / с — до 19 МБ / с

  6. Сжатие comp-lzo сжимает хорошо сжимаемые файлы в 2 раза хуже, чем zlib, зато почти не влияет на загрузку ЦП (в десятки раз).Проверял на копировании установленного в Windows Libreoffice 5. Сжатие в zip с помощью архиватора 7z дало результат около 35%, сжатие comp-lzo по статистике сетевого интерфейса — около 70%.

Максимальный прирост при отключении сжатия, шифрования и аутентификации составляет около 35%. Не думаю, что это стоит того, чтобы отключить механизмы защиты, но ситуации бывают разные.

Может кому-то как мне будет интересно влияние опций на производительность и не придется тратить время на проведение замеров, хотя я бы с удовольствием ознакомился с результами других людей.Изначально тестил для себя, точных замеров не проводил, потом решил поделиться результатами.

.

Инструкция по утсановке и настройке OpenVPN в Ubuntu

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

Как работает OpenVPN?

При окончании настройки сервера и его запуск, он перейдет в режим готовности приема и перенаправления внешних защищенных SSL-соединений на виртуальный сетевой адаптер (tun / tap).

По желанию, маршрутизация сервера может быть настроена таким образом, чтобы Интернет-трафик клиентов проходил через сервер и становился трафиком сервера. В этом случае OpenVPN будет выполнять проксирование трафика (прокси).

Что требуется от операционной системы?

Перед установкой OpenVPN необходимо убедиться в корректности базовых параметров.

  1. У сервера есть хотя бы один «белый» статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет.Если адрес динамический, но сервер все же остается доступным из глобальной сети — воспользуйтесь услугами DynDNS.

  2. Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа «#» решетка в начале строки).

  3. Должны быть верно указаны параметры сети — имя хоста, параметры DNS-серверов.

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

Приступаем к установке.

Все действия по установке будем выполнять от пользователя root.

1. Обновляем информацию о репозиториях:

обновление apt-get

2. Устанавливаем текущие обновления системы и программ:

apt-получить обновление

3. Устанавливаем OpenVPN:

apt-get install openvpn

Важно. В большинстве базовых репозиториях зачастую отсутствует новейшая версия пакета.Разработчики OpenVPN ведут собственный репозиторий, о том как его можно ознакомиться на официальном сайте.

4. Аналогичным образом устанавливаем пакет easy-rsa:

apt-get install easy-rsa

Действия после установки.

Размещаем скрипты easy-rsa:

компакт-диск / etc / openvpn / && make-cadir easy-rsa

Подготавливаем публичные ключи (PKI — Public Key Infrastructure):

1.Переходим в директорию / etc / openvpn / easy-rsa:

компакт-диск / и т. Д. / Openvpn / easy-rsa

2. Создайте символьную ссылку на файл конфигурации openssl:

ln -s openssl-1.0.0.cnf openssl.cnf

3. Инициализируем скрипт vars:

исходник. / Варс

Система сообщит: ПРИМЕЧАНИЕ: Если вы запустите ./clean-all, я буду делать rm -rf для / etc / openvpn / easy-rsa / keys

4. Выполняем ./clean-all

5. Для создания центра сертификации Выполняем скрипт:

./ build-ca

В ходе своей работы, программа задаст несколько вопросов. Отвечать на них следует латиницей. Если вы не заполните какое-либо поле, программа подставит значения по умолчанию, обычно в скобках.

Создаем ключ сервера.

Для создания ключа сервера выполним команду:

./build-key-server сервер

следует обратить внимание, что процесс похож на генерацию сертификата центра сертификации, однако перед подписанием сертификата программа задаст 2 уточняющих вопроса.Если все указано верно, отвечаем «y».

Генерация клиентских ключей.

Аналогично генерации серверных ключей и клиентские:

./build-key client1

Следует обратить внимание, что созданный client1.key не имеет парольной или криптографической защиты. Это может привести к тому, что любой пользователь завладевший файлом может попробовать подключиться к серверу. Если такая угроза существует, лучше генерировать ключи другим скриптом:

./ build-key-pass client2

Скрипт запросит пароль ную фразу в самом начале. Далее процесс ничем не отличается от генерации ключей сервера и простого клиента.

помнить, что имена ключей должны быть уникальными. Один пользователь — один ключ с уникальным именем.

Бывает так, что в процессе работы сервера, по прошествии некоторого времени, необходимо создать еще один или несколько сертификатов. Чтобы повторно запустить процесс генерации ключа:

.

компакт-диск / и т. Д. / Openvpn / easy-rsa

источник./ варс

./build-key client3

Генерация ключа Диффи-Хеллмана

через протоколу Диффи-Хеллмана, две стороны могут получить один секретный ключ, который позволит выстроить защищенный канал связи. Генерируют ключи командой:

./build-dh

Результат будет примерно таким.

По окончании работы программы, в директории / etc / openvpn / easy-rsa / keys / появится файл dh3048.pem

Перемещение сертификатов и ключей

Сервер

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

1. Переходим в каталог с ключами:

cd / etc / openvpn / easy-rsa / ключи

2. Копируем только необходимые серверу файлы:

cp ca.crt ca.key dh3048.pem server.crt server.key / etc / openvpn

Важно понимать, что перечисленные выше файлы служат работой и безопасностью сервера VPN. Утеря или подмена этих файлов может иметь крайне негативные последствия.Важно хранить их в надежном месте и не использовать их в открытом канале связи.

Клиенты

Клиенту понадобится всего 3 файла ca.crt, client1.crt, client1.key. Каждому клиенту необходимо отдавать только его ключи. Данные файлы можно связать в директории / etc / openvpn на машине клиента, если она под управлением Linux-подобной ОС.

В ОС Windows их следует ссылка в пользовательский каталог.

Настройка сервера и клиента

Сервер

Основные устанавливаемые программные средства в ОС Linux — так называемые файлы-образцы.Эти файлы содержат примеры и объяснения их. OpenVPN не исключением стал. Распакуем серверный конфигурационный файл в директорию / etc / openvpn:

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

С полученным файлом сервер уже готов к работе. Он сконфигурирован с помощью туннелирования, однако не имеет возможности к проксированию, т.е. отправки клиентского трафика от своего имени. Исправим это.

Для начала, проверяем, какие файлы оказались в директории / etc / openvpn:

LS / и т. Д. / Openvpn

Открываем файл конфигурации:

нано /etc/openvpn/server.conf

И проверяем соответствие файлов прописанных в конфигурационных файлах находящимися в каталоге. Интересны строки после «Корневой сертификат SSL / TLS (ca), сертификат (cert) и закрытый ключ (ключ)».

.Выходим из редактора сочетания клавиш Ctrl + X.

Запускаем сервер:

/etc/init.d/openvpn start

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

.

/etc/init.d/openvpn статус

Настройки клиента.

Предполагается, что на стороне клиента уже установлен пакет OpenVPN.

1. Копируем файл клиентских настроек в домашний каталог пользователя:

cp / usr / share / doc / openvpn / examples / sample-config-files / client.conf / корень

2. Копируем сгенерированные ключи — client1.key, client1.crt, ca.crt:

cd / etc / openvpn / easy-rsa / ключи

cp client1.key client1.crt ca.crt / root

3. Редактируем файл конфигурации клиента:

нано /root/client.conf

4. Находим закомментированные строки «# Имя хоста / IP и порт сервера». Для программы удаленный меняем my-server-1 на IP-адрес сервера или его доменное имя.

5. В том же файле, ниже, находим блок «# SSL / TLS parms.». Редактируем имена ключей.

6. Выходим из редактирования сочетанием Ctrl + X. На вопрос о сохранении изменений отвечаем «Y». Имя файла оставить неизменным.

7. Переносим файлы client1.key, client1.crt, ca.crt и client.conf на компьютер клиента, с которым происходит подключение к серверу OpenVPN.

Важно! Некоторые клиентские реализации OpenVPN работают только с файлами * .ovpn. В таких случаях увеличить расширение файла (переименовать) с клиентом.conf на client.ovpn.

8. Подключаемся к серверу команду:

openvpn openvpn.conf

Следует обратить внимание, что проксирование до сих пор не настроено. При этом, когда клиентская машина подключена к OpenVPN-серверу, доступ в Интернет прекращается. Связано это с тем, что созданный адаптер TUN, а в месте с ним и сам сервер, являются шлюзом по умолчанию.

Настройка маршрутизации.

1. На сервере редактируем файл server.conf:

нано /etc/openvpn/server.conf

2. В файле находим строку и удаляем перед ней символ «;», таким образом раскомментируем ее:

push "redirect-gateway def1 bypass-dhcp"

3. Сохраняем и закрываем редактор.

4. Редактируем файл / etc / sysctl:

нано /etc/sysctl.conf

5. В конец файла добавляемую строку:

net.ipv4.ip_forward = 1

Это разрешено в системе пересылать трафик между интерфейсами.Сохраняем файл и закрываем редактор.

6. Разрешаем форвардинг пакетов без перезагрузки сервера:

эхо 1> / proc / sys / net / ipv4 / ip_forward

7. Настроим NAT в iptables. Поочередно вводим команды:

iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT

iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s 10.8.0.0 / 24 -o eth0 -j МАСКЕРАД

iptables -A INPUT -i tun + -j ACCEPT

iptables -A FORWARD -i tun + -j ACCEPT

iptables -A INPUT -i tap + -j ACCEPT

iptables -A FORWARD -i tap + -j ACCEPT

Также их можно просто вписать в файл /etc/rc.local до строки «exit 0» или выполнить настройку межсетевого экрана, как это указано в статье.

Сервер уже готов к использованию. Однако задача проксировать весь трафик, а следовательно, необходимо настроить форвардинг DNS-запросов.Настроим.

1. Устанавливаем dnsmasq

Если установка выполняется в ОС Ubuntu:

apt-get install dnsmasq

Несмотря на то, что в версиях современных версий ОС Ubuntu dnsmasq уже предустановлен, в старых версиях выполнить так:

apt-get install dnsmasq && dpkg-reconfigure resolvconf

Возможно запустится диалоговое окно мастера установки. В нем будет 2 вопроса. В первом случае, на вопрос «подготовьте / etc / resolv.conf для динамических обновлений »отвечаем« Да », а на следующий -« Добавить исходный файл в динамический файл? » отвечаем «Нет».

Для ОС Debian 7:

apt-get install dnsmasq resolvconf

2. Отредактируем файл настроек dnsmasq:

нано /etc/dnsmasq.conf

Добавим следующие параметры:

адрес прослушивания = 10.8.0.1

интерфейсов привязки

Сохраняем файл и закрытый редактор.

3. Редактируем файл сетевых настроек:

нано / и т.д. / сеть / интерфейсы

Требуется указать адрес DNS-серверов в секциях настройки адаптера:

DNS-серверов имен 8.8.8.8 8.8.4.4

Возможно это действие уже произведено ,. Повторно его выполнять не нужно.

4. Данная особенность запуска и первой работы dnsmasq — возможность аварийного завершения до инициализации виртуального tun-адаптера, добавим следующую стр. В файле rc.местный, перед «exit 0»:

/etc/init.d/dnsmasq перезапуск

5. Теперь разрешим клиентам OpenVPN-сервера использовать DNS. С помощью редактора nano раскомментируем строку:

push "dhcp-option DNS 10.8.0.1"

Фиксируем изменения в файле.

6. Перезагружаем сервер:

перезагрузка

Проверка работы

Выполняем повторное подключение к серверу. Пробуем открыть сайт для проверки IP-адреса.В результате должен быть IP-адрес сервера.

Средняя оценка: 4.0
Оценили: 4

220140
Минск
ул. Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

220140
Минск
ул.Домбровская, д. 9

+375 (173) 88-72-49

700
300

ООО «ИТГЛОБАЛКОМ БЕЛ»

700
300

.

Установка клиента OpenVPN в Ubuntu

Мы предлагаем создать частную сеть между двумя компьютерами. Обеспечивается поставленная задача с помощью технологии VPN (Virtual Private Network). Реализовывается соединение через открытые или закрытые утилиты и программы. После установки и настройки всех компонентов можно считать завершенной, а подключение — защищенным. Далее мы бы хотели детально обсудить осуществление рассмотренной технологии через клиент OpenVPN в операционной системе на базе ядра Linux.

Устанавливаем OpenVPN в Linux

Большинство юзеров используют дистрибутивы, основанные на Ubuntu, сегодня инструкции будут базироваться именно на этих версиях. В других случаях кардинальной разницы в инсталляции и конфигурации OpenVPN вы не заметите, что необходимо соблюдать синтаксис дистрибутива, о чем вы можете прочесть в официальной документации своей системы. Предлагаем со всем действующим пошагово, чтобы детально разобраться в каждом действии.

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

Шаг 1: Установка OpenVPN

Конечно, следует начать с добавления всех необходимых библиотек на компьютеры. Приготовьтесь к, что для выполнения поставленной той главе будет исключительно встроенный в ОС «Терминал» .

  1. Откройте меню и запустите консоль. Сделать это можно также путем комбинации клавиш Ctrl + Alt + T .
  2. Пропишите команду sudo apt install openvpn easy-rsa для установки всех нужных репозиториев. После ввода нажмите на Введите .
  3. Введите пароль от учетной записи суперпользователя. Символы при наборе не предоставлен в поле.
  4. Подтвердите добавление новых файлов, выбрав соответствующий вариант.

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

Шаг 2: Создание и настройка удостоверяющего центра

Центр отвечает за проверку открытых ключей и обеспечивает надежное шифрование. Создается он на том устройстве, к которому будут подключены другие пользователи, поэтому откройте консоль на нужном ПК и выполните следующие действия:

  1. Первоочередно создается папка для хранения всех ключей.Вы можете расположить ее где угодно, но лучше подобрать надежное место. Используйте для этой команды sudo mkdir / etc / openvpn / easy-rsa , где / etc / openvpn / easy-rsa — место для создания директории.
  2. Далее в эту папку требуется вставить скрипты дополнения easy-rsa, а делается это через sudo cp -R / usr / share / easy-rsa / etc / openvpn / .
  3. В готовой директории создается удостоверяющий центр. Сначала перейти в эту папку cd / etc / openvpn / easy-rsa / .
  4. Затем вставьте в поле следующую команду:

    sudo -i
    # source ./vars
    # ./clean-all
    # ./build-ca

Пока серверный компьютер можно оставить в покое и переместиться к клиентским устройствам.

Шаг 3: Конфигурация клиентских сертификатов

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

  1. Откройте команду консоль и напишите там sudo cp -R / usr / share / easy-rsa / etc / openvpn / , чтобы скопировать все требуемые скрипты инструмента.
  2. Ранее на серверном ПК был создан отдельный файл с сертификатом. Теперь его нужно скопировать и поместить в папку с остальными компонентами. Проще всего это сделать через команду sudo scp username @ host: /etc/openvpn/easy-rsa/keys/ca.crt / etc / openvpn / easy-rsa / keys , где username @ host — адрес оборудования, с которого производит скачивание.
  3. Осталось только создать личный секретный ключ, чтобы через него осуществлялось соединение. Сделайте это, перейдя в папку хранения скриптов cd / etc / openvpn / easy-rsa / .
  4. Для создания файла используйте команду:

    sudo -i
    # source ./vars
    # build-req Lumpics

    Lumpics в этом случае — заданное название файла. Созданный ключ в обязательном порядке должен находиться в одной и той же директории с остальными ключами.

  5. Осталось только отправить готовый ключ доступа на серверное устройство, чтобы подтвердить подлинность своего соединения. Делается это с помощью той же команды, через которую производилось скачивание. Вам нужно выполнить scp /etc/openvpn/easy-rsa/keys/Lumpics.csr имя пользователя @ хост: ~ / , где имя пользователя @ хост — имя компьютера для отправки, а Lumpics.csr — название файла с ключом .
  6. На серверном подтвердили ПКите ключ через ./ sign-req ~ / Lumpics , где Lumpics — название файла. После этого верните документ обратно через sudo scp username @ host: /home/Lumpics.crt / etc / openvpn / easy-rsa / keys .

На этом все предварительные работы завершены, осталось только привести сам OpenVPN в нормальное состояние и можно использовать частное шифрованное соединение с одним или использованием клиентов.

Шаг 4: Настройка OpenVPN

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

  1. Сначала создайте файл конфигурации на серверном ПК с помощью команды zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf . При конфигурации клиентских устройств также придется создавать отдельно.
  2. Ознакомьтесь со стандартными значениями. Как видите, порт и протокол совпадает со стандартными, однако отсутствуют дополнительные параметры.
  3. Запустите созданный конфигурационный файл через редактор sudo nano /etc/openvpn/server.conf .
  4. Мы не будем вдаваться в подробности изменений всех значений, поскольку в некоторых случаях стандартные данные в файле представлены.

    порт 1194
    proto udp
    comp-lzo
    dev tun
    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert / etc / openvpn / easy-rsa / 2.0 / keys / ca.crt
    dh /etc/openvpn/easy-rsa/2.0/keys/dh3048.pem
    topology subnet
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt

    После завершения всех изменений сохраните настройки и закройте файл.

  5. Работа с серверной частью завершена. Запустите OpenVPN через созданный конфигурационный файл openvpn /etc/openvpn/server.conf .
  6. Теперь приступим к клиентским устройствам. Как уже было сказано, здесь тоже создается файл настроек, но на этот раз он не распаковывается, поэтому команда имеет следующий вид: sudo cp / usr / share / doc / openvpn / examples / sample-config-files / client.conf /etc/openvpn/client.conf .
  7. Запустите файл таким же образом, как это было показано выше и внесите туда следующие строки:

    клиент
    dev tun
    proto udp
    удаленный 194.67.215.125 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert / etc /openvpn/easy-rsa/keys/Sergiy.crt
    ключ /etc/openvpn/easy-rsa/keys/Sergiy.key
    tls-auth ta.key 1
    comp-lzo
    глагол 3
    .

    По завершении редактирования запустите OpenVPN: openvpn /etc/openvpn/client.conf .

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

Для перенаправления трафика и открытия доступа к интернету для всех клиентов на серверном ПК вам потребуется поочередно активировать способы команды.

sysctl -w net.ipv4.ip_forward = 1
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -t nat -A РАЗМЕЩЕНИЕ -o eth0 -j МАСКАРАД

В рамках сегодняшней статьи вы ознакомились с процедурами инсталляции и настройки OpenVPN на серверной и клиентской части. Совет обращает внимание на уведомление, показанные в «Терминале» и изучать коды ошибок, если такие появляются.Подобные действия помогают избежать дальнейших проблем с подключением.

Мы рады, что смогли помочь Вам в решении проблемы.

Опишите, что у вас не получилось.
Наши специалисты постараются максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ
.

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

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