Я следую этому руководству для настройки VPN между моим домашним сервером и рабочим сервером.

Моя проблема в том, что в моей сети клиент (домашний сервер) находится за динамическим IP, а сервер (рабочий) - за статическим IP.

Что я должен сделать по-другому, чтобы создать этот VPN между моим домом и производственной сетью, учитывая, что мой дом находится за IP-адресом, который часто меняется у моего провайдера?

2 ответа2

2

OpenVPN требует, чтобы одна система была настроена как сервер, а другая - как клиент. Клиенты подключаются к серверу.

Таким образом, вы должны иметь экземпляр сервера, работающий на вашем производственном сервере со статическим IP, и экземпляр клиента, работающий на вашем домашнем сервере с динамическим IP. IP-адрес вашего клиента не имеет значения, так как он инициирует соединение с сервером.

2

Соединение OpenVPN, когда хотя бы одно соединение между клиентом и сервером не имеет статического IP-адреса, представляет собой следующую проблему: если любой из них меняет адрес во время соединения, оно будет сброшено.

Однако существует стандартный способ (см. Эту официальную вики-страницу OpenVPN) автоматически запрашивать у клиента и / или сервера принудительное повторное соединение при каждом разрыве соединения. Он состоит из следующих строк в файлах конфигурации клиента и сервера:

ping               15
ping-restart      300 # 5 minutes
resolv-retry        300 # 5 minutes
persist-tun
persist-key 

Однако обратите внимание, что эти строки сохраняют ссылку OpenVPN независимо от причины временного сброса (не говоря уже об изменении общедоступного IP-адреса), поэтому я обычно сохраняю их в файлах конфигурации клиента и сервера, чтобы обеспечить автоматическое переподключение.

Согласно Руководству:

- n

Удаленный эхо-запрос по каналу управления TCP/UDP, если в течение как минимум n секунд не было отправлено ни одного пакета (укажите --ing на обоих узлах, чтобы пинг-пакеты отправлялись в обоих направлениях, поскольку пинг-пакеты OpenVPN не отражаются как пинг-пакеты IP), При использовании в одном из безопасных режимов OpenVPN (где указаны --secret, --tls-server или --tls-client), пакет ping будет криптографически безопасным.

--ing-restart n

Аналогично --ping-exit, но инициирует перезапуск SIGUSR1 через n секунд без получения пинга или другого пакета от удаленного. Эта опция полезна в случаях, когда удаленный узел имеет динамический IP-адрес, а DNS-имя с низким TTL используется для отслеживания IP-адреса с помощью службы, такой как http://dyndns.org/ + динамический клиент DNS, такой как ddclient. ,

Если узел не может быть достигнут, перезапуск будет инициирован, что приведет к повторному разрешению имени узла, используемого с --remote (если также указана опция --resolv-retry).

В режиме сервера --ping-restart, --inactive или любой другой тип внутреннего генерируемого сигнала всегда будет применяться к отдельным объектам экземпляра клиента, а не ко всему самому серверу. Также обратите внимание, что в режиме сервера любой внутренний сигнал, который обычно вызывает перезапуск, будет вызывать удаление объекта экземпляра клиента.

В режиме клиента параметр --ping-restart по умолчанию равен 120 секундам. Это значение по умолчанию будет сохраняться до тех пор, пока клиент не получит значение замены с сервера, основываясь на параметре --keepalive в конфигурации сервера. Чтобы отключить 120 секунд по умолчанию, установите --ping-restart 0 на клиенте.

См. Раздел сигналов ниже для получения дополнительной информации о SIGUSR1.

Обратите внимание, что поведение SIGUSR1 можно изменить с помощью параметров --persist-tun, --persist-key, --persist-local-ip и --persist-remote-ip.

Также обратите внимание, что --ping-exit и --ping-restart являются взаимоисключающими и не могут использоваться вместе.

--resolv-retry n Если не удается разрешить имя хоста для --remote, повторите попытку в течение n секунд, прежде чем потерпеть неудачу. Установите n в "бесконечное", чтобы повторить бесконечно.

По умолчанию --resolv-retry infinite включен. Вы можете отключить, установив n = 0.

--persist-чан

Не закрывайте и не открывайте устройство TUN/TAP и не запускайте сценарии вверх / вниз по SIGUSR1 или перезапускам --ping-restart. SIGUSR1 - это сигнал перезапуска, похожий на сигнал SIGHUP, но он обеспечивает более детальное управление параметрами сброса.

--persist ключ

Не перечитывайте ключевые файлы через SIGUSR1 или --ping-restart. Эта опция может быть объединена с параметром --user nobody, чтобы разрешить перезапуски, инициируемые сигналом SIGUSR1. Обычно, если вы отбрасываете привилегии root в OpenVPN, демон не может быть перезапущен, поскольку теперь он не сможет перечитывать файлы защищенных ключей.

Эта опция решает проблему путем сохранения ключей во время перезагрузки SIGUSR1, поэтому их не нужно перечитывать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .