Памятка
- Используй в первую очередь руководства разработчиков, даже если они отпугивают своей скромностью оформления. Это сбережет тебе много времени.
- Используй за основу файлы конфигурации по-умолчанию из установленных пакетов, благо они идут с пакетами в комплекте. Даже, если придется потратить время на осознание их назначений — «Лучше пару часов потерять, потом за пять минут долететь».
Установка OpenVPN на FreeBSD
Прежде чем приступить к установке, убедитесь, что ваша система находится в актуальном состоянии:
freebsd-update fetch freebsd-update install
Ставим пакет OpenVPN
[root]# pkg update [root]# pkg install openvpn
Настройка сервера
Для начала создадим директорию где будут храниться файлы конфигурации и ключи нашего будущего сервера.
[root]# mkdir /usr/local/etc/openvpn
Копируем туда пример файла конфигурации сервера server.conf:
[root]# cp /usr/local/share/examples/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn/server.conf
и каталог с файлами Easy-RSA:
[root]# cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/easy-rsa
Вот теперь начинается самое интересное. Для генерации ключей переходим в только что созданный каталог:
[root]# cd /usr/local/etc/openvpn/easy-rsa
его содержание на сегодняшний день такое:
[root]# ls easyrsa.real openssl-1.0.cnf.example vars.example openssl-1.0.cnf vars x509-types
Правим конфигурационный файл Easy-RSA
Файл конфигурации называется vars. Расскоментировал и внес изменения в поля:
set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MO" set_var EASYRSA_REQ_CITY "Moscow" set_var EASYRSA_REQ_ORG "Ili, AOO" set_var EASYRSA_REQ_EMAIL "admin@ili.ru" set_var EASYRSA_REQ_OU "IT" set_var EASYRSA_KEY_SIZE 1024
Генерация ключей
Ключи генерируются одним единственным shell-скриптом easyrsa.real. Easy-RSA опираясь на openssl.cnf, лежащий в нем по-умолчанию, создает сертификаты и ключи.
Примеры команд для создания ключей OpenVPN
1. Создаем инфраструктуру публичного ключа (Public Key Infrastructure)
# ./easyrsa.real init-pki
Этой команда выполняется один раз, создавая структуру каталогов для будущих ключей /usr/local/etc/openvpn/easy-rsa/pki
2. Создание Certificate Authority
# ./easyrsa.real build-ca nopass
Опция “nopass” указывает что пароль при запуске не требуется, но помните что ключи в таком случае должны быть тщательно защищены.
3. Создание сертификата сервера (Server Certificate)
# ./easyrsa.real build-server-full openvpn-server nopass
посмотреть созданный ключ можно командой:
# ./easyrsa.real show-cert openvpn-server
4. Cоздать CRL для отзывов сертификатов:
vvv@vpn2:/usr/local/etc/openvpn/easy-rsa# ./easyrsa.real gen-crl Note: using Easy-RSA configuration from: ./vars Using configuration from /usr/local/etc/openvpn/easy-rsa/openssl-1.0.cnf An updated CRL has been created. CRL file: /usr/local/etc/openvpn/easy-rsa/pki/crl.pem vvv@vpn2:/usr/local/etc/openvpn/easy-rsa#
5. Создание сертификатов клиентов (Client Certificate)
# ./easyrsa.real build-client-full client_name nopass
5. Генерация Diffie Hellman Parameters
# ./easyrsa.real gen-dh
С ключами всё.
В директории PKI появились ключи, таблица наглядно показывает какие и кому нужны:
Файлы создаваемые easyrsa
Имя файла |
Кто пользуется |
Назначение | Секретность |
ca.crt | сервер + все клиенты | корневой CA сертификат | НЕТ |
ca.key | ключ только для машины, которая подписывает сертификат сервера(если самоподписанный=>сервер и есть) | корневой CA ключ | ДА |
dh{n}.pem | только сервером | Diffie Hellman файл | НЕТ |
server.crt | только на сервере | Сертификат Сервера | ДА |
server.key | только на сервере | Ключ Сервера | ДА |
client1.crt | Клиенту1 только | Сертификат Клиента1 | НЕТ |
client1.key | Клиенту1 только | ключ Клиента1 | ДА |
client2.crt | Клиенту2 только | Клиента1 Сертификат | НЕТ |
client2.key | Клиенту2 только | Клиента1 Ключ | ДА |
client3.crt | Клиенту3 только | Клиента1 Сертификат | НЕТ |
client3.key | Клиенту3 только | Клиента1 Ключ | YES |
Настройка openvpn.conf
Далее нужно настроить конфигурационный файл OpenVPN. Это несложно, разобравшись в комментариях и назначении ключей. Файл примера уже будет лежать в /usr/local/etc/openvpn/
ОперВПН из своего конфига openvpn.conf берет путь к созданным файлам(ключам) — ca.crt, server.crt, server.key и dh.pem и crl.pem. Мой конфиг выглядит так:
################################################# # Sample OpenVPN 2.0 config file for # # multi-client server. # # # # This file is for the server side # # of a many-clients <-> one-server # # OpenVPN configuration. # # # # OpenVPN also supports # # single-machine <-> single-machine # # configurations (See the Examples page # # on the web site for more info). # # # # This config should work on Windows # # or Linux/BSD systems. Remember on # # Windows to quote pathnames and use # # double backslashes, e.g.: # # "C:\\Program Files\\OpenVPN\\config\\foo.key" # # # # Comments are preceded with '#' or ';' # ################################################# # Which local IP address should OpenVPN # listen on? (optional) local 192.168.1.17 # Which TCP/UDP port should OpenVPN listen on? # If you want to run multiple OpenVPN instances # on the same machine, use a different port # number for each one. You will need to # open up this port on your firewall. port 1195 # TCP or UDP server? ;proto tcp proto udp # "dev tun" will create a routed IP tunnel, # "dev tap" will create an ethernet tunnel. # Use "dev tap0" if you are ethernet bridging # and have precreated a tap0 virtual interface # and bridged it with your ethernet interface. # If you want to control access policies # over the VPN, you must create firewall # rules for the the TUN/TAP interface. # On non-Windows systems, you can give # an explicit unit number, such as tun0. # On Windows, use "dev-node" for this. # On most systems, the VPN will not function # unless you partially or fully disable # the firewall for the TUN/TAP interface. ;dev tap dev tun0 # Windows needs the TAP-Win32 adapter name # from the Network Connections panel if you # have more than one. On XP SP2 or higher, # you may need to selectively disable the # Windows firewall for the TAP adapter. # Non-Windows systems usually don't need this. ;dev-node MyTap # SSL/TLS root certificate (ca), certificate # (cert), and private key (key). Each client # and the server must have their own cert and # key file. The server and all clients will # use the same ca file. # # See the "easy-rsa" directory for a series # of scripts for generating RSA certificates # and private keys. Remember to use # a unique Common Name for the server # and each of the client certificates. # # Any X509 key management system can be used. # OpenVPN can also use a PKCS #12 formatted key file # (see "pkcs12" directive in man page). ca /usr/local/etc/openvpn/easy-rsa/pki/ca.crt cert /usr/local/etc/openvpn/easy-rsa/pki/issued/openvpn-server.crt key /usr/local/etc/openvpn/easy-rsa/pki/private/openvpn-server.key # This file should be kept secret # Diffie hellman parameters. # Generate your own with: # openssl dhparam -out dh2048.pem 2048 dh /usr/local/etc/openvpn/easy-rsa/pki/dh.pem #remote-cert-tls client # Network topology # Should be subnet (addressing via IP) # unless Windows clients v2.0.9 and lower have to # be supported (then net30, i.e. a /30 per client) # Defaults to net30 (not recommended) topology subnet # Configure server mode and supply a VPN subnet # for OpenVPN to draw client addresses from. # The server will take 10.8.0.1 for itself, # the rest will be made available to clients. # Each client will be able to reach the server # on 10.8.0.1. Comment this line out if you are # ethernet bridging. See the man page for more info. server 10.50.50.0 255.255.255.0 # Maintain a record of client <-> virtual IP address # associations in this file. If OpenVPN goes down or # is restarted, reconnecting clients can be assigned # the same virtual IP address from the pool that was # previously assigned. ifconfig-pool-persist ipp.txt # Configure server mode for ethernet bridging. # You must first use your OS's bridging capability # to bridge the TAP interface with the ethernet # NIC interface. Then you must manually set the # IP/netmask on the bridge interface, here we # assume 10.8.0.4/255.255.255.0. Finally we # must set aside an IP range in this subnet # (start=10.8.0.50 end=10.8.0.100) to allocate # to connecting clients. Leave this line commented # out unless you are ethernet bridging. ;server-bridge 192.168.1.17 255.255.255.0 192.168.1.160 192.168.1.199 # Configure server mode for ethernet bridging # using a DHCP-proxy, where clients talk # to the OpenVPN server-side DHCP server # to receive their IP address allocation # and DNS server addresses. You must first use # your OS's bridging capability to bridge the TAP # interface with the ethernet NIC interface. # Note: this mode only works on clients (such as # Windows), where the client-side TAP adapter is # bound to a DHCP client. ;server-bridge # Push routes to the client to allow it # to reach other private subnets behind # the server. Remember that these # private subnets will also need # to know to route the OpenVPN client # address pool (10.8.0.0/255.255.255.0) # back to the OpenVPN server. push "route 10.50.50.0 255.255.255.0" push "route 10.50.1.0 255.255.255.0" route 192.168.1.0 255.255.255.0 # To assign specific IP addresses to specific # clients or if a connecting client has a private # subnet behind it that should also have VPN access, # use the subdirectory "ccd" for client-specific # configuration files (see man page for more info). # EXAMPLE: Suppose the client # having the certificate common name "Thelonious" # also has a small subnet behind his connecting # machine, such as 192.168.40.128/255.255.255.248. # First, uncomment out these lines: ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 # Then create a file ccd/Thelonious with this line: # iroute 192.168.40.128 255.255.255.248 # This will allow Thelonious' private subnet to # access the VPN. This example will only work # if you are routing, not bridging, i.e. you are # using "dev tun" and "server" directives. # EXAMPLE: Suppose you want to give # Thelonious a fixed VPN IP address of 10.9.0.1. # First uncomment out these lines: client-config-dir ccd #servers subnet route 10.50.1.0 255.255.255.252 # Then add this line to ccd/Thelonious: # ifconfig-push 10.9.0.1 10.9.0.2 # Suppose that you want to enable different # firewall access policies for different groups # of clients. There are two methods: # (1) Run multiple OpenVPN daemons, one for each # group, and firewall the TUN/TAP interface # for each group/daemon appropriately. # (2) (Advanced) Create a script to dynamically # modify the firewall in response to access # from different clients. See man # page for more info on learn-address script. ;learn-address ./script # If enabled, this directive will configure # all clients to redirect their default # network gateway through the VPN, causing # all IP traffic such as web browsing and # and DNS lookups to go through the VPN # (The OpenVPN server machine may need to NAT # or bridge the TUN/TAP interface to the internet # in order for this to work properly). ;push "redirect-gateway def1 bypass-dhcp" # Certain Windows-specific network settings # can be pushed to clients, such as DNS # or WINS server addresses. CAVEAT: # http://openvpn.net/faq.html#dhcpcaveats # The addresses below refer to the public # DNS servers provided by opendns.com. ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220" # Uncomment this directive to allow different # clients to be able to "see" each other. # By default, clients will only see the server. # To force clients to only see the server, you # will also need to appropriately firewall the # server's TUN/TAP interface. client-to-client # Uncomment this directive if multiple clients # might connect with the same certificate/key # files or common names. This is recommended # only for testing purposes. For production use, # each client should have its own certificate/key # pair. # # IF YOU HAVE NOT GENERATED INDIVIDUAL # CERTIFICATE/KEY PAIRS FOR EACH CLIENT, # EACH HAVING ITS OWN UNIQUE "COMMON NAME", # UNCOMMENT THIS LINE OUT. ;duplicate-cn # The keepalive directive causes ping-like # messages to be sent back and forth over # the link so that each side knows when # the other side has gone down. # Ping every 10 seconds, assume that remote # peer is down if no ping received during # a 120 second time period. keepalive 10 120 # For extra security beyond that provided # by SSL/TLS, create an "HMAC firewall" # to help block DoS attacks and UDP port flooding. # # Generate with: # openvpn --genkey --secret ta.key # # The server and each client must have # a copy of this key. # The second parameter should be '0' # on the server and '1' on the clients. #tls-auth ta.key 0 # This file is secret # Select a cryptographic cipher. # This config item must be copied to # the client config file as well. # Note that v2.4 client/server will automatically # negotiate AES-256-GCM in TLS mode. # See also the ncp-cipher option in the manpage cipher AES-256-CBC # Enable compression on the VPN link and push the # option to the client (v2.4+ only, for earlier # versions see below) ;compress lz4-v2 ;push "compress lz4-v2" # For compression compatible with older clients use comp-lzo # If you enable it here, you must also # enable it in the client config file. comp-lzo # The maximum number of concurrently connected # clients we want to allow. ;max-clients 100 # It's a good idea to reduce the OpenVPN # daemon's privileges after initialization. # # You can uncomment this out on # non-Windows systems. user nobody group nobody # The persist options will try to avoid # accessing certain resources on restart # that may no longer be accessible because # of the privilege downgrade. persist-key persist-tun # Output a short status file showing # current connections, truncated # and rewritten every minute. status openvpn-status.log # By default, log messages will go to the syslog (or # on Windows, if running as a service, they will go to # the "\Program Files\OpenVPN\log" directory). # Use log or log-append to override this default. # "log" will truncate the log file on OpenVPN startup, # while "log-append" will append to it. Use one # or the other (but not both). log openvpn.log ;log-append openvpn.log # Set the appropriate level of log # file verbosity. # # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose verb 6 # Silence repeating messages. At most 20 # sequential messages of the same message # category will be output to the log. ;mute 20 # Notify the client that when the server restarts so it # can automatically reconnect. explicit-exit-notify 1
Файл конфигурации клиента создается отталкиваясь от конфигурации сервера. Для пользователей windows он имеет расширение .ovpn
Пример моего:
client proto udp dev tun0 ca ca.crt cert crmxp.crt key crmxp.key remote 192.168.1.17 1195 cipher AES-256-CBC #remote-cert-tls client verb 6 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry infinite nobind
В папке OpenVPN также лежит шаблон конфигурационного файла для клиентов на линукс.
Запуск службы OpenVPN
service openvpn start
Шпаргалка OpenVPN
Ключи конфигурационных файлов OpenVPN
remote < host > — определяет удаленный конец туннеля. Могут использоваться записи IP и DNS.
local < host > — определяет локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.
dev < device > — определяет какой использовать тип устройства tun или tap. Например:
dev tun
или
dev tap
При одном из таких указаний будет использован свободный интерфейс tun или tap. Так же можно явно указывать номер виртуального интрефейса, например tun0.
port < port number > — указывает на каком порту будет работать OpenVPN (локально и удаленно).
proto < proto > — какой протокол будет использоваться. Возможные значения: udp, tcp, tcp-client, tcp-server. С первыми двумя все ясно, а на последних двух остановимся чуть подробнее:
tcp-client — сам пытается установить соединение
tcp-server — только ждет подключений
Примечательно, что с использованием протокола udp VPN будет работать чуть быстрее, чем tcp. Но в плане стабильности работы лучше выбирать tcp (как показывает практика, VPN-соединение более устойчиво)
remote-random — если указана данная опция и в random перечисленно несколько удаленных хостов, то OpenVPN в случайном порядке будет к ним подключаться. Применяется для балансировки нагрузки.
float — позволяет удаленному хосту изменять IP во время работы туннеля. Соединение при этом не разрывается.
ipchange < cmd > — выполняет скрипт или команду указанную в < cmd >, если IP сменился. Пример:
ipchange script-ip.sh
connect-retry < seconds > — пробует переподключиться через указанное время в секундах, если соединение было разорвано.
connect-retry-max < n > — максимальное количество повторов если соединение было разорвано
resolv-retry < seconds > — если OpenVPN не удалось узнать имя удаленного хоста по DNS, то через указанное количество секунд попытаться переподключиться.
lport < port > — указывает на локальный порт для использования OpenVPN
rport < port > — аналогично для удаленного порта. Пример:
rport 8000 — OpenVPN будет пытаться подключится к удаленному порту 8000
nobind — использовать динамический порт для подключения (только для клиента)
shaper < bytes > — указывает скорость передачи данных в байтах для исходящего трафика (только для клиента)
tun-mtu < mtu size > — устанавливает максимальный размер MTU. По умолчанию tun-mtu равен 1500. Использование:
tun-mtu 1200
dev-node < interface name > — устанавливает имя виртуального интерфейса. Например:
dev-node openvpn1
ifconfig — устанавливает локальный IP и маску подсети для туннельного интерфейса. Например:
ifconfig 10.3.0.1 255.255.255.0
server < network > < mask > — автоматически присваивает адреса всем клиентам (DHCP) в указанном диапазоне с маской сети. Данная опция заменяет ifconfig и может работаеть только с TLS-клиентами в режиме TUN, соответственно использование сертификатов обязательно. Например:
server 10.3.0.0 255.255.255.0
Подключившиеся клиенты получат адреса в диапазоне между 10.3.0.1 и 10.3.0.254.
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.
mode server — переключает OpenVPN в режим сервера (начиная с 2-й версии)
mode p2p — данная опция идет по умолчанию.
Опции в режиме сервера
push < options > — передача клиенту конфигурационных параметров. Пример:
push «route 192.168.0.0 255.255.255.0»
Аналогично с помощью push клиенту могут передаваться следующие параметры:
route
route-gateway
route-delay
redirect-gateway
inactive
ping, ping-exit, ping-restart
persist-key, persist-tun
comp-lzo
dhcp-option
ip-win32
Последние две опции применимы только для Window-клиентов. Например передадим Windows-клиенту адрес DNS-сервера 11.11.11.11:
push «dhcp-option DNS 11.11.11.11»
comp-lzo — параметр сжатия трафика, идущего через виртуальный туннель. Может принимать значения yes, no, adaptive. Последнее используется по умолчанию.
Например:
comp-lzo yes — принудительно включить сжатие
comp-lzo no — принудительно отключить сжатие
comp-lzo adaptive — адаптивный режим.
Команды и параметры при работе с сертификатами x509 и параметрами шифрования
cipher < alg > — указываем алгоритм шифрования. Например:
cipher AES-256-CBC
Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining).
keysize < n > — размер ключа в битах. Например:
keysize 128
auth < alg > — алгоритм хэширования. Пример:
auth SHA1
df < file > — файл с ключем Диффи-Хелмана
ca < file > — файл сертификата для CA
cert < file > — сертификат локальной машины
key < file > — локальный ключ машины
tls-server — явно указывает, что данный хост является tls-server
tls-client — соответственно tls-client
pkcs12 < file > — указываем файл (PKCS12), который содержит в себе сертификат, ключ и CA в одном файле. Пример:
pkcs12 /file
crl-verify < file > — список отозванных сертификатов, т.е. blacklist.
no-replay — отключает защиту OpenVPN от атаки повторного воспроизведения (replay attack). Крайне не рекомендуется отключать!
no-iv — отключает использование вектора инициализации шифра (IV). Крайне не рекомендуется отключать!
Последние две опции очень сильно снижают безопасность OpenVPN, крайне не рекомендуется их использование.
secret < file > — включает режим шифрования и аутентификации на статических ключах. В качестве параметра использует заранее сгенерированный, командой —genkey, файл. Например:
secret key.txt
Все доступные алгоритмы шифрования можно просмотреть выполнив из командной строки:
openvpn —show-ciphers
Алгоритмы хэширования:
openvpn —show-digests
Показать все доступные TLS-шифры (TLS используется только для шифрования канала управления)
openvpn —show-tls
Показать все доступные крипто-устройства в системе (если такие имеются):
openvpn —show-engines
Для улучшения безопасности рекомендовано запускать все сервисы с минимальными правами. Следующими двумя командами мы укажем с правами какого пользователя и группы будет работать openvpn:
user nobody
group nogroup
Где, соответственно, nobody и nogroup имена пользователя и группы.
Команды для управления маршрутизацией
Обозначение: VPN-хост — удаленная сторона (удаленный хост)
route < network > — устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля. Пример:
route 10.0.10.0 255.255.255.252
route-gateway < IP > — устанавливает шлюз на VPN-хосте. Пример:
route-gateway 192.168.0.22
После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22
route-delay < seconds > — указывает подождать n-секунд перед установкой маршрутов. Пример:
route-delay 5
Т.е. через 5 секунд после установки туннеля будут заданы маршруты.
route-up < cmd > — выполнить скрипт или программу < cmd > после установки маршрутов. Пример:
route-up /script.sh
redirect-gateway — установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.
Команды для управления туннелем
ping < seconds > — указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, если по туннелю не передавался никакой трафик. Пример:
ping 10
ping-restart < seconds > — если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель. Пример:
ping-restart 60 — если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.
ping-timer-rem — позволяет перезапускать туннель, только когда указан удаленный адрес.
persist-tun — данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.
persist-key — указывает не перечитавать файлы ключей при перезапуске туннеля.
resolv-retry < seconds > — устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста. Пример:
resolv-retry 86400
inactive < seconds > — после n-секунд неактивности устройство TUN/TAP автоматически отключется. Пример:
inactive 120
ping-exit < seconds > — если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN. Пример:
ping-exit 120
keepalive < seconds > < seconds > — является совмещением сразу двух команд — ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел. Пример:
keepalive 10 180
Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета — то перезапускать туннель.
persist-local-ip < IP > — оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен.
persist-remote-ip < IP > — оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен.
persist-remote-ip 192.168.50.1
Методы аутентификации
auth-user-pass-verify < script > < method > — указывается только на серверной стороне.
< script > — путь к скрипту, который будет производить авторизацию. Скрипт должен возвращать 0 если авторизация успешна, и соответственно, 1 если авторизация не успешна.
< method > — метод авторизации, может быть двух типов: via-env и via-file
auth-user-pass < file >— указывается на клиентской стороне. Параметр не обязателен, если он отсутствует то будет предложено ввести пару логин/пароль.
должен содержать имя пользователя и пароль в двух строчках:
username
password
client-cert-not-required — отключает авторизацию по сертификатам.
Работа с прокси
OpenVPN без проблем может работать через http и socks прокси.
http-proxy < server port [auth] > — указываем адрес и порт прокси-сервера.
http-proxy 192.168.0.12 8080
Если требуется авторизация на прокси-сервере:
http-proxy < server port authfile > — где authfile — файл содержащий две строки (имя пользователя и пароль) или stdin (будет запрошено имя пользователя и пароль).
Так же после authfile требуется указать метод авторизации. Можно оставить auto для автоматического выбора метода авторизации или указать явно через auth-method.
auth-method может быть трех видов «none», «basic» или «ntlm».
Используется в OpenVPN начиная с версии 2.1.
http-proxy-retry — переподключаться, если соединение было разорвано.
http-proxy-timeout < seconds > — считать соеденение с прокси-сервером разорванным после n-секунд неактивности. Например:
http-proxy-timeout 5
socks-proxy < server port > — указываем сокс-прокси сервер. Пример:
socks-proxy 192.168.0.12 8080
socks-proxy-retry — переподключаться, если соединение было разорвано.
auto-proxy — автоматически определять прокси-сервер. Требуется версия OpenVPN 2.1 и выше.
Скриптинг
up < command >— выполнить команду после запуска устройства TUN/TAP. Пример:
up script-up.sh
up-delay < seconds > — подождать n-секунд перед запуском команды указанной в up. Пример:
up-delay 5
down < command > — выполнить команду когда интерфейс TUN/TAP выключится. Пример:
down script-down.sh
down-pre — выполнить команду, указанную в down перед выключением интерфейса TUN/TAP
up-restart < command > — выполнить команду после каждого реконнекта
route-up < command > — выполнить команду после установки сетевых маршрутов. Пример:
route-up script.sh
learn-address < command > — выполнить указанную команду, если ip удаленной стороны изменился.
ipchange < command > — выполнить команду, если ip сервера изменился.
client-connect < command > — выполнить команду, когда клиент подключился.
client-disconnect < command > — выполнить команду, когда клиент отключился.
Команды отладки и поиска неисправностей
verb < verbosity level > — устанавливает уровень информативности отладочных сообщений. Может принимать параметр от 0 до 11. По умолчанию verb равен 1.
При уровне verb 5 и выше в логе будут встречаться подобные записи: RwrW. R (read), W (write) — соответственно чтение и запись. Большая буква обозначает, что пакет был считан (R) или записан (W) на виртуальном устройстве TUN/TAP, а маленькие — считан (r) и записан (w) в туннеле.
mute < number of messages > — если значение установлено в 10, то в лог будет записываться только по 10 сообщений из одной категории.
Логирование
log < file > — указываем лог-файл. Если данный параметр не указан, то весь вывод openvpn будет производиться в stdout.
log-append < file > — дописывать сообщения в лог-файл, а не перезаписывать.
status < file > — указывает путь к статус-файлу, в котором содержится информация о текущих соединениях и информация о интерфейсах TUN/TAP.
Разные вопросы
В. Чем отличаются виртуальные устройства tun и tap?
О. TUN — туннель, соединение по которому указывается по типу: локальный IP < — > удаленный IP. Например, при явном указании ifconfig:
—ifconfig 10.3.0.2 10.3.0.1
в этом примере 10.3.0.2 — локальный IP, 10.3.0.1 — удаленный IP
TAP — эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например:
—ifconfig 10.3.0.2 255.255.255.0
В. Для чего нужны файлы serial и index.txt при генерации ключей с easy-rsa?
О. Эти два файла используются в качестве временной базы данных, используемой при генерации ключей. Должны находиться в том каталоге, где и ключи.
________________
Источник: https://bozza.ru/art-278.html
http://www.tuxnotes.ru/articles.php?a_id=26
http://sysadm.pp.ua/linux/shifrovanie/openvpn-easy-rsa.html
https://openvpn.net/index.php/open-source/documentation/howto.html#pki