Como alterar o endereço IP para apontar para o host local?

10

Um ambiente sandbox de um aplicativo da web é acessível diretamente por um endereço IP: http://<my_ip_address>sem um nome de login.

Existe uma maneira de criar um host virtual na minha máquina local, nomeado como <my_ip_address>, e alterar / etc / hosts para que ele "redirecione" para o meu host local?

127.0.0.1 <my_ip_address>

Então, quando eu carrego o URL, http://<my_ip_address>o navegador apontará para o meu host local? A maneira como eu já posso redirecionar nomes de domínio.

Mike
fonte

Respostas:

21

O arquivo hosts pode ser usado apenas para associar um nome de domínio a um IP; não pode mapear IP para IP.

A alteração de IPs pode ser feita por um firewall . No Linux, o firewall padrão é controlado pelos comandos iptables . "man iptables" é a documentação. O Google "explica iptables" para explicações introdutórias.

Alguns links:

http://linux.die.net/man/8/iptables

http://www.linuxnix.com/2009/12/iptables-in-linux-explained.html

http://blog.adityapatawari.com/2011/12/ip-packet-filtering-iptables-explained.html

Especificamente, você deseja alterar as solicitações de SAÍDA do seu PC para um endereço IP ( <my_ip_address>), para que elas passem para um endereço IP diferente, neste caso 127.0.0.1. Você deseja executar NAT ( Network Address Translation ), dado o "IP de destino" ( <my_ip_address>; por exemplo, 123.45.67.89), alterando-o para um "IP de destino" diferente (127.0.0.1).

Tente isto (no lugar de 123.45.67.89 , coloque o endereço_IP que precisa ser alterado):

iptables -t nat -A OUTPUT -p all -d 123.45.67.89 -j DNAT --to-destination 127.0.0.1

Detalhes:

-t nat = tabela para traduzir um endereço para outro

-A OUTPUT = anexa à lista de regras para pacotes gerados localmente e enviados. AVISO DE SEGURANÇA: Verifique se a regra inclui esta diretiva OUTPUT. Caso contrário, a regra criaria uma possível falha de segurança, porque a correspondência de pacotes de entrada de locais remotos também seria direcionada para o host local.

-p all = aplica-se a todos os protocolos (tcp, udp e icmp).

-d 123.45.67.89 = o endereço IP original para o qual o pacote estava indo (seu destino).

-j DNAT = se a regra corresponder (nesse caso, se um pacote de saída tiver IP de destino 123.45.67.89), lide com DNAT, que altera o destino.

--to-destination 127.0.0.1 = diz ao DNAT o que fazer; substitua o destino original por "127.0.0.1".

(NOTA: Se você teve uma situação mais complexa, como interceptar solicitações de páginas da Web específicas, uma solução alternativa pode ser usar o software "proxy".)

Fabricante de ferramentas
fonte
Observe que há uma preocupação de segurança aqui. 127.0.0.1 é comumente entendido como inacessível a partir de qualquer host remoto. Se você alterar isso sem adicionar filtragem, poderá involuntariamente anular uma medida de segurança.
precisa
@Slartibartfast - Observe que apenas alteramos solicitações de saída. E estamos fazendo a alteração em um firewall neste PC. (Algumas solicitações, que teriam saído para um site externo, estamos retornando a nós mesmos.) Isso não altera as solicitações INCOMING, portanto não afeta o que qualquer pessoa remota pode ver / fazer. Diante disso, você ainda vê uma preocupação de segurança?
Home
11
... a medida de segurança essencial, é a inclusão de "-A OUTPUT" na regra. Pelo seu comentário, as pessoas precisam estar cientes de que OMITTING teria o perigo que você descreve. Vou adicionar um comentário para enfatizar isso.
Home
3
Está funcionando bem, mas não consigo vê-lo listado em nenhum lugar iptables --list ou --list-rules. Como posso listá-lo e excluí-lo depois, quando não é mais necessário?
27417 Filip Filipanov
@FilipStefanov (Bit tarde eu sei!): Lista das regras nat com um número próximo a eles: iptables -t nat --list --line-numbers Em seguida, exclua o que nunca governar por esse número: iptables -t nat -D OUTPUT <number>
Richard Walton