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

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

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

Настраиваем сервер

Для установки и настройки сервера достаточно скопировать в консоль строчку:

sudo wget -P/tmp http://kubuntu.ru/files/ovpn_install.sh; sudo chmod +x /tmp/ovpn_install.sh; sudo /tmp/ovpn_install.sh

команда скачает скрипт установки ovpn_install.sh, даст ему права на запуск и запустит на выполнение.

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

После установки вы получите настроенный сервер OpenVPN работающий в режиме маршрутизации и принимающей соединения на 777 порту.

Проверить правильность установки можно посмотрев активные сетевые устройства командой ifconfig
В случае успешной установки в списке сетевых карточек должно появиться новое устройство tun0 с ip 10.8.0.1

Примечание: при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf.

Настраиваем клиента

Устанавливаем OpenVPN

sudo apt-get install -y openvpn

Переносим с сервера любыми доступными средствами ключ и сертификат клиента который мы сгенерировали при установке сервера.

Нам нужны следующие файлы:
/etc/openvpn/ca.crt                      # Cертификат СА (центра сертификации)
/etc/openvpn/easy-rsa/keys/client1.crt   # Сертификат клиента, подписанный CA
/etc/openvpn/easy-rsa/keys/client1.key   # Ключ шифрования клиента

Копируем их в папку /etc/openvpn на компьютере-клиенте

Скачиваем и редактируем файл конфигурации клиента ovpn_client.conf

sudo wget -P/etc/openvpn http://kubuntu.ru/files/ovpn_client.conf; sudo nano /etc/openvpn/ovpn_client.conf

Запуск openvpn:
sudo service openvpn start

Остановка openvpn:
sudo service openvpn stop

Настраиваем подключение к серверу через Network-Manager

Для этого устанавливаем пакет network-manager-openvpn
sudo apt-get install network-manager-openvpn
и добавляем новое соединение OpenVPN указав адрес нашего сервера и расположение ключей и сертификатов

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

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

Примечание: для каждого клиента должно быть указано своё уникальное имя (в данном случае client2).

Ресурсы по теме:

ВложениеРазмер
ovpn_install.sh1.66 кб
ovpn_server.conf4.22 кб
ovpn_client.conf672 байта

Комментарии (24)

0
Гость - 27 Сентябрь, 2012 - 16:36

Самая лучшая how-to статья для типового решения (" Организовать между сервером и клиентом защищенный туннель для возможности безопасного выхода в интернет клиента с любых открытых и потенциально не безопасных точек доступа в интернет. На пример из различных кафе с открытым wifi."). Все заработало сразу. Единственная опечатка "sudo sevice openvpn start".

0
dm - 27 Сентябрь, 2012 - 16:41
Изображение пользователя dm.

Единственная опечатка "sudo sevice openvpn start".

Поправил.

0
dyug - 27 Сентябрь, 2012 - 17:11

Вопрос:
"Настраиваем клиента"
и
"Настраиваем подключение к серверу через Network-Manager"
это две параллельные процедуры, как на мой склероз...

В общем случае при использовании НМ процедура "Настраиваем клиента" не нужна.
Во всяком случае, я ее не использовал.
разве что инсталляция собственно опенвпн на клиента

еще одно:
"Примечание: при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf."
это не так.
для понимания, советую заглянуть в /etc/default/openvpn :-)
там можно указать что нужно стартовать, а что не нужно стартовать.

0
dm - 27 Сентябрь, 2012 - 17:31
Изображение пользователя dm.

Вопрос:
"Настраиваем клиента"
и
"Настраиваем подключение к серверу через Network-Manager"
это две параллельные процедуры, как на мой склероз.
В общем случае при использовании НМ процедура "Настраиваем клиента" не нужна.

Естественно, настраивать клиента нужно либо через НМ, либо через консоль.

"Примечание: при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf."

У меня кажется по умолчанию стартовались все конфиги с любыми названиями с расширением .conf

В любом случае, статья в подшивке и доступна для редактирования, если есть что исправить или добавить милости просим.

0
Flameflower - 27 Сентябрь, 2012 - 20:36
Изображение пользователя Flameflower.

К слову, весьма удобно клиентам генерить файлы pkcs12.
./build-key-pkcs12
И клиенту отдаем уже контейнер, если надо, с паролем и конфиг.
Единственное в этом случае настройка средстами NM невозможна.

0
dm - 27 Сентябрь, 2012 - 21:23
Изображение пользователя dm.

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

0
dyug - 28 Сентябрь, 2012 - 10:18

Я что имел в виду: то, что из текста непонятно, что нужно настраивать или клиента или через нм.
Может добавить фразу перед настройкой клиента "варианты настройки клиентской стороны"
и соответственно
"настройка клиента в консоли с автоматическим подьемом при старте"
"настройка клиента в GUI через нетворк манагер"
Разумеется - про установку опенвпн нужно вынести в выше описания вариантов

по вопросу старта конфигов:
файл /etc/default/openvpn
# This is the configuration file for /etc/init.d/openvpn
#
# Start only these VPNs automatically via init script.
# Allowed values are "all", "none" or space separated list of
# names of the VPNs. If empty, "all" is assumed.
# The VPN name refers to the VPN configutation file name.
# i.e. "home" would be /etc/openvpn/home.conf
#
#AUTOSTART="all"
#AUTOSTART="none"
#AUTOSTART="home office"

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

0
Гость - 23 Октябрь, 2012 - 17:17

Подскажите пожалуйста, у меня 2 компьютера соединины пачкордом , у компа1 есть доступ в интернет через вай фай. Комп2 подключён пачкордом к компу1. Мне надо чтобы комп2 мог выходить в иннет через комп1. Делаю по вашему мануалу и комп2 не подключается по vpn вообще. Настраиваю на компе2 как у вас показано и не хочет подключаться. Я так понял шлюз ставить вместо 111.111.111.111 ип адрес компа1 с иннетом. ЧТо не так?

+1
dyug - 24 Октябрь, 2012 - 09:59

Вам, Гость, нужен не впн, а простой роутинг и маскарадинг.
в поиске вбить слова "раздача интернета"

0
Гость - 29 Октябрь, 2012 - 20:00

Нет, мне нужен именно впн, такое уж задание... как мне сделать то чт мне нужно с помощью впн?

-1
dyug - 29 Октябрь, 2012 - 22:09

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

0
Chibiko - 27 Сентябрь, 2012 - 20:42
Изображение пользователя Chibiko.

в Windows 7 нужно запускать OpenVPN клиент с правами администратора, тогда если на сервере настроено выдавать маршруты автоматически, то на клиенте маршруты прописывать не надо.

либо руками надо прописывать маршруты на клиенте такие же как вы выдаете на сервере, предварительно удалив имеющиеся командой route delete узел

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

либо запускать как в инструкции на http://openvpn.net/index.php/open-so...ion/howto.html только создать батник для этого примерно такого содержания:

runas /user:Администратор "\"C:\OpenVPN\bin\openvpn.exe\" --pause-exit --config \"%1\""
где вместо %1 путь к файлу конфига.

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

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

С восьмёркой не тестировались? (Каюсь, не искал/читал/делал с этим глюконафтом покачто ничего, поэтому и интерисуюсь, может и на будущее...)

Это пока все вопросы, ибо зоопарк большой, преимущественно на мастдае, в будущем планирую кое-что дурацкое... обязательно отпишусь. если не уволят раньше 8)

0
Flameflower - 27 Сентябрь, 2012 - 21:04
Изображение пользователя Flameflower.

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

0
Chibiko - 27 Сентябрь, 2012 - 21:15
Изображение пользователя Chibiko.

Ах, да, совсем забыл (или это не в эту тему? О_о) возможно ли используя OpenVPN "перекинуть" порты? В данном случае COM-порты 8) В данном случае именно для жёлтой бухгалтерской программы. Именно в случае если VPN-сервер на линуксе, а сервер программы крутиться на мастдае?
вот такой вот частный случай....

0
dyug - 28 Сентябрь, 2012 - 10:05

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

0
mft - 9 Май, 2013 - 16:20

Хорошая статья.
Настроил, работает. Вот только мне надо чтобы VPN не был шлюзом по-умолчанию. Соответственно на сервере закомментил параметр:
# push "redirect-gateway"
Если использовать консольный клиент, всё работает как надо, по дефолту используется не VPN шлюз.
ivan@kubuntu-ivan:~$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0
10.8.0.0        10.8.0.5        255.255.255.0   UG    0      0        0 tun0
10.8.0.5        *               255.255.255.255 UH    0      0        0 tun0
10.64.64.64     *               255.255.255.255 UH    0      0        0 ppp0

А вот если через NM, то всегда VPN шлюз по-умолчанию...
ivan@kubuntu-ivan:~$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default         10.8.0.5        0.0.0.0         UG    0      0        0 tun0
10.8.0.0        10.8.0.5        255.255.255.0   UG    0      0        0 tun0
10.8.0.5        *               255.255.255.255 UH    0      0        0 tun0
10.64.64.64     *               255.255.255.255 UH    0      0        0 ppp0
ip-83-246-152-1 10.64.64.64     255.255.255.255 UGH   0      0        0 ppp0
link-local      *               255.255.0.0     U     1000   0        0 tun0

В принципе как-то не напрягает, но NM как обычно всё делает по-своему.

0
mft - 9 Май, 2013 - 16:27

А нет, наврал! Нашёл там галку - "Использовать для ресурсов только этого соединения". С ней, все как надо))

0
Антоха - 21 Ноябрь, 2015 - 19:47
Изображение пользователя Антоха.

Существует ли софт с гуем для работы с большим количеством vpn-соединений.А точнее для работы с сервисом hidemy.ru?Неудобно каждый раз забивать в консоли новый коннект.
И ещё вопрос.Какая команда корректно останавливает openvpn и восстанавливает "родное" соединение?

0
dm - 21 Ноябрь, 2015 - 23:28
Изображение пользователя dm.

Существует ли софт с гуем для работы с большим количеством vpn-соединений.

А чем стандартный нетвок менеджер не устраивает? Он с опервпн работать умеет на сколько я помню. И гуевый и соединений много сделать можно.

Какая команда корректно останавливает openvpn и восстанавливает "родное" соединение?

sudo service openvpn stop

0
Гость - 21 Ноябрь, 2015 - 23:49

И гуевый и соединений много сделать можно.
Значит не разобрался.
В архиве который высылает hidemy.ru,помимо сертификата/ключа имеется куча этих "vpn-проксиков".Как их прикрутить в нетворке-хз.

sudo service openvpn stop
Я читал эту тему.И пробовал эту команду.Ничего не изменяется после выполнения.
P.S.Нет возможности писать с акка,ибо не дома.

+1
dm - 22 Ноябрь, 2015 - 09:56
Изображение пользователя dm.

Я читал эту тему.И пробовал эту команду. Ничего не изменяется после выполнения.

Попробуйте это:

sudo killall openvpn

0
Антоха - 22 Ноябрь, 2015 - 10:02
Изображение пользователя Антоха.

Попробуйте это:
Благодарю.
Сейчас внимательно просмотрел варианты подключения предлагаемые hidemy.ru.В списке оказался PPTP и L2TP.Через эти протоколы удобно подключаться в нетворке (ибо всё понятно).Но помучаю всё же OpenVPN.

0
Гость - 7 Январь, 2016 - 14:17

Спасибо за пост. В некоторых случаях нужно быстро поднять тунель между двома точками. И самый быстрый способ с минимальной безопасностью, это общий ключ, как пишут, к примеру здесь - http://sysadm.pp.ua/linux/shifrovanie/openvpn-point-to-point.html . Генерацию ключей через OpenSSL никто не подскажет как делать?

0
dyug - 8 Январь, 2016 - 21:35

В гугле инструкций вагон и маленькая тележка.
Большая часть - пошаговая.
Как сгенерить ключи, как их передать, все есть..
Причем номер версии роли не играет. Где то с 2001 года ничего не менялось ни в путях ни в генерации.