OpenVPN — различия между версиями
Alexandre (обсуждение | вклад) (Новая страница: «'''OpenVPN''' — свободная реализация технологии виртуальной частной сети (VPN) с открытым исхо…») |
Alexandre (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 78: | Строка 78: | ||
<center> | <center> | ||
− | = | + | = Работа с сертификатами x509 и параметры шифрования = |
</center> | </center> | ||
− | cipher < alg > - указываем алгоритм шифрования. Например: cipher AES-256-CBC | + | # <font color="red" >'''cipher < alg >'''</font> - указываем алгоритм шифрования. Например: cipher AES-256-CBC |
Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining). | Рекомендуется использование шифров в режиме CBC (Cipher Block Chaining). | ||
+ | # <font color="red" >'''keysize < n >'''</font> - размер ключа в битах. Например: keysize 128 | ||
+ | # <font color="red" >'''auth < alg >'''</font> - алгоритм хэширования. Пример: auth SHA1 | ||
+ | # <font color="red" >'''df < file >'''</font> - файл с ключом Диффи-Хелмана | ||
+ | # <font color="red" >'''ca < file >'''</font> - файл сертификата для CA | ||
+ | # <font color="red" >'''cert < file >'''</font> - сертификат локальной машины | ||
+ | # <font color="red" >'''key < file >'''</font> - локальный ключ машины | ||
+ | # <font color="red" >'''tls-server'''</font> - явно указывает, что данный хост является tls-server | ||
+ | # <font color="red" >'''tls-client'''</font> - соответственно tls-client | ||
+ | # <font color="red" >'''pkcs12 < file >'''</font> - указываем файл (PKCS12), который содержит в себе сертификат, ключ и CA в одном файле. Пример: pkcs12 /file | ||
+ | # <font color="red" >'''crl-verify < file >'''</font> - список отозванных сертификатов, т.е. blacklist. | ||
+ | # <font color="red" >'''no-replay'''</font> - отключает защиту OpenVPN от атаки повторного воспроизведения (replay attack). Крайне не рекомендуется отключать!!! | ||
+ | # <font color="red" >'''no-iv'''</font> - отключает использование вектора инициализации шифра (IV). Крайне не рекомендуется отключать! | ||
+ | # <font color="red" >'''secret < file >'''</font> - включает режим шифрования и аутентификации на статических ключах. В качестве параметра использует заранее сгенерированный, командой --genkey, файл. Например: secret key.txt<br><br> | ||
− | + | '''Опции 11 и 12 очень сильно снижают безопасность OpenVPN, крайне не рекомендуется их использование.'''<br><br> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Все доступные алгоритмы шифрования можно просмотреть выполнив из командной строки:<br> | |
− | + | <font color="green" >openvpn --show-ciphers</font><br> | |
− | |||
− | + | Алгоритмы хэширования:<br> | |
+ | <font color="green" >openvpn --show-digests</font><br> | ||
− | + | Показать все доступные TLS-шифры (TLS используется только для шифрования канала управления)<br> | |
− | openvpn --show- | + | <font color="green" >openvpn --show-tls</font><br> |
− | + | Показать все доступные крипто-устройства в системе (если такие имеются):<br> | |
− | openvpn --show- | + | <font color="green" >openvpn --show-engines</font><br> |
− | + | Для улучшения безопасности рекомендовано запускать все сервисы с минимальными правами. Следующими двумя командами мы укажем с правами какого пользователя и группы будет работать openvpn:<br> | |
− | + | <font color="green" >user nobody</font><br> | |
+ | <font color="green" >group nogroup</font><br> | ||
+ | Где, соответственно, nobody и nogroup имена пользователя и группы. | ||
+ | |||
+ | <center> | ||
+ | = Команды для управления маршрутизацией = | ||
+ | </center> | ||
+ | |||
+ | '''Обозначение: VPN-хост - удаленная сторона (удаленный хост)''' | ||
− | + | # <font color="red" >'''route < network >'''</font> - устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля.<ref>Например: route 10.0.10.0 255.255.255.252</ref> | |
− | + | # <font color="red" >'''route-gateway < IP >'''</font> - устанавливает шлюз на VPN-хосте.<ref>Например: <font color="green" >route-gateway 192.168.0.22</font> После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22</ref> | |
+ | # <font color="red" >'''route-delay < seconds >'''</font> - указывает подождать n-секунд перед установкой маршрутов.<ref>Например: <font color="green" >route-delay 5</font> Т.е. через 5 секунд после установки туннеля будут заданы маршруты.</ref> | ||
+ | # <font color="red" >'''route-up < cmd >'''</font> - выполнить скрипт или программу < cmd > после установки маршрутов.<ref>Пример: route-up /script.sh</ref> | ||
+ | # <font color="red" >'''redirect-gateway'''</font> - установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер. | ||
− | + | <center> | |
− | user | + | = Команды для управления туннелем = |
− | + | </center> | |
− | + | ||
+ | # <font color="red" >'''ping < seconds >'''</font> - указывает отсылать ping на удаленный конец туннеля после указанных n-секунд, если по туннелю не передавался никакой трафик.<ref>Например: ping 10</ref> | ||
+ | # <font color="red" >'''ping-restart < seconds >'''</font> - если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель.<ref>Например: <font color="green" >ping-restart 60</font> - если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.</ref> | ||
+ | # <font color="red" >'''ping-timer-rem'''</font> - позволяет перезапускать туннель, только когда указан удаленный адрес. | ||
+ | # <font color="red" >'''persist-tun'''</font> - данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN. | ||
+ | # <font color="red" >'''persist-key'''</font> - указывает не перечитывать файлы ключей при перезапуске туннеля. | ||
+ | # <font color="red" >'''resolv-retry < seconds >'''</font> - устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста.<ref>Например: resolv-retry 86400</ref> | ||
+ | # <font color="red" >'''inactive < seconds >'''</font> - после n-секунд неактивности устройство TUN/TAP автоматически отключится.<ref>Например: inactive 120</ref> | ||
+ | # <font color="red" >'''ping-exit < seconds >'''</font> - если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN.<ref>Например: ping-exit 120</ref> | ||
+ | # <font color="red" >'''keepalive < seconds > < seconds >'''</font> - является совмещением сразу двух команд - ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел.<ref>Например: <font color="green" >keepalive 10 180</font> Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета - то перезапускать туннель.</ref> | ||
+ | # <font color="red" >'''persist-local-ip < IP >'''</font> - оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен. | ||
+ | # <font color="red" >'''persist-remote-ip < IP >'''</font> - оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен.<ref>Например: persist-remote-ip 192.168.50.1</ref> | ||
+ | |||
+ | <center> | ||
+ | = Методы аутентификации = | ||
+ | </center> | ||
+ | |||
+ | # <font color="red" >'''auth-user-pass-verify < script > < method >'''</font> - указывается только на серверной стороне.<ref> | ||
+ | <font color="green" >< script ></font> - путь к скрипту, который будет производить авторизацию. Скрипт должен возвращать 0 если авторизация успешна, и соответственно, 1 если авторизация не успешна.<br> | ||
+ | <font color="green" >< method ></font> - метод авторизации, может быть двух типов: via-env и via-file</ref> | ||
+ | # <font color="red" >'''auth-user-pass < file >'''</font> - указывается на клиентской стороне. Параметр не обязателен, если он отсутствует то будет предложено ввести пару логин/пароль.<ref> | ||
+ | Должен содержать имя пользователя и пароль в двух строчках:<br> | ||
+ | <font color="green" >username</font><br> | ||
+ | <font color="green" >password</font></ref> | ||
+ | # <font color="red" >'''client-cert-not-required'''</font> - отключает авторизацию по сертификатам. | ||
+ | |||
+ | <center> | ||
+ | = Скриптинг = | ||
+ | </center> | ||
+ | |||
+ | # <font color="red" >'''up < command >'''</font> - выполнить команду после запуска устройства TUN/TAP.<ref>Например: up script-up.sh</ref> | ||
+ | # <font color="red" >'''up-delay < seconds >'''</font> - подождать n-секунд перед запуском команды указанной в up.<ref>Например: up-delay 5</ref> | ||
+ | # <font color="red" >'''down < command >'''</font> - выполнить команду когда интерфейс TUN/TAP выключится.<ref>Например: down script-down.sh</ref> | ||
+ | # <font color="red" >'''down-pre'''</font> - выполнить команду, указанную в down перед выключением интерфейса TUN/TAP | ||
+ | # <font color="red" >'''up-restart < command >'''</font> - выполнить команду после каждого реконнекта | ||
+ | # <font color="red" >'''route-up < command >'''</font> - выполнить команду после установки сетевых маршрутов.<ref>Например: route-up script.sh</ref> | ||
+ | # <font color="red" >'''learn-address < command >'''</font> - выполнить указанную команду, если ip удаленной стороны изменился. | ||
+ | # <font color="red" >'''ipchange < command >'''</font> - выполнить команду, если ip сервера изменился. | ||
+ | # <font color="red" >'''client-connect < command >'''</font> - выполнить команду, когда клиент подключился. | ||
+ | # <font color="red" >'''client-disconnect < command >'''</font> - выполнить команду, когда клиент отключился. | ||
+ | |||
+ | <center> | ||
+ | = Логирование = | ||
+ | </center> | ||
+ | |||
+ | # <font color="red" >'''log < file >'''</font> - указываем лог-файл. Если данный параметр не указан, то весь вывод openvpn будет производиться в stdout. | ||
+ | # <font color="red" >'''log-append < file >'''</font> - дописывать сообщения в лог-файл, а не перезаписывать. | ||
+ | # <font color="red" >'''status < file >'''</font> - указывает путь к статус-файлу, в котором содержится информация о текущих соединениях и информация о интерфейсах TUN/TAP. | ||
+ | |||
+ | <center> | ||
+ | = Настройка фаервола = | ||
+ | </center> | ||
+ | Добавляем в /etc/rc.local: | ||
+ | echo 1 > /proc/sys/net/ipv4/ip_forward | ||
+ | iptables -A INPUT -i tun+ -j ACCEPT | ||
+ | iptables -A FORWARD -i tun+ -j ACCEPT | ||
+ | iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT | ||
+ | iptables -t nat -F POSTROUTING | ||
+ | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||
+ | <center> | ||
+ | = Вопрос - ответ = | ||
+ | </center> | ||
+ | '''Вопрос: Чем отличаются виртуальные устройства tun и tap?'''<br> | ||
+ | '''Ответ:'''<br> | ||
+ | '''<font color="red" >TUN</font>''' - туннель, соединение по которому указывается по типу: локальный IP < --- > удаленный IP.<br> | ||
+ | <font color="green" >Например, при явном указании ifconfig: --ifconfig 10.3.0.2 10.3.0.1</font> В этом примере 10.3.0.2 - локальный IP, 10.3.0.1 - удаленный IP<br> | ||
+ | '''<font color="red" >TAP</font>''' - эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети.<br> | ||
+ | <font color="green" >Например: --ifconfig 10.3.0.2 255.255.255.0</font><br><br> | ||
+ | |||
+ | '''Вопрос: Для чего нужны файлы serial и index.txt при генерации ключей с easy-rsa?'''<br> | ||
+ | '''Ответ:''' Эти два файла используются в качестве временной базы данных, используемой при генерации ключей. Должны находиться в том каталоге, где и ключи. | ||
== Примечания == | == Примечания == | ||
{{примечания}} | {{примечания}} | ||
+ | |||
+ | [[Категория:Инструкции]] | ||
+ | [[Категория:Справка]] |
Текущая версия на 10:06, 22 июня 2018
OpenVPN — свободная реализация технологии виртуальной частной сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT и сетевым экраном, без необходимости изменения их настроек. OpenVPN была создана Джеймсом Йонаном (James Yonan) и распространяется под лицензией GNU GPL[1].
В данной статье будут наиболее подробно описаны основные команды используемые в OpenVPN.
Содержание
- 1 Пояснение файла openvpn.conf
- 2 Описание команд и параметров OpenVPN
- 3 Опции в режиме сервера
- 4 Работа с сертификатами x509 и параметры шифрования
- 5 Команды для управления маршрутизацией
- 6 Команды для управления туннелем
- 7 Методы аутентификации
- 8 Скриптинг
- 9 Логирование
- 10 Настройка фаервола
- 11 Вопрос - ответ
Пояснение файла openvpn.conf
- mode server - указывает программе работать в режиме сервера
- tls-server - активирует работу Transport Layer Security (криптографический протокол) сервера
- proto tcp-server - выбираем протокол TCP (если необходим UDP, тогда: proto udp)
- dev tap - используемый тип интерфейса - L2 туннель (для L3-туннеля: dev tun)
- port 1200 - указываем порт, по которому будет работать OpenVPN
- daemon - программа будет работать в режиме демона, если нет в этом необходимости - просто раскомментируйте строку
- tls-auth /etc/openvpn/keys/ta.key 0 - активирует дополнительный уровень аутентификации
- ca /etc/openvpn/keys/ca.crt - путь к корневому сертификату
- cert /etc/openvpn/keys/server.crt - путь к сертификату сервера
- key /etc/openvpn/keys/server.key - ключ сервера
- dh /etc/openvpn/keys/dh1024.pem - файл алгоритма Diffie-Hellman
- client-config-dir /etc/openvpn/ccd - путь к каталогу индивидуальных клиентских конфигураций
- ifconfig 192.168.10.1 255.255.255.0 - устанавливает виртуальный адрес сервера
- ifconfig-pool 192.168.10.2 192.168.10.99 - устанавливает диапазон виртуальных адресов для клиентов
- push "route 192.168.10.0 255.255.255.0 192.168.10.1" - эта команда будет выполняться на клиентских компьютерах, во время инициализации OpenVPN, она будет активировать роутинг так, чтобы клиенты автоматически использовали openvpn-сервер как шлюз для этой подсети
- duplicate-cn - включает возможность использования одного ключа несколькими клиентами
- verb 3 - указывает уровень отладки
- cipher DES-EDE3-CBC - шифрование по алгоритму DES-EDE3-CBC
- persist-key - будет загружать ключи в режиме persist, то есть их перезагрузка не потребуется в случае разрыва соединения
- log-append /var/log/openvpn.log - путь к файлу лога
- persist-tun - активирует работу tun/tap устройств в режиме persist
- comp-lzo - активирует использование сжатия
Описание команд и параметров OpenVPN
Приведенные в статье команды без -- (двумя знаками дефиса) перед командой должны быть использованы в конфигурационном файле, команды с -- в начале используются только из командной строки. Подробности использования команд и их параметры - man openvpn.
- remote < host > - определяет удаленный конец туннеля. Могут использоваться записи IP и DNS.
- local < host > - определяет локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.
- dev < device > - определяет какой использовать тип устройства tun или tap. [2]
- port < port number > - указывает на каком порту будет работать OpenVPN (локально и удаленно).
- proto < proto > - какой протокол будет использоваться. Возможные значения: udp, tcp, tcp-client, tcp-server.[3]
- remote-random - если указана данная опция и в random перечисленно несколько удаленных хостов, то OpenVPN в случайном порядке будет к ним подключаться. Применяется для балансировки нагрузки.
- float - позволяет удаленному хосту изменять IP во время работы туннеля. Соединение при этом не разрывается.
- ipchange < cmd > - выполняет скрипт или команду указанную в < cmd >, если IP сменился.[4]
- connect-retry < seconds > - пробует переподключиться через указанное время в секундах, если соединение было разорвано.
- connect-retry-max < n > - максимальное количество повторов если соединение было разорвано
- resolv-retry < seconds > - если OpenVPN не удалось узнать имя удаленного хоста по DNS, то через указанное количество секунд попытаться переподключиться.
- lport < port > - указывает на локальный порт для использования OpenVPN
- rport < port > - аналогично для удаленного порта.[5]
- nobind - использовать динамический порт для подключения (только для клиента)
- shaper < bytes > - указывает скорость передачи данных в байтах для исходящего трафика (только для клиента)
- tun-mtu < mtu size > - устанавливает максимальный размер MTU. По умолчанию tun-mtu равен 1500.[6]
- dev-node < interface name > - устанавливает имя виртуального интерфейса.[7]
- ifconfig - устанавливает локальный IP и маску подсети для туннельного интерфейса.[8]
- server < network > < mask > - автоматически присваивает адреса всем клиентам (DHCP) в указанном диапазоне с маской сети. Данная опция заменяет ifconfig и может работаеть только с TLS-клиентами в режиме TUN, соответственно использование сертификатов обязательно.[9]
- server-bridge < gateway > < mask > < pool > - сервер в режиме моста для TAP устройств.[10]
- mode server - переключает OpenVPN в режим сервера (начиная с 2-й версии)
- mode p2p - данная опция идет по умолчанию.
Опции в режиме сервера
- push < options > - передача клиенту конфигурационных параметров.[11]
- comp-lzo - параметр сжатия трафика, идущего через виртуальный туннель. Может принимать значения yes, no, adaptive. Последнее используется по умолчанию.[12]
Работа с сертификатами 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). Крайне не рекомендуется отключать!
- secret < file > - включает режим шифрования и аутентификации на статических ключах. В качестве параметра использует заранее сгенерированный, командой --genkey, файл. Например: secret key.txt
Опции 11 и 12 очень сильно снижают безопасность OpenVPN, крайне не рекомендуется их использование.
Все доступные алгоритмы шифрования можно просмотреть выполнив из командной строки:
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-хосте, после успешного запуска туннеля.[13]
- route-gateway < IP > - устанавливает шлюз на VPN-хосте.[14]
- route-delay < seconds > - указывает подождать n-секунд перед установкой маршрутов.[15]
- route-up < cmd > - выполнить скрипт или программу < cmd > после установки маршрутов.[16]
- redirect-gateway - установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.
Команды для управления туннелем
- ping < seconds > - указывает отсылать ping на удаленный конец туннеля после указанных n-секунд, если по туннелю не передавался никакой трафик.[17]
- ping-restart < seconds > - если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель.[18]
- ping-timer-rem - позволяет перезапускать туннель, только когда указан удаленный адрес.
- persist-tun - данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.
- persist-key - указывает не перечитывать файлы ключей при перезапуске туннеля.
- resolv-retry < seconds > - устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста.[19]
- inactive < seconds > - после n-секунд неактивности устройство TUN/TAP автоматически отключится.[20]
- ping-exit < seconds > - если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN.[21]
- keepalive < seconds > < seconds > - является совмещением сразу двух команд - ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел.[22]
- persist-local-ip < IP > - оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен.
- persist-remote-ip < IP > - оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен.[23]
Методы аутентификации
- auth-user-pass-verify < script > < method > - указывается только на серверной стороне.[24]
- auth-user-pass < file > - указывается на клиентской стороне. Параметр не обязателен, если он отсутствует то будет предложено ввести пару логин/пароль.[25]
- client-cert-not-required - отключает авторизацию по сертификатам.
Скриптинг
- up < command > - выполнить команду после запуска устройства TUN/TAP.[26]
- up-delay < seconds > - подождать n-секунд перед запуском команды указанной в up.[27]
- down < command > - выполнить команду когда интерфейс TUN/TAP выключится.[28]
- down-pre - выполнить команду, указанную в down перед выключением интерфейса TUN/TAP
- up-restart < command > - выполнить команду после каждого реконнекта
- route-up < command > - выполнить команду после установки сетевых маршрутов.[29]
- learn-address < command > - выполнить указанную команду, если ip удаленной стороны изменился.
- ipchange < command > - выполнить команду, если ip сервера изменился.
- client-connect < command > - выполнить команду, когда клиент подключился.
- client-disconnect < command > - выполнить команду, когда клиент отключился.
Логирование
- log < file > - указываем лог-файл. Если данный параметр не указан, то весь вывод openvpn будет производиться в stdout.
- log-append < file > - дописывать сообщения в лог-файл, а не перезаписывать.
- status < file > - указывает путь к статус-файлу, в котором содержится информация о текущих соединениях и информация о интерфейсах TUN/TAP.
Настройка фаервола
Добавляем в /etc/rc.local:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Вопрос - ответ
Вопрос: Чем отличаются виртуальные устройства 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?
Ответ: Эти два файла используются в качестве временной базы данных, используемой при генерации ключей. Должны находиться в том каталоге, где и ключи.
Примечания
- ↑ OpenVPN: An Introduction and Interview with Founder, James Yonan (англ.). LinuxSecurity.com.
- ↑ Например: dev tun или dev tap. При одном из таких указаний будет использован свободный интерфейс tun или tap. Так же можно явно указывать номер виртуального интрефейса, например tun0.
- ↑ tcp-client - сам пытается установить соединение
tcp-server - только ждет подключений
Примечательно, что с использованием протокола udp VPN будет работать чуть быстрее, чем tcp. Но в плане стабильности работы лучше выбирать tcp (как показывает практика, VPN-соединение более устойчиво) - ↑ Например: ipchange script-ip.sh
- ↑ Например: rport 8000 - OpenVPN будет пытаться подключится к удаленному порту 8000
- ↑ Например: tun-mtu 1200
- ↑ Например: dev-node openvpn1
- ↑ Например: ifconfig 10.3.0.1 255.255.255.0
- ↑ Например: server 10.3.0.0 255.255.255.0
Подключившиеся клиенты получат адреса в диапазоне между 10.3.0.1 и 10.3.0.254. - ↑ Например: 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. - ↑ Например: 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 - принудительно включить сжатие
comp-lzo no - принудительно отключить сжатие
comp-lzo adaptive - адаптивный режим. - ↑ Например: route 10.0.10.0 255.255.255.252
- ↑ Например: route-gateway 192.168.0.22 После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22
- ↑ Например: route-delay 5 Т.е. через 5 секунд после установки туннеля будут заданы маршруты.
- ↑ Пример: route-up /script.sh
- ↑ Например: ping 10
- ↑ Например: ping-restart 60 - если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.
- ↑ Например: resolv-retry 86400
- ↑ Например: inactive 120
- ↑ Например: ping-exit 120
- ↑ Например: keepalive 10 180 Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета - то перезапускать туннель.
- ↑ Например: persist-remote-ip 192.168.50.1
- ↑
< script > - путь к скрипту, который будет производить авторизацию. Скрипт должен возвращать 0 если авторизация успешна, и соответственно, 1 если авторизация не успешна.
< method > - метод авторизации, может быть двух типов: via-env и via-file - ↑
Должен содержать имя пользователя и пароль в двух строчках:
username
password - ↑ Например: up script-up.sh
- ↑ Например: up-delay 5
- ↑ Например: down script-down.sh
- ↑ Например: route-up script.sh