Eu tenho um domínio (por exemplo example.com
), endereço IP estático (por exemplo 212.5.5.5
) e dispositivos locais em 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
(este não é um site).
Como acesso esses dispositivos usando subdomínios (por exemplo, device1.example.com
, device2.example.com
, etc.)?
Atualmente só consegui pegar example.com:80
e example.com:47
trabalhar, que apontam para 192.168.0.4:80
e 192.168.0.4:47
.
Eu sei que você não pode definir a porta no servidor DNS.
Como devo superar meu problema?
Responder1
Você pode ter um servidor público executando o proxy reverso nginx que redireciona o tráfego com base no subdomínio para o servidor correto.
Configuração do nginx no seu servidor "principal":
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;
}
}
Responder2
Você precisará usar portas alternativas para tudo, exceto uma delas. Por exemplo, 212.5.5.5:80 encaminharia para 192.168.0.1:80, mas 212.5.5.5:81 encaminharia para 192.168.0.2:80 e 212.5.5.5:82 encaminharia para 192.168.0.3:80, e assim sobre. Isto deve ser configurável na maioria dos dispositivos NAT modernos.
Outra maneira, se você estiver disposto a usar IPv6, é simplesmente ativar a passagem IPv6 em seu dispositivo ou roteador NAT. Isso basicamente expõe todos os endereços IPv6 da sua LAN à Internet pública, permitindo que você os acesse diretamente de fora. Como você pode imaginar, há algum risco associado a isso. Cabe a você decidir se esse risco é tolerável.
Responder3
Você não deve expor esses serviços diretamente à Internet. Você não pode auditar esses dispositivos para ter certeza de que estão seguros, e apenas expô-los vaza informações sobre o estado da sua rede interna.
A solução correta é configurar um servidor VPN que conceda acesso remoto a uma rede interna. O ideal é que a rede interna seja segregada da rede principal, usada apenas para esses dispositivos expostos. Isso limita os danos se eles forem hackeados.
O software VPN de código aberto é maduro, auditado e os problemas de segurança são bem compreendidos. Você se limita a uma superfície de ataque muito menor.
Responder4
Você pode primeiro garantir que todos precisem acessar esses serviços pela Internet (= que eles sejam realmente públicos). Caso contrário, você pode considerar configurar um servidor VPN e acessar os serviços dentro da sua rede.
Presumo que os serviços que estão na porta 80
sejam servidores web que fornecem serviços web típicos. Nesse caso, aplicam-se as soluções de proxy reverso sugeridas em outras respostas.
Pode ser que sejam serviços preparados/destinados a funcionar com uma SRV
entrada no seu DNS. A ideia é que você resolva um registro conhecido para um serviço, que por sua vez fornece o nome:porta à qual se conectar. Para tomar o exemplo do Minecraft:
- você configurou seu cliente para se conectar
minecraft.example.com
- seu cliente sabe que pode consultar
_minecraft._tcp.minecraft.example.com.
o IP e a porta reais para se conectar.
Este é um recurso extremamente útil, mas deve ser implementado noclientepara o serviço que você está acessando