Инструменты пользователя

Инструменты сайта


openvpn:openvpn

OpenVPN

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

http://openvpn.net/

Установка

apt install openvpn

Настройка

Варианты управление ключами и сертификатами:

:!: Настоятельно рекомендуется все операции с ключами производить на отдельном компьютере. Файл ca.key позволяет создавать ключи и сертификаты поэтому должен быть только у Администратора!

TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Используется для создания сетевого моста. Если же у вас стоит задача объединить удаленные сети в единое адресное пространство, например сделать и в офисе и в филиале единую сеть 192.168.10.0/24, то тогда бы мы использовали tap интерфейс и указывали бы на компьютерах в обоих сетях не пересекающиеся адреса из одной подсети.

TUN — сетевой туннель, работает на сетевом уровне модели OSI, оперируя IP пакетами. Используется для маршрутизации.


Установка и настройка openvpn на CentOS 7 Выбор устройства openvpn — TAP или TUN

https://ru.wikipedia.org/wiki/TUN/TAP

Изменение пароля к клиентскому ключу

Change passphrase for private key

Пример:

openssl rsa -des3 -in client.key -out client_new.key

Пример для MS Windows:

change_passphrase.cmd
set OPENSSL="C:\Program Files\OpenVPN\bin\openssl"
%OPENSSL% rsa -des3 -in "C:\Program Files\OpenVPN\config\old.key" -out "C:\Program Files\OpenVPN\config\new.key"

Файлы

ca.crt

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

ta.key

Ключ шифрования начала сессии

dh{n}.pem

Алгоритм обмена Диффи-Хеллмана (DH)

Параметры Диффи — Хеллмана для шифрования со стороны сервера

server.crt

Сертификат сервера

server.key

Ключ сервера

crl.pem

Список отозванных сертификатов

client.crt

Сертификат клиента

client.key

Ключ клиента

ta.key

Ключ шифрования начала сессии

Сервер

Запуск

systemctl start openvpn@server

Статус

systemctl status openvpn@server

Перезапуск

systemctl start openvpn@server

Останов

systemctl stop openvpn@server

server.conf

FIXME

FIXME Директива client-to-client

Путь к настройкам: /etc/openvpn/server

Пример: /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz

server.conf

server.conf

/etc/openvpn/server.conf
local IP_АДРЕС_СЕРВЕРА
port 1194
dev tun
proto udp
tun-mtu 1280
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key  # This file should be kept secret
dh /etc/openvpn/server/dh2048.pem
crl-verify /etc/openvpn/server/crl.pem
server 192.168.168.0 255.255.255.0
 
ifconfig-pool-persist /etc/openvpn/ipp.txt
connect-retry-max 5
 
#auth-user-pass-verify /etc/openvpn/checkpsw.sh via-env
#script-security 3 system
 
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
 
push "route 192.168.168.0 255.255.255.0"
push "route 10.1.0.0 255.255.255.0"
 
push "dhcp-option DNS 192.168.168.1"
push "dhcp-option DOMAIN domain.ru"
 
keepalive 10 120
 
tls-auth /etc/openvpn/keys/ta.key 0 # This file is secret
comp-lzo
max-clients 5
user nobody
group nogroup
 
persist-key
persist-tun
 
status openvpn-status.log
 
log-append /var/log/openvpn.log
verb 3
mute 20
 
#client-connect /etc/openvpn/client-connect.sh

ipp.txt

FIXME

/etc/openvpn/ipp.txt
client01,192.168.168.22
client02,192.168.168.26
client03,192.168.168.30
client04,192.168.168.34

Особенности ipp.txt в OpenVPN версии 2.4.0

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

/etc/openvpn/server/ipp.txt
N002,10.1.0.2
N003,10.1.0.3
Client-01,10.1.0.4
Client-02,10.1.0.5
Client-03,10.1.0.6
N007,10.1.0.7
N008,10.1.0.8
N009,10.1.0.9
N010,10.1.0.10
Client-04,10.1.0.11
Client-05,10.1.0.12
Client-06,10.1.0.13

где N002, N003, N007, N008, N009 и N010 это несуществующие клиенты для резервирования неиспользуемых адресов.

Особенности работы с MS Windows клиентами

FIXME

OpenVPN выделяет для каждого клиента подсеть с маской /30 для обеспечения совместимости с клиентами MS Windows из-за ограничения режима эмуляции TUN драйвера TAP-Win32.

Если к серверу OpenVPN не будут подключаться клиенты MS Windows, то можно отключить такой порядок выделения адресов указав в настройках сервера директиву ifconfig-pool-linear

192.168.1.4/30
192.168.1.4Сетевой адрес (network address)
192.168.1.5Адрес виртуального маршрутизатора, шлюза, в качестве которого выступает сервер OpenVPN (virtual IP address in the OpenVPN Server)
192.168.1.6Адрес выдаваемый клиенту (assigned to the client)
192.168.1.7Широковещательный адрес (broadcast address)

Драйвер TAP-Win32 включает DHCP-сервер, который назначает клиенту адрес 192.168.1.6, а адрес 192.168.1.5 определяется как адрес DHCP-сервера.

Такой подход приводит к потере части IP-адресов, но это лучший способ обеспечения совместимости с всеми клиентами OpenVPN.


http://openvpn.net/index.php/open-source/faq/community-software-server/273-qifconfig-poolq-option-use-a-30-subnet-4-private-ip-addresses-per-client-when-used-in-tun-mode.html

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

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

Выполнение команд при подключении клиента

Нужно задать имя скрипта:

/etc/openvpn/openvpn.conf
client-connect /etc/openvpn/client-connect.sh

Пример кода скрипта:

/etc/openvpn/client-connect.sh
case ${common_name} in
Client01)
        sudo /usr/sbin/etherwake 00:11:22:33:44:55
        ;;
Client02)
        sudo /usr/sbin/etherwake 55:44:33:22:11:00
        ;;
esac
 
exit 0

Пример настройки sudo:

nobody ALL = (ALL) NOPASSWD:/usr/sbin/etherwake

Файл для systemd

FIXME DELETEME

Пока актуален для Debian 8

Пока актуален для Debian 8

/etc/systemd/system/multi-user.target.wants/openvpn.service
# This service is actually a systemd target,
# but we are using a service since targets cannot be reloaded.
 
[Unit]
Description=OpenVPN service
After=network.target
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/openvpn --daemon --cd /etc/openvpn/ --config server.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
 
[Install]
WantedBy=multi-user.target

Выполнить:

systemctl daemon-reload
service openvpn start

Клиент

Все настройки клиента в одном файле

Папка с ключами должна быть внутри папки config

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

client.ovpn

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

Пример файла:

client1.ovpn
client
dev tun
proto udp
remote vpn.domain.ru
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1

Запуск через sudo

Пример настройки sudo:

user ALL = (ALL) NOPASSWD:/usr/sbin/openvpn

Пример скрипта запуска:

sudo /usr/sbin/openvpn client.ovpn

update-resolv-conf

Для того, чтобы использовать DNS сервер полученный от сервера OpenVPN нужно:

  1. Установить пакет resolvconf
    apt-get install resolvconf
  2. Добавить в конец файла настроек клиента client.ovpn следующие строки:
    script-security 2
    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf

Клиенты для MS Windows

Zabbix

Ссылки

openvpn/openvpn.txt · Последние изменения: 2019-05-11 00:53 — GreyWolf