Основные команды и параметры OpenVPN

Основные команды и параметры OpenVPN

3 min čtení

OpenVPN является универсальным, удобным и понятным в использовании, а самое главное позволяет абсолютно безопасно построить виртуальные частные сети VPN.
Здесь я постараюсь сделать обзор основных командах, которые используются в OpenVPN.
Ниже будут использоваться два вида команд.
Один с — (дефис) это команды, которые используются только из командной строки.
Другой с * это команды, перед которыми должны быть использованы в конфигурационном файле.


 

remote-random — Балансируют нагрузку. Если помимо этой команды в random есть удаленные хосты, то OpenVPN будет в хаотичной последовательности подсоединяться к ним.
local< host > — особенно важно для локальной машины, на которой не один IP адрес. Данная команда вычисляет IP или имя хоста, на котором будет работать OpenVPN.
connect-retry< seconds > — при разорванном соединении через определённое время (секунд) пробует снова подключаться.
remote< host > — может являться как DNS-именем, так и IP-адресом. Позволяет выяснить удаленный конец туннеля.
port< port number > — показывает порт на котором будет работать OpenVPN (локально и удаленно).
float – помогает удаленному хосту менять IP адрес в процессе работы туннеля. Соединение остается неразрывным.
lport< port > — показывает локальный порт для использования OpenVPN.
proto< proto > — показывает какого именно протокола будет использование. Значения бывают: udp, tcp, tcp-client, tcp-server. О двух последних поговорим чуть подробнее.
tcp-server – ожидает подключения.
tcp-client – самостоятельно устанавливает соединение.
В отличии tcp, протокол udp VPN будет работать быстрее. Но по сравнению с upd, tcp обеспечивает лучшее VPN-соединение.
dev< device > — помогает определить тип устройства при использовании tap или tun. Например: dev tun или dev tap
В одном из вариантов используется свободный интерфейс tun или tap. Помимо этого, можно точно указать номер виртуального интрефейса, например tun2.
ipchange< cmd > — При смене IP адреса, выполняет команду или скрипт, в указанном< cmd >. Пример: ipchange script-ip.sh
rport< port > — указывает удаленный порт для использования OpenVPN. Пример:
rport 5000 — OpenVPN будет совершать попытки подключения к удаленному порту.
connect-retry-max< n > — при потере соединения, максимальное количество повторов.
nobind — данная опция только для клиента. Динамический порт для подключения.
shaper< bytes > — аналогично nobind. Опция показывает с какой скоростью передаются данные в байтах для исходящего трафика.
resolv-retry< seconds > — при невозможности распознать имя удаленного хоста по DNS, через определенное время (указываемое в секундах) пробует переподключиться.
dev-node< interface name > — создает имя виртуального интерфейса. Например: dev-node openvpn12
server< network >< mask > — в указанном диапазоне (с маской сети) автоматически устанавливает адреса всем клиентам (DHCP). Она работает только TLS-клиентами в режиме TUN. Является заменой ifconfig. Работает только при использовании сертификатов.
ifconfig – создает локальный IP адрес и маску подсети для туннельного интерфейса. Например: ifconfig 10.3.0.1 245.245.245.0
tun-mtu< mtu size > — устанавливает максимальный размер MTU. Стандартно tun-mtu равен 1500.
mode server — Позволяет OpenVPN перейти в сервесный режим. Данная опция доступна только со 2ой версии.
mode p2p — является опцией по умолчанию.
server-bridge< gateway >< mask >< pool > — сервер в режиме моста для TAP устройств. Пример: server bridge 10.3.0.1 255.255.255.0 10.3.0.128 10.3.0.254
У клиентов будут адреса в этом диапазоне 10.3.0.128 — 10.3.0.254, в качестве шлюза будет 10.3.0.1.


 

Работа с прокси

OpenVPN спокойно может работать через http и socks прокси.
http-proxy-retry – подключается заново, если соединение было прервано.

При необходимости авторизации на прокси-сервере:

http-proxy< server port authfile > — где authfile – файл, который содержит имя пользователя и пароль или stdin (будет запрошено имя пользователя и пароль).
После authfile нужно указать метод авторизации. Опция auto для автоматического выбора. Самостоятельно можно указать через auth-method.
auth-method бывает трех видов «none», «basic» или «ntlm».
В OpenVPN начиная с версии 2.1.
http-proxy< server port [auth] > — указываем адрес и порт прокси-сервера. Например: http-proxy 142.156.0.12 0505
socks-proxy< server port > — указываем сокс-прокси сервер. Пример: socks-proxy 142.156.0.12 0505
http-proxy-timeout< seconds > — после установленных секунд бездействия считать соединение с прокси-сервером разорванным Например: http-proxy-timeout 60
socks-proxy-retry – подключается заново, если соединение было потеряно.
auto-proxy — позволяет автоматически определять прокси-сервер. Версия OpenVPN 2.1 и выше.


 

Опции в режиме сервера

comp-lzo – это параметр сжатия трафика, который проходит через виртуальный туннель. Имеет три значения yes, no, adaptive. no и adaptive используется по умолчанию.
Например:
comp-lzo yes — принудительно включить.
comp-lzo no — принудительно отключить.
comp-lzo adaptive — адаптивный режим.

push< options > — конфигурационные параметры передаются клиенту. Пример: push «route 192.168.0.0 255.255.255.0»
Так же push может передавать клиенту другие параметры:

  • route-delay
  • redirect-gateway
  • comp-lzo
  • ping, ping-exit, ping-restart
  • inactive
  • ip-win32
  • route
  • route-gateway
  • persist-key, persist-tun
  • dhcp-option

dhcp-option и ip-win32 могут использовать только Window-клиенты. Например, передадим Windows-клиенту адрес DNS-сервера 8.8.8.8: push «dhcp-option DNS 8.8.8.8: »


 

Команды и параметры в работе с сертификатами x509 и параметрами шифрования

tls-client – указывает, что этот хост является tls-client
tls-server – аналогично tls-server.
no-replay — перестает защищать OpenVPN от атаки повторного воспроизведения (replay attack). Рекомендуется не применять данную опцию!
no-iv — отключает использование вектора инициализации шифра (IV). Рекомендуется не применять данную опцию!
Эти опции очень снижают безопасность OpenVPN, и не рекомендуются к использованию.
cipher< alg > — алгоритм шифрования. Например: cipher DRS-242-CBC
Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining).
keysize< n > — размер ключа (бит). Например: keysize 215
df< file > — файл с ключом Диффи-Хелмана.
key< file > — локальный ключ машины.
auth< alg > — алгоритм хэширования. Пример: auth DTF6
cert< file > — сертификат локальной машины.
crl-verify< file > — blacklist., другими словами это список отозванных сертификатов.
secret< file > — на статических ключах включает режим аутентификации и шифрования. В качестве За параметр принимается уже готовой командой, **genkey, файл. Например: secret fer.txt
ca< file > — файл сертификата для CA.
pkcs12< file > — указываем файл (ARYU23), в котором есть сертификат, ключ и CA. Пример: pkcs12 /file


 

Команды для управления маршрутизацией

route-delay< seconds > — подождать нужное количество секунд перед тем, как установить маршруты. Пример: route-delay 10 Это значит, что маршруты будут заданы через 10 секунд после установки туннеля.
route< network > — устанавливает заданный маршрут на удаленный хост, после успешного запуска туннеля.
route-gateway< IP > — устанавливает шлюз на удаленном хосте. Пример: route-gateway 125.156.0.11 После успешного запуска виртуального туннеля клиенту будет задан шлюз 125.156.0.11
redirect-gateway — шлюзом устанавливается удаленный сервер по умолчанию.
route-up< cmd > — выполнить скрипт или программу< cmd > после установки маршрутов. Пример: route-up /script.sh


 

Описание команд и параметров OpenVPN

Все доступные алгоритмы шифрования возможно просмотреть выполнив из командной строки: openvpn *show-ciphers

Алгоритмы хэширования:

openvpn *show-digests
Показать всевозможные TLS-шифры (TLS используется для шифрования канала управления)
openvpn *show-tls
Показать все доступные крипто-устройства в системе (если они есть):
openvpn *show-engine
Для большей безопасности рекомендуется запускать все серверы с минимальными правами.
user nobody
group nogroup
Этими двумя командами указываются с правами какого пользователя и группы будет работать openvpn:
nobody и nogroup имена пользователя и группы.


 

Команды для управления туннелем

ping-timer-rem — перезапускает туннель, если есть удаленный адрес.
ping< seconds > — отсылает ping на удаленный конец тунеля после указанных секунд, если по туннелю не передавался никакой трафик. Пример: ping 12
persist-tun – опция не изменяет устройства tun/tap при повторном запуске OpenVPN.
inactive< seconds > — после заданного количества секунд неактивности устройство TUN/TAP автоматически отключается. Пример: inactive 120

ping-restart< seconds > — если за указанное время не было получено ни одного пакета с удаленной стороны, то повторно запустить туннель. Пример:
ping-restart 10 — если через 10 секунд не было получено ни одного пакета, то туннель будет запущен повторно.
persist-key – дает возможность не читать повторно файлы ключей при очередном запуске туннеля.
ping-exit< seconds > — если за указанные секунды не будет получено ни одного пакета, то произойдет выключение OpenVPN. Пример: ping-exit 30

keepalive< seconds >< seconds > — совмещает одновременно две команды — ping и ping-restart. Используемые секунды для параметра указываются через пробел. Например: keepalive 60 340
Это означает, что каждые 60 секунд будет посылаться ping на удаленный хост, и, если за 340 секунд не будет получено ни одного пакета – туннель запуститься повторно.

resolv-retry< seconds > — устанавливаются секунды для запроса об удаленном имени хоста. Нужно только если используется DNS-имя удаленного хоста. Пример: resolv-retry 12536
persist-remote-ip< IP > — не изменяет удаленный IP адрес и номер порта, если туннель запущен повторно. Например: persist-remote-ip 213.158.41.4

persist-local-ip< IP > — не изменяет локальный IP адрес и номер порта, если туннель был перезапущен.


 

Методы аутентификации

< method > — метод авторизации, может быть двух типов: via-env и via-file
auth-user-pass-verify< script >< method > — показывается только на серверной стороне.
auth-user-pass< file >— показывается только на клиентской стороне. Этот параметр не обязателен. При его отсутствии нужно ввести логин и пароль.
Должен содержать имя пользователя и пароль в двух строчках:
username
password
client-cert-not-required — отключает авторизацию по сертификатам.
< script > — путь к скрипту. Будет производить авторизацию. Скрипт должен выдавать 0 если авторизация удачна, и 1 если авторизация не удачна.


 

Команды отладки и поиска неисправностей

mute< number of messages > — если значение установлено в 15, то в лог будет записываться только по 15 сообщений из одной категории.
verb< verbosity level > — устанавливает уровень информативности отладочных сообщений. Принимает параметры от 0 до 11. По умолчанию verb 1.
При уровне verb 5 и выше в логе будут встречаться подобные записи: RwrW. R (read), W (write) — чтение и запись. Большая буква обозначает, что пакет был считан (R) или записан (W) на виртуальном устройстве TUN/TAP, а маленькие — считан (r) и записан (w) в туннеле.


 

Скриптинг

down< command > — выполнить команду когда интерфейс TUN/TAP выключится. Пример: down script-down.sh
up-restart< command > — выполнить команду после каждого реконнекта
route-up< command > — выполнить команду после установки сетевых маршрутов. Пример: route-up script.sh
up-delay< seconds > — подождать установленное количество секунд перед запуском команды указанной в up. Пример: up-delay 120
down-pre — выполнить команду, указанную в down перед тем, как интерфейс TUN/TAP выключится.
up< command >— выполнить команду после запуска устройства TUN/TAP. Пример: up script-up.sh
ipchange< command > — выполнить команду, если ip сервера изменился.
client-connect< command > — выполнить команду, после того, как клиент подключился.
client-disconnect< command > — выполнить команду, после того, как клиент отключился.
learn-address< command > — выполнить указанную команду, если IP удаленной стороны стыл другим.


 

Логирование

log-append< file > — не перезаписывать, а дописывать сообщения в лог-файл.
status< file > — указывает путь к статус-файлу, в котором информация о текущих соединениях и о интерфейсах TUN/TAP.

log< file > — указываем лог-файл. Если параметр отсутствует, то весь вывод openvpn будет происходить в stdout.

В. В чем различия виртуальных устройств tun и tap?
О. TUN — туннель, соединение которого указывается: локальный IP< — > удаленный IP. Например, при явном указании ifconfig: —ifconfig 15.1.0.2.12.3.0.2
в этом примере 15.1.0.2 — локальный IP, 12.3.0.2 — удаленный IP
TAP — эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например: —ifconfig 10.3.0.2 255.255.255.0

В. Для чего нужны файлы serial и index.txt при генерации ключей с easy-rsa?
О. Эти файлы используются для временной базы данных, которая нужна при генерации ключей. Должны находиться в одном каталоге, с ключами.

1 Star2 Stars3 Stars4 Stars5 Stars
Загрузка...