У меня есть домен, статический IP-адрес и много устройств, к которым я хотел бы получить доступ за пределами моего дома. Как мне их маршрутизировать?

У меня есть домен, статический IP-адрес и много устройств, к которым я хотел бы получить доступ за пределами моего дома. Как мне их маршрутизировать?

У меня есть домен (например, example.com), статический IP-адрес (например, 212.5.5.5) и локальные устройства по адресу 192.168.0.1:80, 192.168.0.2:80, 192.168.0.3:80, 192.168.0.4:80, 192.168.0.4:47(это не веб-сайт).

Как получить доступ к этим устройствам с помощью поддоменов (например, device1.example.com, device2.example.comи т. д.)?

В настоящее время мне удалось получить только работающие example.com:80и example.com:47, которые указывают на 192.168.0.4:80и 192.168.0.4:47.

Я знаю, что нельзя установить порт на DNS-сервере.

Как мне преодолеть мою проблему?

решение1

У вас может быть один общедоступный сервер, на котором запущен обратный прокси-сервер nginx, который перенаправляет трафик на основе поддомена на нужный сервер.

Конфигурация nginx на вашем «главном» сервере:

server {
  server_name device1.example.com;
  location / {
    proxy_pass http://192.168.0.1:80;
  }
}
server {
  server_name device2.example.com;
  location / {
    proxy_pass http://192.168.0.2:80;
  }
}
server {
  server_name device3.example.com;
  location / {
    proxy_pass http://192.168.0.3:80;
  }
}

решение2

Вам нужно будет использовать альтернативные порты для всего, кроме одного из них. Например, 212.5.5.5:80 будет перенаправлять на 192.168.0.1:80, но затем 212.5.5.5:81 будет перенаправлять на 192.168.0.2:80, а 212.5.5.5:82 будет перенаправлять на 192.168.0.3:80 и т. д. Это должно быть настраиваемым на большинстве современных устройств NAT.

Другой способ, если вы готовы использовать IPv6, — просто включить сквозной IPv6 на вашем устройстве NAT или маршрутизаторе. По сути, это выставляет каждый адрес IPv6 в вашей локальной сети в публичный интернет, позволяя вам получать к ним прямой доступ извне. Как вы можете себе представить, с этим связан определенный риск. Вам решать, является ли этот риск допустимым.

решение3

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

Правильным решением будет настроить VPN-сервер, который предоставит вам удаленный доступ к внутренней сети. В идеале внутренняя сеть должна быть отделена от вашей основной и использоваться только для этих открытых устройств. Это ограничит ущерб в случае их взлома.

Программное обеспечение VPN с открытым исходным кодом является зрелым, проверенным, а проблемы безопасности хорошо изучены. Вы ограничиваете себя гораздо меньшей поверхностью атаки.

решение4

Сначала вы можете убедиться, что всем нужен доступ к этим сервисам из Интернета (= что они действительно предназначены для публичного использования). В противном случае вы можете рассмотреть возможность настройки VPN-сервера и доступа к сервисам внутри вашей сети.

Я предполагаю, что службы, которые находятся на порту, 80являются веб-серверами, предоставляющими типичные веб-службы. В таком случае применяются решения обратного прокси, предложенные в других ответах.

Возможно, это службы, которые подготовлены/предназначены для запуска с SRVзаписью в вашем DNS. Идея в том, что вы разрешаете известную запись для службы, которая в свою очередь дает вам имя:порт для подключения. Возьмем пример Minecraft:

  • вы настраиваете своего клиента для подключения кminecraft.example.com
  • Ваш клиент знает, что он может сделать запрос _minecraft._tcp.minecraft.example.com., чтобы получить фактический IP-адрес и порт для подключения.

Это чрезвычайно полезная функция, но ее необходимо реализовать наклиентдля услуги, к которой вы обращаетесь

Связанный контент