Продолжаем знакомство с OpenVPN. В данной статье я расскажу как настроить подключение к OpenVPN на примере операционной системы Linux Mint 18.2 "Sonya".
В предыдущей статье, описывающей установку OpenVPN сервера, мы сгенерировали ключи и сертификаты для клиента.
- ca.crt - корневой CA-сертификат
- ta.key - HMAC ключ
- client.crt - сертификат клиента
- client.key - ключ клиента
Создайте каталог client-keys в /etc/openvpn и скопируйте в него указанные файлы.
mkdir /etc/openvpn/client-keys
Заодно создадим каталог для логов.
mkdir /var/log/openvpn
В Linux Mint 18.2 "Sonya" по умолчанию уже установлен openvpn версии 2.3.10, который выше не обновляется, по крайней мере из системных репозиториев. Поэтому я использую конфигурацию с обычным LZO-сжатием и алгоритмом шифрования AES-256-CBC.
Сервер.
# Порт сервера port 443 # Протокол передачи трафика proto udp # Сетевой интерфейс dev tun # Ключи и сертификаты сервера dh /etc/openvpn/server-keys/dh2048.pem ca /etc/openvpn/server-keys/ca.crt key /etc/openvpn/server-keys/server.key cert /etc/openvpn/server-keys/server.crt # HMAC ключ и алгоритм хэширования ключа tls-auth /etc/openvpn/server-keys/ta.key 0 auth SHA512 # Используемая подсеть server 172.16.150.0 255.255.255.0 # Указание клиенту использовать шлюз сервера push "redirect-gateway def1 bypass-dhcp" # Алгоритм шифрования cipher AES-256-CBC # Использовать сжатие трафика comp-lzo # Использовать размер MTU по умолчанию mssfix 0 # Пинг клиентов keepalive 10 120 # Если сервер на основе CentOS, то group nobody # Если сервер на основе Debian/Ubuntu, то group nogroup user root group nobody # При перезапуске не изменять tun / не перепроверять ключи persist-key persist-tun # Лог-файлы log /var/log/openvpn/server.log status /var/log/openvpn/server-status.log # Подробность логов verb 3 # Запись не более 20-и одинаковых сообщений mute 20
Клиент.
# Работать в режиме клиента client # IP-адрес и порт VPN сервера # ХХ.ХХ.ХХ.ХХ заменить на ip-адрес своего сервера remote XX.XX.XX.XX 443 # Протокол передачи трафика proto udp # Сетевой интерфейс dev tun # Ключи и сертификаты клиента ca /etc/openvpn/client-keys/ca.crt key /etc/openvpn/client-keys/client.key cert /etc/openvpn/client-keys/client.crt # HMAC ключ и алгоритм хэширования ключа tls-auth /etc/openvpn/client-keys/ta.key 1 auth SHA512 # Проверка серверных сертификатов remote-cert-tls server # Не сохранять пароли в виртуальной памяти auth-nocache # Алгоритм шифрования cipher AES-256-CBC # Использовать сжатие трафика comp-lzo # Использовать размер MTU по умолчанию mssfix 0 # Если клиент на основе CentOS, то group nobody # Если клиент на основе Debian/Ubuntu, то group nogroup user root group nogroup # При перезапуске не изменять tun / не перепроверять ключи persist-key persist-tun # Лог-файлы log /var/log/openvpn/client.log status /var/log/openvpn/client-status.log # Подробность логов verb 3 # Запись не более 20-и одинаковых сообщений mute 20
Network Manager ручная настройка
Кликните по сетевому соединению, рядом с часами, выберите "Параметры сети".
В окне "Сеть" нажмите плюсик под списком соединений, выберите VPN подключение.
Выберите тип VPN подключения - OpenVPN (Совместим с сервером OpenVPN).
В окне "Add Network Connection" на вкладке "Идентификация" задаем имя соединения, шлюз (ХХ.ХХ.ХХ.ХХ - ip-адрес сервера) и порт через двоеточие. Выбираем тип аутентификации - Сертификаты (TLS), указываем расположение файлов ключей и сертификатов клиента.
Нажимаем кнопку "Дополнительно". На вкладке "Общие" отмечаем галочками опции эквивалентные клиентской конфигурации.
- comp-lzo - Использовать для данных сжатие LZO
- dev tun - Set virtual device type: TUN
- mssfix 0 - Ограничить максимальный размер сегмента TCP(MSS) туннеля (не работает, можно не отмечать, MTU всегда будет равен 1345), привожу просто для справки. Поскольку Network Manager-ом не пользуюсь, то не стал разбираться что к чему.
Выбираем алгоритм шифрования и HMAC аутентификацию на вкладке "Безопасность".
- cipher AES-256-CBC - AES-256-CBC
- auth SHA512 - SHA-512
На вкладке "Аутентификация TLS" отмечаем "Использовать дополнительную аутентификацию TLS" и указываем на файл ta.key. Так как это клиент, то в направлении ключа выбираем единицу.
Также отмечаем галочкой "Verify peer (server) certificate usage signature" в значении "Remote peer certificate TLS type" выбираем Server, это будет соответствовать опции - remote-cert-tls server.
На этом настройка завершена, нажимаем ОК, потом нажимаем Add. Новое соединение должно появиться в списке доступных соединений.
Network Manager импорт из файла
Все что было описано выше, можно сделать проще. Создайте файл client.ovpn в каталоге /etc/openvpn и добавьте в него нужные настройки (конфиг клиента).
nano /etc/openvpn/client.ovpn
Содержимое файла client.ovpn.
# Работать в режиме клиента client # IP-адрес и порт VPN сервера # ХХ.ХХ.ХХ.ХХ заменить на ip-адрес своего сервера remote XX.XX.XX.XX 443 # Протокол передачи трафика proto udp # Сетевой интерфейс dev tun # Ключи и сертификаты клиента ca /etc/openvpn/client-keys/ca.crt key /etc/openvpn/client-keys/client.key cert /etc/openvpn/client-keys/client.crt # HMAC ключ и алгоритм хэширования ключа tls-auth /etc/openvpn/client-keys/ta.key 1 auth SHA512 # Проверка серверных сертификатов remote-cert-tls server # Не сохранять пароли в виртуальной памяти auth-nocache # Алгоритм шифрования cipher AES-256-CBC # Использовать сжатие трафика comp-lzo # Использовать размер MTU по умолчанию mssfix 0 # Если клиент на основе CentOS, то group nobody # Если клиент на основе Debian/Ubuntu, то group nogroup user root group nogroup # При перезапуске не изменять tun / не перепроверять ключи persist-key persist-tun # Лог-файлы log /var/log/openvpn/client.log status /var/log/openvpn/client-status.log # Подробность логов verb 3 # Запись не более 20-и одинаковых сообщений mute 20
Кликните по сетевому соединению, рядом с часами, выберите "Параметры сети".
В окне "Сеть" нажмите плюсик под списком соединений, выберите VPN подключение.
Тип VPN подключения выбираем - Import from file.
Выберите созданный файл client.ovpn и нажмите Open.
Настройки будут импортированы и автоматически применены. Новое соединение будет носить имя файла из которого происходил импорт.
Кликните по сетевому соединению и активируйте подключение.
После активации появится сообщение что соединение установлено, можно начинать работу.