Настройка IP-адресов сервера
Ключ доступа указывает приложениям, к какому адресу подключаться. Обычно сервер определяет его сам, но если у машины несколько IP-адресов, их можно задать вручную: адрес для входящих подключений и адрес, который добавляется в ключи.
Как сервер определяет свой адрес
По умолчанию сервер ожидает подключения на всех сетевых адресах машины через TCP-порт 443.
Для ключей адрес определяется по исходящему трафику через запрос к веб-сервису. На управляемом сервере VpnHood! MANAGER делает то же самое с помощью опции Automatic Configuration и задает точки доступа. Она включена для каждого нового сервера.
В большинстве случаев этого достаточно. Задайте адрес вручную, если:
- Трафик отправляется с адреса, отличного от адреса для подключений пользователей — например, при использовании отдельного исходящего IP (сервис определит именно исходящий адрес).
- У машины несколько публичных IP-адресов, и в ключах доступа должен быть указан конкретный.
- Не удалось определить адрес — например, нет связи с веб-сервисом. В этом случае отдельный сервер не запустится, а в журнале появится ошибка
PublicEndPoints has not been configured properly..
На управляемом сервере
В VpnHood! MANAGER перейдите в Servers, выберите сервер и откройте Access Points. Каждая точка доступа представляет собой адрес сервера с указанием портов.
203.0.113.10, попадает в ключи. Старый адрес, 198.51.100.20, исключается из них, но сервер продолжает принимать на нем подключения приложений со старыми ключами.
Чтобы настроить параметры вручную, отключите Automatic Configuration: пока этот режим активен, список изменить нельзя. MANAGER запросит подтверждение, так как сервер перезагрузится с новыми параметрами.
Назначение каждого адреса определяют два параметра:
- Параметр Mode определяет, кому передается адрес. Режим PublicInToken добавляет его во все ключи доступа фермы серверов. Режим Public не включает адрес в ключи — MANAGER передает его приложению только при перенаправлении на этот сервер. В режиме Private адрес приложениям не передается.
- Параметр Listen определяет, принимает ли сервер входящие подключения по этому адресу. Устанавливайте Yes только для адресов, маршрутизируемых вашим провайдером на этот узел: в Linux сервер самостоятельно добавляет в сетевой стек адрес для прослушивания, отсутствующий на узле.
Параметры UDP Port и QUIC Port необязательны; значение -1 отключает любой из них.
В облачных сетях, где узлу назначены только частные адреса (например, AWS, Google Cloud, Azure или Oracle Cloud), укажите частный адрес со значениями Mode Private и Listen Yes, а публичный IP — со значениями PublicInToken и Listen No на том же порту. Режим Automatic Configuration настраивает такую конфигурацию автоматически.
Для проверки откройте ферму серверов: на ее странице в разделе Access Points перечислены адреса, входящие в состав ключей.
На отдельном сервере
Сервер загружает конфигурацию из /opt/VpnHoodServer/storage/appsettings.json. По умолчанию этого файла нет: создайте его, и сервер применит его вместо исходных настроек. Адреса задаются двумя параметрами в блоке FileAccessManager:
TcpEndPoints— адреса и порты, на которых сервер ожидает подключения.PublicEndPoints— адреса и порты, добавляемые в ключи доступа. Указывайте только реальные адреса: значения0.0.0.0или[::]не позволят серверу запуститься.
Пример файла: сервер слушает все адреса и добавляет в ключи 203.0.113.10
{
"FileAccessManager": {
"TcpEndPoints": [ "0.0.0.0:443", "[::]:443" ],
"PublicEndPoints": [ "203.0.113.10:443" ],
"SslCertificatesPassword": null
},
"ServerConfig": {
"LogAnonymizer": true,
"AddListenerIpsToNetwork": "*"
},
"LogLevel": "Information"
}
Чтобы сервер ожидал подключения только на одном адресе (например, при отдельном исходящем IP), укажите его и в TcpEndPoints. При установке без Docker сервер сам добавит этот адрес в систему, если его еще нет.
Если используются параметры UdpEndPoints или QuicEndPoints, укажите для них тот же адрес, что и для TCP.
В облачных сервисах с приватными адресами (AWS, Google Cloud, Azure или Oracle Cloud) настройте входящие подключения на приватный адрес или на все адреса сразу, а публичный IP укажите в PublicEndPoints.
Затем перезапустите сервер командой sudo systemctl restart VpnHoodServer или sudo docker restart VpnHoodServer в Docker. Для проверки создайте ключ с помощью vhserver gen: назначенные адреса будут показаны в строке HostEndPoints:.
Ранее созданные ключи
Ключ содержит адреса, заданные при его создании, поэтому приложение со старым ключом будет обращаться по прежнему адресу. При каждом подключении приложение автоматически обновляет ключ, поэтому после изменения настроек оставьте старый адрес активным на сервере на несколько дней, а затем удалите его.
На управляемом сервере сохраните старый адрес как точку доступа со значениями Mode Private и Listen Yes: приложения получат новый ключ автоматически, так как опция Push token to clients включена по умолчанию. На автономном сервере оставьте старый адрес только в TcpEndPoints.
Если приложение больше не может подключиться по старому адресу, потребуется выдать пользователю новый ключ. Использование доменного имени с доверенным сертификатом позволяет ключам определять новый адрес через DNS, исключая сбои при изменениях.