endereço IP em / etc / hosts que sempre falhará?

0

Eu sei que você pode adicionar nomes de host a /etc/hosts , de modo que resolvê-los não realiza realmente uma pesquisa de DNS. Isso seria uma linha como

123.45.67.89 myhostname

Minha pergunta é: o que posso definir para a primeira parte (endereço IP) para que qualquer tentativa de conexão com esse myhostname sempre falhe?

Editar : por falha, refiro-me a uma rejeição explícita do ICMP, se possível. Eu não quero esperar por um tempo limite.

Razão

Eu tenho uma instância de VM em algum lugar, às vezes. O servidor de nuvem define um IP diferente em cada inicialização e não estou pagando por nenhum nome de domínio público. Eu tenho um script que inicia a instância e adiciona uma linha a /etc/hosts , para que eu possa facilmente ssh ou abrir uma guia do navegador para este host usando myhostname .

Isso funciona muito bem, mas eu também gostaria de remover essa entrada quando a instância é eliminada, e tentei conexões com myhostname não incorrer em qualquer DNS pesquisas ou (pior) tentar se conectar a algum host com o mesmo nome em qualquer domínio local em que estou sentado no momento.

    
por Dan Roche 31.01.2018 / 11:16

2 respostas

3

Assim, você deseja que um endereço IP que a) tenha a garantia de não corresponder a nada remoto e b) rejeite tudo.

Faça um:

iptables -I INPUT 1 -i lo -d 127.66.66.66 -p tcp -j REJECT --reject-with tcp-reset
iptables -I INPUT 2 -i lo -d 127.66.66.66 -j REJECT

(ou o que for equivalente a sua ferramenta de gerenciamento de firewall do iptables de escolha).

Agora, todas as conexões TCP para 127.66.66.66 receberão um pacote TCP RST em resposta, e todo o restante receberá uma rejeição de ICMP. (TCP RST geralmente recusará uma conexão TCP ainda mais rápido que o ICMP, na minha experiência).

O endereço IP 127.66.66.66 está dentro do segmento de loopback, portanto, é garantido que ele não interfere em nada que não seja local.

    
por 31.01.2018 / 16:56
1

Não consigo encontrar uma maneira de ter hosts forçar uma resposta "não encontrada", acho que você precisaria ter seu próprio servidor DNS para isso. Mas você poderia fazer outras coisas ...

  • Use um endereço IP de 127.0.0.1 (ou qualquer coisa em 127/8 , realmente) para que o nome aponte para seu host local. Para um serviço que você não está executando, seu sistema responderia com uma redefinição de TCP ou um erro ou descartaria o pacote, mas se você estiver executando o SSH localmente, ele não funcionaria tão bem.

  • Use qualquer um dos endereços de uso particular, como algo em 10/8 . Dependendo da sua configuração, o seu sistema pode tentar enviar pacotes para eles, mas o seu ISP deve eliminar os pacotes antes que eles cheguem muito longe. Ou você pode simplesmente mandar seu firewall rejeitá-los antes que eles saiam da sua máquina.

  • Use algo que é praticamente um endereço inválido. 0.0.0.1 (ou qualquer coisa em 0/8 exceto 0.0.0.0 ) parece produzir um erro na conexão no Linux e no Windows. 0.0.0.0 é usado, e. Clientes DHCP antes que eles saibam seu próprio endereço, e parece direcionar para localhost no Linux. (O bloco inteiro é realmente reservado para significar "Este host nesta rede".)

Claro que tudo isso é basicamente mentira, e não a solução mais limpa como tal.

    
por 31.01.2018 / 13:15