Вопрос или проблема
У меня есть виртуальный сервер, и я хочу развернуть сервер VPN на порту 443, а также хостить HTTP сервер с SSL/TLS на порту 443.
На сервер указывают различные домены. Поэтому я хочу, чтобы example.com:443
обслуживал HTTP-контент, а я хотел бы получать доступ к серверу VPN через vpn.example.com:443
.
Это возможно, как это работает и как я могу это настроить?
Доменные имена здесь не имеют значения. Сетевая подсистема рассматривает только IP-адрес и номер порта. Эти два параметра определяют, какой процесс получает входящий пакет.
Чтобы два разных процесса работали на одном и том же порту, они должны слушать на разных IP-адресах. Итак, если example.com
переводится на 10.0.1.1
, а vpn.example.com
переводится на 10.0.1.2
, один процесс может слушать на 10.0.1.1:443
, а другой процесс может слушать на 10.0.1.2:443
.
Имя одного и того же адреса/порта, например, 10.0.1.1:443
, не сработает.
То же самое относится и к IPv6, безусловно.
Переместите vCenter на какой-либо другой порт, также порт VPN должен быть на каком-то другом порту.
Настройте Nginx для работы на порту 443 и сделайте обратный прокси, как петлю к обеим службам на разных портах.
Вы уверены, что упомянутый вами VPN-сервис, который работает на 443, использует протокол HTTP или это что-то другое? Если да, то я бы рассмотрел обратный прокси с опцией потока как потенциальное решение. Но, возможно, выделение VPN на отдельный порт будет хорошим решением.
Ответ или решение
Для того чтобы одновременно запустить несколько приложений на одном сервере, использующем один и тот же порт, необходимо разобраться в тонкостях работы сетевого стека и возможностях настройки серверного программного обеспечения. В вашем случае, вашей целью является размещение VPN-сервера и HTTP-сервера с SSL/TLS на порту 443. Рассмотрим, как можно этого добиться.
Описание проблемы
Ваш сервер используется для хостинга как VPN-сервера, так и HTTP-сервера, оба из которых требуют использования порта 443. Однако сетевой стек работает так, что на одном IP-адресе и порту может работать только одно приложение. Поэтому для решения этой проблемы понадобится рассмотреть варианты, которые могут обойти это ограничение.
Решение: Использование обратного прокси
Одним из самых эффективных способов организовать ваше окружение является использование обратного прокси-сервера, например, Nginx. Это позволяет вам принимать входящие подключения на одном порту (в данном случае 443) и перенаправлять их на разные внутренние службы в зависимости от доменного имени или других критериев.
Шаги по настройке
-
Установка Nginx: Если Nginx еще не установлен на вашем сервере, это можно сделать с помощью пакетного менеджера:
sudo apt update sudo apt install nginx
-
Настройка конфигурации Nginx: В конфигурационном файле Nginx (обычно находится в
/etc/nginx/sites-available/default
или/etc/nginx/nginx.conf
) добавьте следующие блоки для каждого сервиса:server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; location / { proxy_pass http://localhost:8080; # Порт вашего HTTP-сервера proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } server { listen 443 ssl; server_name vpn.example.com; ssl_certificate /path/to/your/certificate.crt; ssl_certificate_key /path/to/your/private.key; location / { proxy_pass http://localhost:1194; # Порт вашего VPN-сервера proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
-
Перезапуск Nginx: После внесения изменений в конфигурацию, необходимо перезапустить Nginx для применения изменений:
sudo systemctl restart nginx
Дополнительные рекомендации
- Безопасность соединений: Обязательно настроьте SSL/TLS для вашего HTTP-сервера и VPN-сервера. Используйте актуальные сертификаты, полученные от надежного центра сертификации.
- Проверка работоспособности: После настройки протестируйте доступ к обеим службам, используя браузер и клиентский софт для VPN. Убедитесь, что трафик корректно проксируется и нет конфликтов.
- Мониторинг и логирование: Настройте систему мониторинга серверов и логирование Nginx, чтобы отслеживать производительность и возможные проблемы.
Заключение
Использование обратного прокси-сервера – это современный и распространенный метод управления несколькими приложениями на одном сервере, занимающем один и тот же порт. Это решение не только позволяет вам достигнуть необходимой функциональности, но и способствует более эффективному использованию ресурсов вашего сервера.