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
Условия теста:
VPN-сервер на ВМ Virtualbox (1 ядро i5-4670)
Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ/с). Скорость буду указывать в мегабайтах, НЕ в мегабитах!
Форвардинг на хоста
Клиент Windows 7, OpenVPN 2.3 64, FX-6300
Результаты:
Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% — 40% на 1/6 ядер.
С конфигом выше — 14 МБ/с
Отключаем сжатие ;comp-lzo — прибавка не более 1 МБ/с — до 15 МБ/с
Отключаем аутентификацию auth none +2 МБ/с — до 17 МБ/с
Отключаем шифрование cipher none +2 МБ/с — до 19 МБ/с
Сжатие 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 необходимо убедиться в корректности базовых параметров.
У сервера есть хотя бы один “белый” статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет. Если адрес динамический, но сервер все же остается быть доступным из глобальной сети — воспользуйтесь услугами DynDNS.
Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа “#” решетка в начале строки).
Должны быть верно указаны параметры сети — 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 состоит из:
отдельные сертификаты (также известные как открытые ключи) и секретные ключи для сервера и каждого клиента
главный сертификат центра сертификатов (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
Скопируйте следующие файлы на сторону клиента, используя защищенный метод:
/etc/openvpn/easy-rsa/keys/client1.crt
/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
Первичное решение проблем
Если что-то из того, что рассмотрено выше, у вас не работает, проверьте следующее:
Проверьте ваш syslog, например, так:
grep -i vpn /var/log/syslog
Может ли клиент соединиться с сервером? Возможно доступ блокирует firewall? Проверьте syslog на сервере.
Клиент и сервер должны использовать одни и те же протокол и порт, например, UDP порт 1194. Смотрите опции настройки port и proto.
Клиент и сервер должны использовать одно и то же сжатие. Смотрите опцию настройки comp-lzo.
Клиент и сервер должны использовать один и тот же режим: маршрутизации (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.
Ссылки
Посетите сайт 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
Условия теста:
VPN-сервер на ВМ Virtualbox (ядро i5-4670)
Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ / с). Скорость буду указывать в мегабайтах, НЕ в мегабитах!
Форвардинг на хоста
Клиент Windows 7, OpenVPN 2.3 64, FX-6300
Результаты:
Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% — 40% на 1/6 ядер.
С конфигом выше — 14 МБ / с
Отключаем сжатие; comp-lzo — прибавка не более 1 МБ / с — до 15 МБ / с
Отключаем аутентификацию auth none +2 МБ / с — до 17 МБ / с
Отключаем шифрование cipher none +2 МБ / с — до 19 МБ / с
Сжатие 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 необходимо убедиться в корректности базовых параметров.
У сервера есть хотя бы один «белый» статичный IP-адрес. Т.е. сервер должен быть доступен из сети Интернет.Если адрес динамический, но сервер все же остается доступным из глобальной сети — воспользуйтесь услугами DynDNS.
Разрешена загрузка и установка пакетов из официальных репозиториев. Для проверки выполните cat /etc/apt/sources.list. Строки с указаниями репозиториев должны быть раскомментированы (не должно быть символа «#» решетка в начале строки).
Должны быть верно указаны параметры сети — имя хоста, параметры 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
Конечно, следует начать с добавления всех необходимых библиотек на компьютеры. Приготовьтесь к, что для выполнения поставленной той главе будет исключительно встроенный в ОС «Терминал» .
- Откройте меню и запустите консоль. Сделать это можно также путем комбинации клавиш Ctrl + Alt + T .
- Пропишите команду
sudo apt install openvpn easy-rsa
для установки всех нужных репозиториев. После ввода нажмите на Введите . - Введите пароль от учетной записи суперпользователя. Символы при наборе не предоставлен в поле.
- Подтвердите добавление новых файлов, выбрав соответствующий вариант.
Переходите к следующему шагу только тогда, когда инсталляция будет произведена на других устройствах.
Шаг 2: Создание и настройка удостоверяющего центра
Центр отвечает за проверку открытых ключей и обеспечивает надежное шифрование. Создается он на том устройстве, к которому будут подключены другие пользователи, поэтому откройте консоль на нужном ПК и выполните следующие действия:
- Первоочередно создается папка для хранения всех ключей.Вы можете расположить ее где угодно, но лучше подобрать надежное место. Используйте для этой команды
sudo mkdir / etc / openvpn / easy-rsa
, где / etc / openvpn / easy-rsa — место для создания директории. - Далее в эту папку требуется вставить скрипты дополнения easy-rsa, а делается это через
sudo cp -R / usr / share / easy-rsa / etc / openvpn /
. - В готовой директории создается удостоверяющий центр. Сначала перейти в эту папку
cd / etc / openvpn / easy-rsa /
. - Затем вставьте в поле следующую команду:
sudo -i
# source ./vars
# ./clean-all
# ./build-ca
Пока серверный компьютер можно оставить в покое и переместиться к клиентским устройствам.
Шаг 3: Конфигурация клиентских сертификатов
Инструкцию, с которой вы ознакомитесь ниже, необходимо провести на каждом клиентском компьютере, чтобы организовать корректно функционирующее защищенное соединение.
- Откройте команду консоль и напишите там
sudo cp -R / usr / share / easy-rsa / etc / openvpn /
, чтобы скопировать все требуемые скрипты инструмента. - Ранее на серверном ПК был создан отдельный файл с сертификатом. Теперь его нужно скопировать и поместить в папку с остальными компонентами. Проще всего это сделать через команду
sudo scp username @ host: /etc/openvpn/easy-rsa/keys/ca.crt / etc / openvpn / easy-rsa / keys
, где username @ host — адрес оборудования, с которого производит скачивание. - Осталось только создать личный секретный ключ, чтобы через него осуществлялось соединение. Сделайте это, перейдя в папку хранения скриптов
cd / etc / openvpn / easy-rsa /
. - Для создания файла используйте команду:
sudo -i
# source ./vars
# build-req LumpicsLumpics в этом случае — заданное название файла. Созданный ключ в обязательном порядке должен находиться в одной и той же директории с остальными ключами.
- Осталось только отправить готовый ключ доступа на серверное устройство, чтобы подтвердить подлинность своего соединения. Делается это с помощью той же команды, через которую производилось скачивание. Вам нужно выполнить
scp /etc/openvpn/easy-rsa/keys/Lumpics.csr имя пользователя @ хост: ~ /
, где имя пользователя @ хост — имя компьютера для отправки, а Lumpics.csr — название файла с ключом . - На серверном подтвердили ПКите ключ через
./ sign-req ~ / Lumpics
, где Lumpics — название файла. После этого верните документ обратно черезsudo scp username @ host: /home/Lumpics.crt / etc / openvpn / easy-rsa / keys
.
На этом все предварительные работы завершены, осталось только привести сам OpenVPN в нормальное состояние и можно использовать частное шифрованное соединение с одним или использованием клиентов.
Шаг 4: Настройка OpenVPN
Следующее руководство будет касаться и клиентской части, и серверной.Мы все разделим по действиям и предупредим об изменениях машин, поэтому вам остается выполнить приведенную инструкцию.
- Сначала создайте файл конфигурации на серверном ПК с помощью команды
zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
. При конфигурации клиентских устройств также придется создавать отдельно. - Ознакомьтесь со стандартными значениями. Как видите, порт и протокол совпадает со стандартными, однако отсутствуют дополнительные параметры.
- Запустите созданный конфигурационный файл через редактор
sudo nano /etc/openvpn/server.conf
. - Мы не будем вдаваться в подробности изменений всех значений, поскольку в некоторых случаях стандартные данные в файле представлены.
порт 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 /etc/openvpn/server.conf
. - Теперь приступим к клиентским устройствам. Как уже было сказано, здесь тоже создается файл настроек, но на этот раз он не распаковывается, поэтому команда имеет следующий вид:
sudo cp / usr / share / doc / openvpn / examples / sample-config-files / client.conf /etc/openvpn/client.conf
. - Запустите файл таким же образом, как это было показано выше и внесите туда следующие строки:
клиент
.
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
. - Пропишите команду
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 на серверной и клиентской части. Совет обращает внимание на уведомление, показанные в «Терминале» и изучать коды ошибок, если такие появляются.Подобные действия помогают избежать дальнейших проблем с подключением.
Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось.
Наши специалисты постараются максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ
.