Usando iptables para redirecionar o tráfego para um nome DNS dinâmico em vez de um endereço IP?

-1

Eu tenho um servidor Debian com um endereço IP estático. Quero configurá-lo para que, se eu me conectar a esse servidor usando uma porta específica, ele redirecione esse tráfego para minha rede doméstica.

Eu tenho que trabalhar usando iptables assim:

iptables -t nat -A PREROUTING -p tcp --dport [port] -j DNAT --to [home-ip]:[port]
iptables -t nat -A POSTROUTING -d [home-ip] -j MASQUERADE

O problema é que minha rede doméstica tem um IP dinâmico. Assim que muda (o que acontece com freqüência suficiente), isso vai parar de funcionar.

No entanto, tenho um nome DNS dinâmico configurado para o endereço IP da minha casa.

Existe alguma maneira de usar o iptables para que ele sempre redirecione esse tráfego para o IP para o qual meu nome DNS dinâmico é resolvido?

    
por GuyGizmo 10.04.2017 / 18:51

2 respostas

1

O IPTables não oferece suporte à resolução de DNS imediata, porque envolve problemas de segurança, desempenho e implementação.

Se alguém conseguisse modificar os registros DNS do seu domínio, isso afetaria as regras do IPTables.

Se o IPTables fizesse uma pesquisa de DNS em cada pacote de entrada ou mesmo pacote de inicialização de conexão, seria muito lento.

Além disso, se houver vários registros A para um nome de domínio, qual deles o IPTables usaria?

Para realizar o que você está procurando, é necessário implementar um sistema no qual o host que executa o IPTables verifique periodicamente qual é o endereço IP do seu nome de host dinâmico e, em seguida, altere suas regras de acordo.

Outra alternativa seria ter um software em seu computador em sua rede doméstica, que monitora o endereço IP público atual e, em seguida, envia-o ao seu servidor IPTables, que reconfigura o IPTables.

Não conheço nenhum software específico que possa fazer isso para você.

    
por 10.04.2017 / 23:06
1

Por razões bem explicadas por Tero Kikanen, iptables não é a ferramenta para fazer o que você deseja. Você deve usar ssh .

Vamos ligar:

  1. hostA seu pc local;

  2. hostB seu servidor Debian;

  3. hostC seu pc em casa.

Se você quiser encaminhar sua sessão ssh , por exemplo, você precisa adicionar, no pc hostA , a seguinte linha em seu arquivo .ssh / config :

Host hostC
ProxyCommand ssh hostB -W %h:%p

e verifique se você tem credenciais de login em hostC em hostA . Agora, do hostA, você pode se conectar ao hostC da seguinte forma:

ssh me@hostc

Neste, você não precisa usar endereços IP, nomes não resolvidos são bons. Além disso, você pode adicionar todos os tipos de opções (coisas como porta, arquivo de chave de criptografia, usuário e assim por diante) no comando Comando Proxy ou na CLI (depende se a opção é para Conexão B- > C, ou para conexão A- > B, respectivamente).

Da mesma forma, você pode encaminhar uma determinada porta (porta A) no hostA para uma porta diferente (portC) no hostC através do intermediário do hostB, da seguinte forma:

ssh -L portA:hostC:portC me@hostB

Mais uma vez, não é necessário usar endereços IP, nomes simples servem. Outra grande vantagem do ssh é que todas as comunicações são automaticamente criptografadas, então ninguém será capaz de ver o que você está fazendo.

Por último, se você não sabe como dar um nome ( grátis! ) para um pc sem um endereço IP estático (hostC), basta verificar noip , é trivial.

    
por 11.04.2017 / 10:49