VPN от Ростелекома: тарифы и настройка оборудования. Ростелеком openvpn


VPN сервер от Ростелекома

VPN – частная виртуальная сеть от Ростелекома, которая призвана помочь в совместной продуктивной работе сотрудникам вашей компании. Услуга позволяет соединить множество клиентов (компьютеров) в общую сеть, независимо от того, расположены ли они в одной комнате или на разных материках. При помощи виртуальной сети организации могут работать совместно с зарубежными партнерами или удаленными сотрудниками, не испытывая при этом каких-либо ограничений и неудобств.

Содержание:

Что такое VPN от Ростелекома

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

Как же работает VPN сервер от Ростелекома? Все оборудование, которая нужно для работы сервиса, находится на стороне провайдера. Оператор обеспечивает круглосуточный мониторинг серверов, исключая возможные падения системы.

 VPN сеть от Ростелекома

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

Как подключить адаптер PLC Узнайте, как правильно подключить PLC адаптер для использования в сети Ростелекома.

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

VPN позволяет обмениваться информацией (в любом формате – медиа или текст) между пользователями, сохраняя полную конфиденциальность данных. Такая сеть скрыта от интернета. Благодаря технологиям виртуальной сети компании могут иметь доступ к своим базам данных и работать с ними совместно из любой точки планеты. Контролировать инфраструктуры теперь становиться проще.

Стоимость услуги VPN сервера

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

Стоимость VPN оборудования Ростелекома

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

Как настроить VPN сервер

VPN сервер от Ростелекома потребует детальной настройки виртуальной сети, которую вы можете выполнить как сами, так и предоставить ее специалистам провайдера. Все действия по отладке сети зависят от ваших потребностей. Настройка параметров выполняется на удаленном сервере, который может работать на основе операционных систем Linux (Ubuntu или других серверных сборок) или Windows.

Как настроить VPN сервер на Ubuntu

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

Когда настройки серверной части будут завершены, понадобится выполнить подключение всех компьютеров рабочей группы к только что созданной сети. Способы подключения к сети зависит от используемой операционной системы (Windows, Linux, MacOS).

Возможные проблемы VPN сервера от Ростелекома

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

Способы оплаты услуг Ростелекома Узнайте, как можно оплатить услуги Ростелекома.

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

Баланс пользователя: //o-rostelecome.ru/uslugi/balans/.

Услуга VPN сервера от Ростелекома непременно заинтересует корпоративных клиентов. Она позволяет настроить высокопроизводительную сеть для крупных компаний, независимо от расположения филиалов.

Похожие статьи

o-rostelecome.ru

OpenVPN, объединяем домашние сети / Хабр

Данная статья посвящена объеденению нескольких домашних локальных сетей с предоставлением прозрачного общего доступа к ресурсам сетей с помощью VPN. За реализацию VPN взята openvpn. Клиенты и сервер openvpn установлены на роутерах домашних сетей, в конкретном случае роутеры семейства asus wl500, но данный мануал вполне применим и другим роутерам где есть досуп к OS и можно поставить openvpn.

Хотя подобных руководств в Интернете пруд пруди, они написаны больше для администраторов, которые имеют большой опыт общения с *nix системами, в то время как пользователями домашних роутеров являются в основном не хакеры, а обычные юзеры, может быть впервые увидевшие коммандную строку Linux на том самом роутере. Я постараюсь писать так чтобы было понятно всем.

Для тех кто не любит много букв, чтобы было понятно о чём речь под катом, привожу картинку

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

Что там понадобится

  1. Роутеры семейства asus wl500
  2. Очень желательно снабдить роутеры usb-флешками, так как в роутере очень мало флеш и оперативной памяти, подойдёт совершенно любая, ну кроме уж совсем раритеного старья, то есть меньше 9Mb. Чем не отличный повод порадовать себя новой флешкой? :)
  3. Хотя бы один из роутеров должен выходить в Интеренет с реальным IP адресом, либо все роутеры должны быть в одном сегменте локальной сети провайдера.
  4. Сети за роутерами должны иметь разный диапазон адресов
  5. Немного времени и мозга

Настраивать роутеры нужно будет вместе, поэтому желательно иметь к ним доступ одновременно. Бегать из одной квартиры в другую не особо удобно, поэтому можно либо обеспечить доступ из Интернета к компьютерам за роутерами (как это сделал я), либо просто собрать роутеры в одной квартире и прицепить клиентские (ой забежал вперёд) роутеры к сервеному, тогда на месте их постоянной работы нужно будет только изменить адрес openvpn сервера.

Теория

Рассмотрим кратко как будет работать система. Сеть состоит из сервера (на рисунке это роутер Mars) и клиентов Earth и Mercury. Сервер обеспечивает функционирование виртуальной сети, шифрование трафика и маршрутизацию пакетов из одной сети в другой.

Более подробно работа сервера показана на следующем рисунке (рисунок очень условный, он только для общего понимания и не отражает компоненты программы). В клиентском режиме openvpn работает точно также, только не осуществляет маршрутизацию.

Итак у нас есть сеть с диапазоном адресов 192.168.1.1-192.168.1.255 за первым роутером (Mars) и с диапазоном 192.168.2.1-192.168.2.255 за роутером Earth. OpenVPN создаёт специальную виртуальную сетевую карту tun0, и пакеты попавшие туда рашифровываются и отправляются на сервер (на серверном компьютере локально, на клинетском через интеренет), где они расшифровывются и отправляются по нужным тунелям до адресата.

Для примера рассмотрим прохождение пакета от компьютера Phobos до компьютера Moon. Пакет от Phobos отправлется на его гейтвей по умолчанию — Mars, там в таблице маршрутизации сказано, что его надо отправить в тунель tun0, там он попадает в openvpn, который уже знает, что пакеты для сети в которую входит Moon следует отправлять в тунель до Earth. Придя на Earth пакет благополучно будет отправлен на подключенную к лоаклке Moon.

Практика

Прошиваем роутеры прошивкой от Олега и ставим ikpg. Думаю многим пользователям wl500ых эта процедура известна. Она очень подробна написана тут: http://wl500g.info/showthread.php?t=3171. Нам необходимы шаги 1-4, собственно прошивка и 7, установка допонительных пакетов.

После того как всё готово ставим необходмы там пакеты командой ipkg install <имя пакета>

  • openvpn — ну это нетрудно догадаться :)
  • vim — текстовый редактор (тот который встроен в оболочку совершенно ни для чего не годится)
  • wget-ssl — понадобится для обновления записей в dns, если у сервера динамический внешний ip.

Пока пакеты устанавливаются мы немного отвлечемся от Линукса и сгенерим ключи для vpn соединения. Как это сделать под Windows (линуксоиды, думаю, уже в теме :) ) уже подробно рассматривалось на хабре, повторятся тут нет смысла, следует только добавить что ca.key надо бы убрать куда нибудь подальше, например записать на ненужную флешку., а флешку положить в сундук под 33 замка, так как зная ca.crt и ca.key можно спокойно подключится к вашей домашней сети, что ясно не входит в наши планы.

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

C:\>telnet 192.168.1.1

далее:

$vim /opt/etc/openvpn/keys/ca.crt Потом нажимаем кнопку i, вставляем содержимое файла ca.crt. Тоже самое делаем с файлами dh3048.pem, mars.crt и mars.key.

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

$rm /opt/etc/openvpn/openvpn.conf $vim /opt/etc/openvpn/openvpn.conf

dev tun

tls-server server 192.168.255.0 255.255.255.0 ifconfig 192.168.255.1 192.168.255.2

client-config-dir ccd

route 192.168.255.0 255.255.255.0 #IP Range of VPN route 192.168.2.0 255.255.255.0 #IP Range of Earth

push «route 192.168.1.0 255.255.255.0» #Say to clients that Mars has 192.168.1.0/24 LAN

#keys

dh /opt/etc/openvpn/keys/dh2024.pem ca /opt/etc/openvpn/keys/ca.crt cert /opt/etc/openvpn/keys/home2.crt key /opt/etc/openvpn/keys/home2.key

#Do not change unless know what you are doing

client-to-client

port 1194 proto udp

user nobody group nobody

comp-lzo persist-tun persist-key verb 3

log-append /opt/var/log/openvpn/openvpn.log status /opt/var/log/openvpn/status.log

keepalive 10 60

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

$mkdir /opt/etc/openvpn/ccd/

В это директории необходимо создать файлы для тех клиентов за которыми будут находится объединяемые сети. В нашем случае это клиент Earth, создаём файл Earth

$vim /opt/etc/openvpn/ccd/Earth

Он у нас будет состять всего из одной строчки

iroute 192.168.2.0 255.255.255.0

Эта строчка говорит openvpn куда отправлять пакеты для сети 192.168.2.0/24.

Итак, до запука openvpn осталось только подправить скрипт запуска /opt/etc/init.d/S20openvpn и убрать оттуда строчку return 0.

Всё, запускаем openvpn

/opt/etc/init.d/S20openvpn

Если всё ok, то вывод netstat -ul | grep 1194 дожен выдавать сторчку udp 0 0 *:1194 *:* а в файле /opt/var/log/openvpn/openvpn.log Появится запись об успешном запуске сервера.

Итак, сервер работает, надо дать возможность пакетам проходить через firewall. Для этого:$iptables -I INPUT -p udp --dport 1194 -j ACCEPT $iptables -I FORWARD -i br0 -o tun0 -j ACCEPT $iptables -I FORWARD -i tun0 -o br0 -j ACCEPT $iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT

Чтобы правила применялись каждый раз их надо добавить в файл /usr/local/sbin/post-firewall, а строчку /opt/etc/init.d/S20openvpn дописать в post-mount, чтобы сервер стартовал каждый раз при запуске роутера ($ обозначает прилашение командной строки, в файлы его вносить не надо!).

(Вы не забыли записать изменения в flashfs?)

На этом настройка сервера практически закончена. Единственное, если сервер имеет динамический ip, то надо позаботится чтобы клиенты знали какой IP сейчас имеет сервер. Для этого есть такая штука как DDNS, то есть динамический DNS. Asus имеет встроенную поддержку некоторых DDNS провайдеров, но не всех, например моего нет. Поэтому я написал простенький скрипт, который обновляет IP на DNS, если IP роутера изменился:

#!/bin/sh IFACE="ppp0" TMPFILE="/tmp/oldip.txt"

/sbin/ifconfig $IFACE > /dev/null 2>&1 if [ "$?" -ne "0" ] then logger "update_ip.sh: Interface $IFACE is down, exiting..." exit 1 fi

new=`/sbin/ifconfig $IFACE|grep inet\ addr|sed -e 's/.*\ addr:\([0-9\.]*\).*/\1/'`

if [ -f $TMPFILE ] then old=`cat $TMPFILE` else touch $TMPFILE old=" " fi

if [ "$new" != "$old" ] then /opt/bin/wget --no-check-certificate "https://dynamicdns.park-your-domain.com/update?host=mars&domain=yourdomain&password=PASSWORD" > /dev/null 2>&1 logger "update_ip.sh: New ip $new detected" echo $new > $TMPFILE fi

Как поставить и настроить cron очень подробно написано тут: wl500g.info/showpost.php?p=52524&postcount=1

И так, теперь переходим к клиенту. Установка клиента абсолютно такая же как и сервера, единственное надо перегнать ключи клиента (нам понадобятся ca.crt, Earth.crt, Earth.key) и нменого другом конфиге. Не забудьте подправить скрипт запуска.

Конфиг клиента, в поле remote нужно вставить адрес сервера

client dev tun proto udp remote mars.yourdomain 1194 resolv-retry infinite nobind persist-key persist-tun ca /opt/etc/openvpn/keys/ca.crt cert /opt/etc/openvpn/keys/Earth.crt key /opt/etc/openvpn/keys/Eartth.key ns-cert-type server comp-lzo verb 3 log-append /opt/var/log/openvpn/openvpn.log status /opt/var/log/openvpn/status.log

Аналогично применяем правила iptables:$iptables -I FORWARD -i br0 -o tun0 -j ACCEPT $iptables -I FORWARD -i tun0 -o br0 -j ACCEPT $iptables -I INPUT -i tun0 -p tcp --dport 80 -j ACCEPT

Запускаем openvpn на клиенте, он соединеятся с сервером и радуемся жизни. Можно смотреть фильмы, фотографии и рубится в игры как по локалке.

Единственное что я не смог сделать это синхронизировать внутренние DNS сервера, поэтому обращатся к компьютерам между сетями надо по их ip.

Ну, надеюсь это будет кому-то полезно, я что-то устал писать этот эпический мануал.

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

В качестве advanced домашнего задания, отнимите у mercury возможность подсоединятся к сети, изменив только конфигурацию Mars.

(С) Иван Лисенков 2009

habr.com

Подробная инструкция по OpenVPN v2.3.8 на Windows server 2008R2 / Хабр

Представляю подробную инструкцию по OpenVPN v2.3.8 на Windows server 2008R2 c уровнем шифрования TLS. Так же будут подробно описаны все параметры.
Настройка сервера
Для начала качаем дистрибутив с официально сайта. Запускаем установщик openvpn-install-2.3.8-I001-x86_64. В компонентах включаем следующее:

Указываем путь установки (Все дальнейшие действия будут ориентироваться на данный путь указанный в примере):

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

После успешной установки переходим в каталог “C:\Programm Files\OpenVPN” где создаем директорию “SSL” (каталог может называться как угодно, в последующих настройках будет использоваться именно этот каталог), в данном каталоге будут располагаться сертификаты сервера, алгоритмы шифрования и проверка подлинности клиента.

Переходим в каталог “C:\Programm Files\OpenVPN\easy-rsa”, открываем с помощью notepad или notepad++ (более правильный вариант) "vars.bat" (скрипт, содержащий в себе параметры ответов для создания и генерации клиентских/серверных сертификатов и последующих настроек сервера).

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

set KEY_COUNTRY=RU set KEY_PROVINCE=MO set KEY_CITY=MOSCOW set KEY_ORG=OpenVPN set [email protected] set KEY_CN=server set KEY_NAME=server set KEY_OU=OU set PKCS11_MODULE_PATH=changeme rem Параметр по умолчанию set PKCS11_PIN=1234 rem Параметр по умолчанию

Сохраняем.

В этом же каталоге “C:\Programm Files\OpenVPN\easy-rsa”, есть конфигурационный файл “openssl-1.0.0.cnf”, открываем его с помощью notepad или notepad++ (более правильный вариант) и изменяем настройку, отвечающую за срок жизни сертификатов, по умолчанию 365 дней, продлим срок жизни до 3650 дней.

default_days = 3650 # how long to certify for

Сохраняем.

Далее будем генерировать следующее:

ca.crt — Собственный доверенный сертификат (Certificate Authority — далее CA) для подписи клиентских сертификатов и для их проверки при авторизации клиента.dh2024.pem — ключ Диффи Хельмана позволяющий двум и более сторонам получить общий секретный ключserver.crt — сертификат сервераserver.key — ключ сервераta.key — дополнительный ключ для tls-аутентификации (повышение безопасности соединения), сервер и каждый клиент должны иметь копию этого ключа

Открываем командную строку и переходим в каталог “C:\Program Files\OpenVPN\easy-rsa”

cd C:\Program Files\OpenVPN\easy-rsa

Вводим команду “vars” нажимаем Enter (инициируем работу со скриптами, в случае закрытия командной строки, команду “vars” придется вводить заного)

Вводим команду “clean-all” (Очищаем каталог “C:\Program Files\OpenVPN\easy-rsa\keys” c последующим созданием файла“index.txt” (база клиентов, она же database) и “serial” (ключ))

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “index.txt и serial”.

Вводим команду “openvpn --genkey --secret %KEY_DIR%\ta.key”

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должен создаться файл “ta.key”.

Вводим команду “build-dh” — генерация ключа Диффи Хельмана.

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должен создаться файл “dh2024.pem”.

Вводим команду “build-ca” — генерация ключа центра сертификации (CA) На все вопросы отвечаем по умолчанию нажатием клавиши Enter, эти параметры мы прописали в “vars.bat”

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “ca.crt и ca.key”.

Вводим команду “build-key-server server” — генерация сертификата сервера. На вопросы Country Name, State Name, Locality Name и т.д. отвечаем по умолчанию нажатием клавиши Enter до самого конца, эти параметры мы прописали в “vars.bat”, далее будет предложено создание сертификата сроком на 3650 дней (данный параметр мы указывали в openssl-1.0.0.cnf) нажимаем “Y”, будет предложено записать сертификат сервера в базу, нажимаем “Y”.

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должены создаться файлы “server.crt, server.key, server.csr”.

Вводим команду “build-key revokecrt” — команда для создания пользовательского сертификата, но в данном случае мы создаем произвольный сертификат “revokecrt” для последующей генерации файла “crl.pem”, который отвечает за проверку и последующий отзыв сертификатов. Теоретически данную процедуру можно проделать в самом конце и даже жить без нее, но тогда не сможем отзывать сертификаты и конфигурационный файл “server.ovpn” будет выглядеть иначе.

На вопросы Country Name, State Name, Locality Name и т.д. отвечаем по умолчанию нажатием клавиши Enter до вопросов Common Name и Name, на эти вопросы нужно отвечать согласно названию создаваемого сертификата пользователя, в нашем случае это произвольный сертификат “revokecrt” на оставшиеся вопросы нажимаем Enter, далее будет предложено создание сертификата сроком на 3650 дней (данный параметр мы указывали в openssl-1.0.0.cnf) нажимаем “Y”, будет предложено записать сертификат сервера в базу, нажимаем “Y”.

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “revokecrt.crt, revokecrt.key, revokecrt.csr”

Вводим команду “revoke-full revokecrt” – команда отвечает за отзыв сертификата и последующего создания файла “crl.pem”

Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должен создаться файл “crl.pem”

Теперь создадим сертификат пользователя, аналогично сертификату “revokecrt” см. выше. Вводим команду “build-key user1” – создаем сертификат пользователя с именем user1

.

На данном этапе работа с консолью закончена, можно закрыть окно и проверить содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “user1.crt, user1.key, user1.csr”

Рекомендую создать папку “Clients” в любом удобном для Вас месте и скопировать туда необходимые файлы для передачи пользователям:

1 — ca.crt2 — user1.crt 3 — user1.key 4 — ta.key

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

Копируем файлы сервера в раннее созданную папку “ssl” в каталоге “ C:\Program Files\OpenVPN\ssl”:

1 — ca.crt 2 — server.crt 3 — server.key 4 — dh2024.pem 5 — ta.key

Переходим в каталог “C:\Program Files\OpenVPN\config” и создадим файл конфигурации сервера “server.ovpn” со следующим содержимым:

# Создаем маршрутизируемый IP туннель. dev tun # Указываем протокол для подключения. proto udp # Указываем порт на котором будем слушать. port 1194 # Указываем что это TLS сервер. tls-server # Указываем путь к доверенному сертификату. ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt» # Указываем путь к сертификату сервера. cert «C:\\Program Files\\OpenVPN\\ssl\\Server.crt» # Указываем путь к ключу сервера. key «C:\\Program Files\\OpenVPN\\ssl\\Server.key» # Указываем путь к ключю Диффи Хельмана dh «C:\\Program Files\\OpenVPN\\ssl\\dh2024.pem» # Указываем адресацию сети. server 10.8.0.0 255.255.255.0 # Указываем алгоритм шифрования должен быть одинаковый клиент/сервер. cipher AES-128-CBC # Указываем не перечитавать файлы ключей при перезапуске туннеля. persist-key # Указываем путь к ключу безопасности и устанавливаем параметр сервера 0 tls-auth «C:\\Program Files\\OpenVPN\\ssl\\ta.key» 0 # Разрешаем общаться клиентам внутри тоннеля. client-to-client # Указываем каталог с описаниями конфигураций каждого из клиентов. client-config-dir «C:\\Program Files\\OpenVPN\\ccd» # Указываем файл с описанием сетей между клиентом и сервером. ifconfig-pool-persist «C:\\Program Files\\OpenVPN\\ccd\\ipp.txt» # Указывает сверку по отозванным сертификатам. crl-verify «C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\crl.pem» # Указываем путь к логу со статусом. status «C:\\Program Files\\OpenVPN\\log\\logopenvpn-status.log» # Указываем путь к логу. log «C:\\Program Files\\OpenVPN\\log\\openvpn.log» # Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер. tun-mtu 1500 # Включаем сжатие. comp-lzo # Устранение проблем с передачей MTU. mssfix # Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, # если по туннелю не передавался никакой трафик. # Указывает, если в течении 120 секунд не было получено ни одного пакета, # то туннель будет перезапущен. keepalive 10 120 # Указываем уровень логирования. verb 3

Сохраняем.

На сервере где будет крутиться OpenVPN необходимо проделать следующее:

1 – Если вы используете встроенный Брандмауэр Windows, создайте разрешающее правило для входящих и исходящих подключений по протоколу UDP на порт 1194.

2 – В службах сервера найдите OpenVPN Service и установите запуск на автоматический, это позволит автоматически запускаться сервису при перезагрузке сервера.

C рабочего стола сервера запускаем “OpenVPN GUI”, в трее дважды щелкаем по значку “OpenVPN GUI” откроется окно лога, если после запуска сервиса в пункте 2 нечего не произошло, нажимаем слева внизу подключиться и если все хорошо, мы должны увидеть следующее содержимое:

Сервис VPN на сервере запущен и готов принимать клиентов.

Настройка клиента
Запускаем ранее скаченный установщик openvpn-install-2.3.8-I001-x86_64, выбор компонентов оставляем по умолчанию, путь сохраняется прежний.

После успешной установки переходим в каталог “C:\Program Files\OpenVPN\config” и создаем файл конфигурации клиента “test.ovpn” со следующим содержимым:

# Создаем маршрутизируемый IP туннель. dev tun # Указываем протокол для подключения. proto udp # Указываем IP аддрес сервера с портом. remote X.X.X.X 1194 # Указываем задержку в секундах для построения маршрута. route-delay 3 # Указываем чтобы клиент забирал информацию о маршрутизации с сервера. client # Указываем что мы являемся TLS клиентом. tls-client # Параметр защиты от MitM атак. ns-cert-type server # Указываем путь к доверенному сертификату. ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt» # Указываем путь к клиентскому сертификату. cert «C:\\Program Files\\OpenVPN\\ssl\\user1.crt» # Указываем путь к клиентскому ключу. key «C:\\Program Files\\OpenVPN\\ssl\\user1.key» # Указываем путь к ключу безопасности и устанавливаем параметр клиента 1 tls-auth «C:\\Program Files\\OpenVPN\\ssl\\ta.key» 1 # Указываем алгоритм шифрования должен быть одинаковый клиент/сервер. cipher AES-128-CBC # Включаем сжатие. comp-lzo # Устранение проблем с передачей MTU. mssfix # Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер. tun-mtu 1500 # Указываем, сли в течении 60 секунд не было получено ни одного пакета, # то туннель будет перезапущен. ping-restart 60 # Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, # если по туннелю не передавался никакой трафик. ping 10 # Указываем уровень логирования. verb 3

Сохраняем.

C рабочего стола запускаем “OpenVPN GUI”, в трее дважды щелкаем по значку “OpenVPN”, откроется окно лога, нажимаем подключиться и если все хорошо, то мы увидим следующее:

Запускаем пинг на 10.8.0.1 и видим что сеть доступна (10.8.0.1 адрес, который получил виртуальный сетевой адаптер на сервере). На сервере мы увидим лог подключения:

Собственно на этом этапе можно закончить и все в дальнейшем будет работать. Но я хотел бы еще кое-что добавить. Для уменьшения количества файлов у клиента и добавление еще одного пункта в безопасности (пароль на подключение), можно сделать следующее, на этапе создания сертификата пользователя на сервере, выполняем команду “build-key-pkcs12 user2” вместо “build-key user1”, выполняем все аналогично первой команде, до пункта Export Password, в этом пункте необходимо указать пароль, например 12345, данный пароль по факту назначается на сертификат “user2.p12”, при попытке подключения через “OpenVPN”, программа обращается к сертификату и требует пароль (зная пароль, его можно изменить, удалить и т.д).

В таком случае, комплект для пользователя будет состоять из:

1 – user2.p12 2 – ta.key

Конфигурационный файл “test.ovpn” должны быть следующего содержания:

# Создаем маршрутизируемый IP туннель. dev tun # Указываем протокол для подключения. proto udp # Указываем IP аддрес сервера с портом. remote X.X.X.X 1194 # Указываем задержку в секундах для построения маршрута. route-delay 3 # Указываем чтобы клиент забирал информацию о маршрутизации с сервера. client # Указываем что мы являемся TLS клиентом. tls-client # Параметр защиты от MitM атак. ns-cert-type server # Указываем путь к сертификату. pkcs12 «C:\\Program Files\\OpenVPN\\ssl\\user2.p12» # Указываем путь к ключу безопасности и устанавливаем параметр клиента 1 tls-auth «C:\\Program Files\\OpenVPN\\ssl\\ta.key» 1 # Указываем алгоритм шифрования должен быть одинаковый клиент/сервер. cipher AES-128-CBC # Включаем сжатие. comp-lzo # Устранение проблем с передачей MTU. mssfix # Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер. tun-mtu 1500 # Указываем, сли в течении 60 секунд не было получено ни одного пакета, # то туннель будет перезапущен. ping-restart 60 # Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, # если по туннелю не передавался никакой трафик. ping 10 # Указываем уровень логирования. verb 3

Сохраняем.

Пробуем подключиться, вводим пароль 12345

Если все хорошо видим следующее:

Ну и на последок, как отозвать сертификат пользователя и вообще посмотреть список выданных сертификатов. Сам список храниться по следующему пути “C:\Program Files\OpenVPN\easy-rsa\keys\index.txt”

Для того чтобы отозвать сертификат, заходим в командную строку. Переходим в каталог “C:\Programm Files\OpenVPN\easy-rsa”:

cd C:\Program Files\OpenVPN\easy-rsa

Вводим команду “vars” нажимаем Enter (инициируем работу со скриптами). Вводим команду для отзыва сертификата пользователя “revoke-full user2” (указываем название заведенного раннее пользователя).

После заходим в “index.txt” “C:\Program Files\OpenVPN\easy-rsa\keys\index.txt” и видим, что сертификат отозван “R”.

Не готов сказать на 100%, но судя по описанию, файл “index.txt” проверяется каждый час, соответственно через час, сертификат будет заблокирован, ну или просто достаточно перезапустить сервис на сервере.

Еще рекомендую использовать отдельную учетную запись для службы “OpenVPN Service” и в случае если пользователи будут работать с этим сервером, где развернут VPN, обязательно уберите права у простых пользователей на каталог “C:\Program Files\OpenVPN”.

Всем спасибо, надеюсь, данная статься поможет многим, кто сталкивается с вопросами и не находил подходящих ответов, разжевал как мог.

habr.com

OpenVPN OSPF между двумя серверами, множественные тоннели / Хабр

OpenVPN достаточно хорошо документирован и на хабре есть статьи по установке, к примеру:вот эта.

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

Дано:
Два пограничных маршрутизатора Centos 7:r01: ens0 1.1.1.1 – провайдер 1 ens1 2.2.2.2 – провайдер 2 ens2 10.0.0.1 – виртуальная сеть между шлюзом и OpenVPN сервером.r02: ens0 3.3.3.3 – провайдер 3 ens1 4.4.4.4 – провайдер 4 ens2 10.1.1.1 – виртуальная сеть между шлюзом и OpenVPN сервером. Два OpenVPN/OSPF сервера Centos 7:

host01: ens0 10.0.0.2 – SNAT через сеть провайдер 1. ens0 10.0.0.3 – SNAT через сеть провайдер 2. ens1 192.168.0.0/23 – локальная сеть.host02: ens0 10.1.1.2 – SNAT через сеть провайдер 3. ens0 10.1.1.3 – SNAT через сеть провайдер 4. ens1 192.168.4.0/23 – локальная сеть.

Все провайдеры в данной схеме разные, имеют разную скорость, стоимость.

Задача:
Создать 4 тоннеля между host01 и host02 так, чтобы они были всегда активны и в случае падения любого из провайдеров, маршрут должен переключаться на более медленный или дорогой канал. Даже если выйдут из строя оба провайдера (по одному на каждом сервере), канал также должен функционировать. В то же время, если более предпочтительный канал заработает – серверу придется перейти на него.

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

Установка:
Система CentOS Linux release 7.4.1708 (Core) / 3.10.0-693.5.2.el7.x86_64. yum install openvpn easy-rsa quagga версии ПО, которые были использованы:openvpn 2.4.4 x86_64 easy-rsa 2.2.2-1.el7 quagga.x86_64 0.99.22.4-4.el7
Настройка:
Для тоннелей выбраны следующие порты:

udp 1150 – 1.1.1.1-3.3.3.3 udp 1151 – 2.2.2.2-4.4.4.4 udp 1152 – 1.1.1.1-4.4.4.4 udp 1153 – 2.2.2.2-3.3.3.3

Следует обратить внимание, что OpenVPN требует чтобы порт, с которого сервер и клиент отправляют пакеты был таким же как и порт приема пакетов, при использовании NAT порт исходящего пакета может отличаться и тоннель не поднимется с такой ошибкой:TCP/UDP: Incoming packet rejected from [AF_INET]1.1.1.1:1194[2], expected peer address: [AF_INET]1.1.1.1:2364 (allow this incoming source address/port by removing --remote or adding --float)

Чтобы порт точно был всегда верным надо настроить пограничный маршрутизатор и OpenVPN сервер:

host01:

-A POSTROUTING -p udp --dport 1150 -o ens0 -j SNAT --to-source 10.0.0.2:1050 -A POSTROUTING -p udp --dport 1151 -o ens0 -j SNAT --to-source 10.0.0.3:1051 В свою очередь на пограничном маршрутизаторе будет так (r01):-A POSTROUTING -p udp -s 10.0.0.2 --dport 1150 -o ens0 -j SNAT --to-source 1.1.1.1:1150 -A POSTROUTING -p udp -s 10.0.0.3 --dport 1151 -o ens1 -j SNAT --to-source 2.2.2.2:1151 Далее настроим туннели, приведу конфиг одной пары клиент/сервер, остальные настраиваются также, просто меняется порт, адреса и номер tun интерфейса.

Конфигурация сервера:

dev tun1 proto udp topology subnet remote 1.1.1.1 ifconfig 10.10.11.1 255.255.255.252 cipher AES-256-CBC persist-tun persist-key ping 10 ping-restart 30 tls-server daemon dh /etc/openvpn/dh3048.pem ca /etc/openvpn/ca.crt cert /etc/openvpn/srv.crt key /etc/openvpn/srv.key reneg-sec 300 port 1150 verb 3

Конфигурация клиента:

dev tun1 proto udp topology subnet remote 3.3.3.3 ifconfig 10.10.11.2 255.255.255.252 cipher AES-256-CBC ping 10 ping-restart 30 tls-client daemon ca /etc/openvpn/ca.crt cert /etc/openvpn/cli.crt key /etc/openvpn/cli.key reneg-sec 300 port 1150 verb 3 Важный параметр в конфигурации тоннеля topology subnet, он позволяет сделать адресацию тоннеля так, чтобы он выглядел как подсеть и не интерфейс точка-точка. Параметр не является параметром по умолчанию и рекомендуется для современных серверов. Без него нет возможности обмениваться широковещательными пакетами внутри тоннеля, тем самым не будет возможности настроить OSPF.

При поднятии тоннеля ifconfig на сервере и клиенте будет выглядеть так:

tun1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500 inet 10.10.11.1 netmask 255.255.255.252 destination 10.10.11.1tun1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500 inet 10.10.11.2 netmask 255.255.255.252 destination 10.10.11.2 После того, как все 4 тоннеля подняты, получается такая картина.

udp 1150 – 1.1.1.1-3.3.3.3 – tun1 – 10.10.11.1-10.10.11.2 udp 1151 – 2.2.2.2-4.4.4.4 – tun2 – 10.10.12.1-10.10.12.2 udp 1152 – 1.1.1.1-4.4.4.4 – tun3 – 10.10.15.1-10.10.15.2 udp 1153 – 2.2.2.2-3.3.3.3 – tun4 – 10.10.16.1-10.10.16.2

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

-A FORWARD -o tun1 -m comment --comment "1" -j ACCEPT -A FORWARD -i tun1 -m comment --comment "1"-j ACCEPT -A FORWARD -o tun2 -m comment --comment "2" -j ACCEPT -A FORWARD -i tun2 -m comment --comment "2"-j ACCEPT -A FORWARD -o tun3 -m comment --comment "3" -j ACCEPT -A FORWARD -i tun3 -m comment --comment "3"-j ACCEPT -A FORWARD -o tun4 -m comment --comment "4" -j ACCEPT -A FORWARD -i tun4 -m comment --comment "4"-j ACCEPT

Отказоустойчивость.

Можно добиться переключения маршрутов и с помощью скриптов, но получилось бы громоздкое и совсем не элегантное решение. Ранее мне не доводилось использовать динамическую маршрутизацию на практике. Протоколов довольно много, остановился я на OSPF, по большому счету, потому, что информации и способов применения нашел больше. Протокол linkstate типа, учитывает состояние каналов, интерфейсов и обменивается ею. Думаю, что вполне можно реализовать подобное на BGP или RIP. С радостью бы посмотрел на BGP версию решения. Чтобы OSPF мог получать и отправлять служебные пакеты LSA – Link State Advertisement потребуется открыть порты на сетевом экране:-A INPUT -i tun1 -p 89 -m comment --comment "multicast tun1"-j ACCEPT -A INPUT -i tun2 -p 89 -m comment --comment "multicast tun2"-j ACCEPT -A INPUT -i tun3 -p 89 -m comment --comment "multicast tun3"-j ACCEPT -A INPUT -i tun4 -p 89 -m comment --comment "multicast tun4"-j ACCEPT
Перейдем к настройке Quagga.
Для начала надо убедиться что папки и файлы, фигурирующие в работе служб Quagga принадлежали пользователю под которым служба запускается:chown -R quagga:quagga /etc/quagga chown -R quagga:quagga /var/log/quagga/ospfd.log Запускаем службы:systemctl start zebra systemctl start ospfd После этого можно начать конфигурировать OSPF.

В консоль можно попасть двумя способами, telnet или vtysh, я выбрал второе. Лучше сразу же попробовать сделать write, чтобы проверить права на файлы конфигурации, иначе все команды, которые вы введете не сохранятся, должно получиться так:

host01# wr Building Configuration... Configuration saved to /etc/quagga/zebra.conf Configuration saved to /etc/quagga/ospfd.conf [OK] Проверьте, все ли ваши интерфейсы доступны для zebra.sh inter Если маршрутизируемые через OSPF сети и все tun интерфейсы на месте, можно продолжать. Прежде всего, необходимо настроить стоимость туннелей, чем меньше стоимость, тем приоритетнее туннель. Сделать это можно так:interface tun1 ip ospf cost 10 И далее для других tun2 30, tun3 15, tun4 20 в моем случае.

После чего можно запускать маршрутизатор:

router ospf ospf router-id 192.168.1.0 redistribute connected route-map LAN passive-interface default no passive-interface ens0 no passive-interface tun1 no passive-interface tun2 no passive-interface tun3 no passive-interface tun4 network 10.10.11.0/30 area 0.0.0.0 network 10.10.12.0/30 area 0.0.0.0 network 10.10.15.0/30 area 0.0.0.0 network 10.10.16.0/30 area 0.0.0.0 network 192.168.1.0/23 area 0.0.0.0 ! ip prefix-list LAN seq 10 permit 192.168.4.0/23 ip prefix-list LAN seq 100 deny any ! route-map LAN permit 10 match ip address prefix-list LAN В данной конфигурации используется параметр redistribute connected для того, чтобы анонсировать не все маршруты на другой сервер, а только нужные, а параметр route-map LAN позволяет фильтровать сети.

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

Примерное время обновления маршрутов 10 секунд, можно варьировать параметры ip ospf hello-interval и ip ospf dead-interval для сокращения этого времени.

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

systemctl enable [email protected] systemctl enable [email protected] Спасибо за внимание, буду верить, что это кому-то пригодится.

habr.com

Вышла новая версия OpenVPN Access Server / Хабр

Сегодня вышла новая версия OpenVPN Access Server. OpenVPN Access Server (OpenVPN-AS) это набор инструментов для установки и настройки, которые упрощают быстрое развертывание VPN-сервера удаленного доступа. Он основывается на популярном программном обеспечении с открытым исходным кодом OpenVPN, позволяя работать с настроенным VPN-сервером при помощи кроссплатформенного клиентского ПО. Предоставляемые сервером возможности — это тщательно подобранный набор из всех возможных конфигураций OpenVPN. Таким образом OpenVPN-AS упрощает настройку и последующее управление системой. Читайте далее, чтобы узнать, что нового появилось в версии 1.7.1.
  • Добавлена ​​поддержка клиентов OpenVPN, собранных без поддержки LZO (необходимо, чтобы OpenVPN-клиенты были собраны с опцией ./configure --enable-lzo-stub).
  • Добавлена переменная vpn.routing.allow_mcast, позволяющая применять правила Iptables, разрешающие обмен пакетами UDP Multicast и IGMP между сервером и клиентом.
  • Поддерживаются 64-битные серийные номера сертификатов
  • Исправлена ошибка, наблюдавшаяся во время аутентификации, при которой ответ на аутентификацию, содержавший в себе больше определённого числа символов, приводил к сбою сервера, и имя пользователя считалось пустым.
  • Исправлена ошибка, при которой клиенты объединённые в группу, не могли получить доступ к шлюзу из-за того, что при подключении на шлюзе не создавался маршрут, по которому нужно было отправить ответ клиентам.
  • Устранён вопрос с DHCP-клиентом Mac OS X, который перезаписывал DNS-настройки, выдаваемые VPN-сервером.
  • Проведена серьезная работа над интерфейсом сеанса управления. Это должно устранить проблему длительных сессий, при которой сеанс разрывался спустя примерно 6 часов с начала соединения.
  • Критическое исправление для UCARP — надёжно обрабатывается событие, при котором виртуальный IP-адрес UPARP не удалялся должным образом с момента предыдущего подключения.
  • Исправлены некоторые проблемы со стабильностью в клиентском веб-интерфейсе, когда Access Server запускается в режиме External PKI.
  • Mac OS X клиент теперь может предоставить VPN-серверу свой MAC-адрес для подтверждения подлинности хоста.
  • Добавлены сообщения об ошибках для отключенных пользователей, отозванных сертификатов, истечения срока действия лицензионного ключа AS.
  • В трее теперь предоставляется больше информации о статусе соединения.
  • Если доступ к Access Server'у настроен по имени (hostname), а клиент пытается обратиться к нему по IP-адресу из браузера, тогда осуществляется перенаправление на страницу с IP-адресом и наоборот.
  • При переключении между серверами, отменено окно с вопросом.
  • При переключении на сервер доступный по IP-адресу, и при условии, что другой сервер уже подключен, не отображается страница статуса подключения для подключенного сервера.
Веб-интерфейс OpenVPN-AS
Ссылки:
С полным списком изменений можно ознакомиться здесь. Дистрибутив для CentOS, Ubuntu/Debian, Redhat, Fedora доступен здесь. Дистрибутив для виртуальных платформ находится здесь. Подробное описание установки OpenVPN-AS можно найти здесь.

habr.com

создание полноценного openVPN gateway / Хабр

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

Основные плюсы такой модели:

  • Просто: настройка занимает менее часа и не требует специальных знаний.
  • Экономно: трафик сжимается lzo.
  • Безопасно: весь трафик шифруется, а клиенты разделены между собой.
  • Иногда по-другому просто никак. :)

Несмотря на эти пункты, нормальной статьи о настройке OpenVPN на Хабрахабре я не нашел. Чтож, попытаюсь исправить это своими силами.

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

За основу возьмем OpenVPN-2.0.9 и Gentoo Linux в качестве сервера и Linux либо Windows в качестве клиента.

Определися с желаемым.

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

После установки шифрованного туннеля между клиентом и сервером, сервер будет NAT-ить все наши пакеты в Интернет. Также, сервер будет обслуживать DNS и являться firewall-ом для виртуальной локальной сети.

Внешний IP нашего сервера (того, который будет openVPN): 212.212.212.212 Внутренний IP сервера (видимый из туннеля): 10.10.0.1 Пул внутренних адресов openVPN: 10.10.0.2 — 10.10.0.128 Название нашей сети: vpnet Имя сервера: vpsrv Имя клиента: vpclient

Зачем нужен внешний IP, думаю, понятно. Внутренний IP нужен для соединения с сервером после поднятия туннеля. Пул адресов — это адреса, которые сервер выдает подключившимся клиентам. Название сети — это имена конф. файлов и имя сервера в этих конф. файлах. Имена клиента и сервера = имена файлов ключей.

На сервере установлен Gentoo Linux 2008.0, обновленный до последних версий. Ядро — 2.6.29. Вся настройка будет выполняться по SSH.

Настройка ядра.

Замечу сразу, на этом этапе нужно быть крайне осторожным и внимательным. Если кто забыл.

Ядро должно содержать опции ниже на сервере. На клиенте нужны только TUN и ipv4.

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

CONFIG_NF_NAT=m CONFIG_NF_NAT_PPTP=m CONFIG_NETFILTER=y CONFIG_TUN=m

Ну и разумеется поддержка ipv4, сетевой карты и прочего железа. Собираем и устанавливаем ядро. Можно воспользоваться genkernel. Перезагружаемся.

Настройка сервера.
Установка ПО.
Если :) сервер вернулся из ребута, перейдем к установке ПО.

emerge --sync emerge openvpn bind bind-tools iptables

Ждем, иногда долго. После установки переходим в /etc/init.d/ и выполняем:

ln -s openvpn openvpn.vpnet rc-update add openvpn.vpnet default rc-update add named default rc-update iptables default ./iptables save

Создав symlink на самого себя, мы указали openvpn, что нужно использовать конфигурацию vpnet. В будущем запускаем его только так:

/etc/init.d/openvpn.vpnet start

Сейчас запускать не нужно, ибо запускать пока нечего. :) Помимо этого мы добавили iptables, named и openvpn в автозагрузку.

Создадим нужные каталоги и файлы:

mkdir /etc/openvpn/vpnet/ mkdir /etc/openvpn/vpnet/keys touch /var/log/openvpn.log touch /etc/openvpn/vpnet.conf

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

Перейдем в /usr/share/openvpn/easy-rsa/. Откроем файл vars и впишем настроим параметры:

export EASY_RSA="/usr/share/openvpn/easy-rsa/" #Путь к easy-rsa. export KEY_CONFIG="$EASY_RSA/openssl.cnf" #Конфиг OpenSSL export KEY_DIR="/etc/openvpn/vpnet/keys" #Каталог, в котором мы будем держать ключи. export KEY_SIZE=1024 # Размер ключа export CA_EXPIRE=3650 # Срок действия CA export KEY_EXPIRE=3650 # Срок действия ключа export KEY_COUNTRY="RU" # Двухбуквенный код страны export KEY_PROVINCE="XX" # Province, не актуально export KEY_CITY="Town" # Город export KEY_ORG="Companyname" # Компания export KEY_EMAIL="[email protected]" # Email

Естественно, значения (компания, путь к ключам и easy-rsa, email) нужно поменять на подходящие вам.

Имопртируем переменные: source ./vars

Теперь создадим ключи.

./clean-all # Убиваем старые ключи, если они были. openvpn --genkey --secret ta.key # Ключ TLS-auth ./build-dh #Ключ Диффи-Хеллмана. ./pkitool --initca # Certificate Authority для сервера. ./pkitool --server vpsrv # Сертификат сервера. ./pkitool vpclient # Сертификат клиента.

И перенесем остатки в нужное место:

mv ./ta.key /etc/openvpn/vpnet/keys

Все, ключи готовы.

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

Переходим в /etc/openvpn/, открываем vpnet.conf и пишем туда:

mode server tls-server proto tcp-server dev tap port 5555 # Порт daemon tls-auth /etc/openvpn/vpnet/keys/ta.key 0 ca /etc/openvpn/vpnet/keys/ca.crt cert /etc/openvpn/vpnet/keys/vpsrv.crt key /etc/openvpn/vpnet/keys/vpsrv.key dh /etc/openvpn/vpnet/keys/dh2024.pem ifconfig 10.10.0.1 255.255.255.0 # Внутренний IP сервера ifconfig-pool 10.10.0.2 10.10.0.128 # Пул адресов. push "redirect-gateway def1" # Перенаправлять default gateway на vpn-сервер. Если не нужно - закомментировать. push "route-gateway 10.10.0.1" duplicate-cn verb 3 cipher DES-EDE3-CBC # Тип шифрования. persist-key log-append /var/log/openvpn.log # Лог-файл. persist-tun comp-lzo

Все опции, в принципе, понятны. Особо важные я отметил комментариями. Пути и названия, адреса — нужно подправить под себя.

Теперь сервер можно запустить командой /etc/init.d/openvpn.vpnet start Если возникнут проблемы, подробности можно прочитать в log-файле.

NAT

Чтобы сервер выпускал наши пакеты во внешнюю сеть нам нужно настроить NAT. Это просто.

Готовим и запускаем iptables:

/etc/init.d/iptables save /etc/init.d/iptables start

Включаем поддержку IP forwarding:

sysctl net.ipv4.ip_forward=1 echo "sysctl net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

Добавляем правило firewall:

iptables -v -t nat -A POSTROUTING -o EXTERNAL_IF -s VPN_NET/24 -j SNAT --to-source SERVER_IP

EXTERNAL_IF, VPN_NET и SERVER_IP заменить на внешний интерфейс, сеть VPN и внешний (!) IP сервера соответственно.

Снова делаем /etc/init.d/iptables save, чтобы правило применялось при загрузке системы.

Все, можно работать.

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

Устанавливаем ПО, создаем пути:

emerge openvpn cd /etc/init.d/ ln -s openvpn openvpn.vpnet-client rc-update add openvpn.vpnet-client default

mkdir /etc/openvpn/vpnet mkdir /etc/openvpn/vpnet/client_keys touch /etc/openvpn/vpnet-client.conf

Берем с сервера файлы:

ca.crt vpclient.crt vpclient.key ta.key

и закидываем их в /etc/openvpn/vpnet/client_keys/ на клиенте.

Редактируем /etc/openvpn/vpnet-client.conf:

tls-client proto tcp-client remote 212.212.212.212 dev tap port 5555 cd /etc/openvpn/vpnet pull tls-auth /etc/openvpn/vpnet/client_keys/ta.key 1 ca /etc/openvpn/vpnet/client_keys/ca.crt cert /etc/openvpn/vpnet/client_keys/vpclient.crt key /etc/openvpn/vpnet/client_keys/vpclient.key cipher DES-EDE3-CBC log-append /var/log/openvpn.log comp-lzo

Опции шифрования и компрессии на клиенте и сервере должны совпадать.

Запускаем клиент. Автоматически установится соединение с сервером, создастся туннель, default gateway — сервер VPN. Если все сделано правильно, то можно ходить в интернет.

Настройка закончена.

Могу ответить на вопросы в комментариях.

habr.com

Связываем локальные сети при помощи OpenVPN

 

Имеем центральный офис и три филиала. Все используют разных интернет-провайдеров, и разные технологии.

Локальные сети:

 

Центральный офис: 10.10.10.0 255.255.255.0

Филиал под условным названием npn: 192.168.0.0 255.255.255.0

Филиал под условным названием mg: 192.168.10.0 255.255.255.0

Филиал под условным названием westfood: 192.168.2.0 255.255.255.0

 

Необходимо связать эти сети, для обмена данными 1С между филиалами и центральным офисом, ну и для удобства администрирования. Для этих целей будем использовать кросс-платформенную программу OpenVPN. С помощью нее создадим защищенную виртуальную частную сеть, обьединяющую локальные сети предприятия. Выглядеть это будет так: из любой локальной сети, например с сети westfood (192.168.2.0 255.255.255.0) можно будет попасть на компьютер в любой другой сети, например npn(192.168.0.0 255.255.255.0), введя локальный ip-адрес, например 192.168.0.10 . Причем не важно что у них разные провайдеры. Программа использует только один порт, и не помеха если клиенты за NATом.

 

 

Ставим (и на сервере и на клиентах):

 

sudo su

apt-get install openvpn

 

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

 

Переходим в каталог со скриптами создания ключей шифрования:

 

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0

 

Открываем файл, содержащий переменные для скриптов:

 

nano vars

 

изменяем следующие параметры под свою организацию:

 

export KEY_COUNTRY="RU"

export KEY_PROVINCE="PS"

export KEY_CITY="Pskov"

export KEY_ORG="MegaHolod"

export KEY_EMAIL=" Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript "

export KEY_DIR="/etc/openvpn/keys"

 

Последний - директория, куда будут сохраняться созданные ключи.

 

Заносим переменные из только что отредактированного файла в память

source ./vars

 

Перед созданием ключей запускаем скрипт:

./clean-all

 

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

 

Sign the certificate? [y/n]:y

 

1 out of 1 certificate requests certified, commit? [y/n]y

 

Итак создаем  CA ключ:

./build-ca

Создаем DH ключ (нужен только серверу):

./build-dh

Создаем private key для сервера (gate - имя сервера):

./build-key-server gate

Создаем ключи в PKCS #12 формате для машин-клиентов;

./build-key-pkcs12 mg

./build-key-pkcs12 npn

./build-key-pkcs12 westfood

Создаем TLS-ключ (Общий для сервера и клиента):

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

Из папки "/etc/openvpn/keys" нужно скопировать ta.key и *.p12 соответствующий клиенту на машины-клиенты.

 

Настраиваем сервер (создаем файл-конфиг и заполняем его):

 

touch /etc/openvpn/server.conf

nano /etc/openvpn/server.conf

 

port 17993 # порт, на котором будет слушать сервер

proto tcp # протокол (по умолчанию udp)

dev tun # тип устройства (tun или tap)

############################ KEYS #######################################

tls-server # явно указывает, что данный хост является tls-server

tls-auth keys/ta.key 0 # 0-сервер , 1- для конфига клиента

ca /etc/openvpn/keys/ca.crt # файл сертификата для CA

cert /etc/openvpn/keys/gate.crt # сертификат сервера

key /etc/openvpn/keys/gate.key # ключ сервера

dh /etc/openvpn/keys/dh2024.pem # файл с ключем Диффи-Хелмана

########################## END KEYS #####################################

# автоматически присваивает адреса всем клиентам (DHCP) в указанном

# диапазоне с маской сети. Данная опция заменяет ifconfig и может

# работаеть только с TLS-клиентами в режиме TUN, соответственно

# использование сертификатов обязательно.

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов

push "route 10.10.10.0 255.255.255.0" # передача клиенту маршрута к сетке,

# в которой сервер.

# каждые 10 секунд посылать ping на удаленный хост, и, если за 60 секунд

# не было получено ни одного пакета - то перезапускать туннель.

keepalive 10 60

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

# Может принимать значения yes, no, adaptive.

# Последнее используется по умолчанию.

comp-lzo

# Для улучшения безопасности рекомендовано запускать

# все сервисы с минимальными правами. Openvpn будет работать от имени nobody.

user nobody

group nogroup

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

persist-tun # данная опция оставляет без изменения устройства tun/tap

#при перезапуске OpenVPN.

# сервер работает в режиме демона

daemon

############################ LOGS #######################################

status openvpn-status.log # указывает путь к статус-файлу,

# в котором содержится информация о текущих соединениях и

#  информация о интерфейсах TUN/TAP

log-append  openvpn.log # дописывать сообщения в лог-файл, а не перезаписывать.

verb 4 # уровень логирования

mute 20 # в лог будет записываться только по 20 сообщений из одной категории

########################### END LOGS ####################################

client-to-client # позволяет клиентам видеть друг друга (сети)

client-config-dir /etc/openvpn/ccd # папка содержащая маршруты к сетям

# клиентов и посылаемые клиентам ip адреса клиента и сервера

ccd-exclusive # каждому клиенту свои настройки

management localhost 7505

tun-mtu 1500 # устанавливает максимальный размер MTU

tun-mtu-extra 32

mssfix 1450

# маршруты к сетям клиентов

route 192.168.10.0 255.255.255.0 10.8.0.2

route 192.168.0.0 255.255.255.0 10.8.0.2

route 192.168.2.0 255.255.255.0 10.8.0.2

 

Настройки маршрутизации к клиентским сетям и выдача им ip.

 

Выбранные пары IP-адресов, во-первых, должны быть уникальными, во-вторых, должны входить в состав последовательных подсетей, ограниченных маской /30 (255.255.255.252), и, в-третьих, должны находиться в пределах пула IP-адресов, выделенного для виртуальной частной сети (определяется параметром server файла конфигурации сервера OpenVPN). С учетом перечисленных условий для клиентов и сервера подойдут пары IP-адресов со следующими парами последних октетов:

[  1,  2]   [  5,  6]   [  9, 10]   [ 13, 14]   [ 17, 18]   [ 21, 22]   [ 25, 26]   [ 29, 30]   [ 33, 34]   [ 37, 38]

[ 41, 42]   [ 45, 46]   [ 49, 50]   [ 53, 54]   [ 57, 58]   [ 61, 62]   [ 65, 66]   [ 69, 70]   [ 73, 74]   [ 77, 78]

[ 81, 82]   [ 85, 86]   [ 89, 90]   [ 93, 94]   [ 97, 98]   [101,102]   [105,106]   [109,110]   [113,114]   [117,118]

[121,122]   [125,126]   [129,130]   [133,134]   [137,138]   [141,142]   [145,146]   [149,150]   [153,154]   [157,158]

[161,162]   [165,166]   [169,170]   [173,174]   [177,178]   [181,182]   [185,186]   [189,190]   [193,194]   [197,198]

[201,202]   [205,206]   [209,210]   [213,214]   [217,218]   [221,222]   [225,226]   [229,230]   [233,234]   [237,238]

[241,242]   [245,246]   [249,250]   [253,254]

 

Создаем на сервере файлы для каждого клиента:

 

touch /etc/openvpn/ccd/npn

nano /etc/openvpn/ccd/npn

 

iroute 192.168.0.0 255.255.255.0

ifconfig-push 10.8.0.5 10.8.0.6 255.255.255.252

 

# iroute - маршрут к сети клиента под названием npn

# ifconfig-push <ip клиента> <ip сервера> <маска /30>

# посылает клиенту ай-пи адрес клиента и сервера

 

для других сетей аналогично:

 

touch /etc/openvpn/ccd/mg

nano /etc/openvpn/ccd/mg

 

iroute 192.168.10.0 255.255.255.0

ifconfig-push 10.8.0.9 10.8.0.10 255.255.255.252

 

touch /etc/openvpn/ccd/westfood

nano /etc/openvpn/ccd/westfood

 

iroute 192.168.2.0 255.255.255.0

ifconfig-push 10.8.0.13 10.8.0.14 255.255.255.252

 

Правила для IPTABLES.

 

Для того что-бы это все работало, в фаерволе (iptables), если он используется, нужно разрешить трафик. Пример куска моего скрипта настройки, касающегося openvpn:

 

#!/bin/bash

###################################################

# Переменные

###################################################

#указываем внешний ip сервера и внешн. сетевой интерфейс

INET_IP1=195.239.136.ххх

INET_IFACE1=eth3

# указываем внутренний ip сервера и внутр. сетевой интерфейс

LAN_IP=10.10.10.4

LAN_IFACE=eth0

# указываем сетевой интерфейс VPN, и сеть, ему принадлежащую

VPN_IFACE=tun0

VPN_RANGE=10.8.0.0/24

# внутренняя сеть

LAN_RANGE=10.10.10.0/24

# сетевой интерфейс петли и ip

LO_IFACE=lo

LO_IP=127.0.0.1

###################################################

#OpenVPN

###################################################

# разрешаем трафик между локальной сетью и VPN

# (необходимо для возможности доступа к серверу по внутреннему ip. c клиента)

$ip -A FORWARD -p all -i $LAN_IFACE -o $VPN_IFACE -j ACCEPT

$ip -A FORWARD -p all -o $LAN_IFACE -i $VPN_IFACE -j ACCEPT

# разрешаем входящий и исходящий трафик для vpn-интерфейса

# (необходимо для возможности установки vpn соединения)

$ip -A INPUT -p all -i $VPN_IFACE -j ACCEPT

$ip -A OUTPUT -p all -o $VPN_IFACE -j ACCEPT

# разрешаем icmp пакеты через vpn

# (необходимо для пинга)

$ip -A INPUT -p icmp -m icmp -i $VPN_IFACE --icmp-type echo-request -j ACCEPT

$ip -A OUTPUT -p icmp -m icmp -o $VPN_IFACE --icmp-type echo-request -j ACCEPT

$ip -A FORWARD -p icmp -m icmp -i $VPN_IFACE  -o $LAN_IFACE --icmp-type echo-request -j ACCEPT

$ip -A FORWARD -p icmp -m icmp -o $VPN_IFACE  -i $LAN_IFACE --icmp-type echo-request -j ACCEPT

$ip -A INPUT -p icmp -m icmp -i $VPN_IFACE --icmp-type echo-reply -j ACCEPT

$ip -A OUTPUT -p icmp -m icmp -o $VPN_IFACE --icmp-type echo-reply -j ACCEPT

$ip -A FORWARD -p icmp -m icmp -i $VPN_IFACE  -o $LAN_IFACE --icmp-type echo-reply -j ACCEPT

$ip -A FORWARD -p icmp -m icmp -o $VPN_IFACE  -i $LAN_IFACE --icmp-type echo-reply -j ACCEPT

 

 

Теперь на машинах-клиентах создаем конфиг:

 

touch /etc/openvpn/client.conf

nano /etc/openvpn/client.conf

 

client

dev tun  # тип устройства tun или tap

#dev-node OpenVPN # раскоментировать если клиент под виндовс

# для виндовс нужно указать название

# создаваемого сетевого адаптера

proto tcp # протокол. по умолчанию udp

remote 195.239.136.ххх 17993 # ip и порт сервера

remote 93.153.252.ххх 17993

resolv-retry infinite # для dyndns

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

persist-tun # данная опция оставляет без изменения устройства tun/tap

###############KEY######################

tls-client

# пути к файлам ключей, которые мы скопировали с сервера

pkcs12 /etc/openvpn/keys/westfood.p12

tls-auth /etc/openvpn/keys/ta.key 1

#############END_KEY####################

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

# Может принимать значения yes, no, adaptive.

# Последнее используется по умолчанию.

comp-lzo

verb 4 # уровень логирования

tun-mtu 1500 # устанавливает максимальный размер MTU

tun-mtu-extra 32

mssfix 1450

route-delay 5 # посылать маршруты через 5 сек. после установки vpn-канала

management localhost 7505

# show-net-up # раскоментировать, если клиент под виндовс

# если в конфиг OpenVPN вставить show-net-up, то OpenVPN запросит

# windows через API всю таблицу маршрутизации и выведет её в лог

#ip-win32 manual # раскоментировать, если клиент под виндовс

 

Запускаем на сервере, а затем и на клиентах демон openvpn:

 

/etc/init.d/openvpn start

 

Выходим из под рута:

 

exit

 

linux-bash.ru