Так-как у меня похоже склероз от переизбытка технологий которыми я пользуюсь, то напишу несколько заметок по настройке разных сервисов и начнем с OpenVPN.
Для начала скопипастим у коллег список наиболее часто применяемых параметров конфигурации.
- remote< host > – определяет удаленный конец туннеля. Могут использоваться записи IP и DNS.
- local< host > – определяет локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.
- dev< device > – определяет какой использовать тип устройства tun или tap.
- port< port number > – указывает на каком порту будет работать OpenVPN (локально и удаленно).
- proto< proto > – какой протокол будет использоваться. Возможные значения: udp, tcp, tcp-client, tcp-server.
- remote-random – если указана данная опция и в random перечисленно несколько удаленных хостов, то OpenVPN в случайном порядке будет к ним подключаться. Применяется для балансировки нагрузки.
- float – позволяет удаленному хосту изменять IP во время работы туннеля. Соединение при этом не разрывается.
- ipchange< cmd > – выполняет скрипт или команду указанную в < cmd >, если IP сменился.
- connect-retry< seconds > – пробует переподключиться через указанное время в секундах, если соединение было разорвано.
- connect-retry-max< n > – максимальное количество повторов если соединение было разорвано
- resolv-retry< seconds > – если OpenVPN не удалось узнать имя удаленного хоста по DNS, то через указанное количество секунд попытаться переподключиться.
- lport< port > – указывает на локальный порт для использования OpenVPN
- rport< port > – аналогично для удаленного порта.
- nobind – использовать динамический порт для подключения (только для клиента)
- shaper< bytes > – указывает скорость передачи данных в байтах для исходящего трафика (только для клиента)
- tun-mtu< mtu size > – устанавливает максимальный размер MTU. По умолчанию tun-mtu равен 1500.
- dev-node< interface name > – устанавливает имя виртуального интерфейса.
- ifconfig – устанавливает локальный IP и маску подсети для туннельного интерфейса.
- server< network > < mask > – автоматически присваивает адреса всем клиентам (DHCP) в указанном диапазоне с маской сети. Данная опция заменяет ifconfig и может работаеть только с TLS-клиентами в режиме TUN, соответственно использование сертификатов обязательно.
- server-bridge< gateway > < mask > < pool > – сервер в режиме моста для TAP устройств.
- mode server – переключает OpenVPN в режим сервера (начиная с 2-й версии)
- mode p2p – данная опция идет по умолчанию.
Начнем с простейшего конфигурационного файла с зашитыми в него ключами (можно и внешние подключать, но это уже не модно).
client
proto tcp
remote remote-host 1194
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
auth SHA1
cipher AES-256-CBC
reneg-sec 0
ping-restart 0
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----
MIID3zCCAsegAwIBAgIIHs5GRaC8NuswDQYJKoZIhvcNAQELBQAwYzELMAkGA1UE
...
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
MIIDyDCCArCgAwIBAgIIGS/3k1ZW2cQwDQYJKoZIhvcNAQELBQAwYzELMAkGA1UE
...
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDeQGRsWf48/oXb
...
-----END PRIVATE KEY-----
</key>
Тестовый запуск конфигурационного файла.
# openvpn --config ./lms-client.conf
Для отключения перенаправления всего трафика в тунель (если это задано на стороне сервера), то добавляем параметр.
route-nopull