Come modificare l'indirizzo IP per puntare a localhost?


10

L'ambiente sandbox di un'app Web è raggiungibile direttamente tramite un indirizzo IP: http://<my_ip_address>senza un nome di accesso.

C'è un modo per creare un host virtuale nella mia macchina locale, chiamato come <my_ip_address>, e cambiare / etc / hosts in modo che "reindirizzi" al mio localhost?

127.0.0.1 <my_ip_address>

Quindi quando carico l'URL http://<my_ip_address>il browser punterà al mio localhost? Il modo in cui posso già reindirizzare i nomi di dominio.

Risposte:


21

Il file host può essere utilizzato solo per associare un nome di dominio a un IP; non può mappare IP su IP.

La modifica degli IP può essere eseguita da un firewall . Su Linux, il firewall predefinito è controllato da comandi iptables . "man iptables" è la documentazione. Google "spiega iptables" per spiegazioni introduttive.

Alcuni link:

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

In particolare, si desidera modificare le richieste OUTGOING dal PC in un indirizzo IP ( <my_ip_address>), in modo che vengano invece indirizzate a un indirizzo IP diverso, in questo caso 127.0.0.1. Si desidera eseguire NAT ( Network Address Translation ), dato il "IP di destinazione" ( <my_ip_address>; ad es. 123.45.67.89), cambiandolo in un "IP di destinazione" diverso (127.0.0.1).

Prova questo (al posto di 123.45.67.89 , inserisci l'indirizzo_ip che deve essere modificato):

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

Dettagli:

-t nat = tabella per la traduzione di un indirizzo in un altro

-A OUTPUT = aggiungi all'elenco delle regole per i pacchetti generati localmente, in uscita. AVVISO DI SICUREZZA: assicurarsi che la regola includa questa direttiva OUTPUT. In caso contrario, la regola creerebbe una possibile falla di sicurezza, poiché la corrispondenza dei pacchetti in arrivo da posizioni remote verrebbe indirizzata anche a localhost.

-p all = si applica a tutti i protocolli (tcp, udp e icmp).

-d 123.45.67.89 = l'indirizzo IP originale a cui stava andando il pacchetto (la sua destinazione).

-j DNAT = se la regola corrisponde (in questo caso, se un pacchetto in uscita ha IP 123.45.67.89 di destinazione), quindi gestirlo con DNAT, che modifica la destinazione.

--to-destinazione 127.0.0.1 = dice a DNAT cosa fare; sostituire la destinazione originale con "127.0.0.1".

(NOTA: in caso di situazioni più complesse, come l'intercettazione di richieste per pagine Web specifiche, una soluzione alternativa potrebbe essere l'uso del software "proxy".)


Si noti che esiste un problema di sicurezza qui. 127.0.0.1 è comunemente inteso come irraggiungibile da qualsiasi host remoto. Se lo cambi senza aggiungere filtri, potresti involontariamente annullare una misura di sicurezza.
Slartibartfast,

@Slartibartfast: tieni presente che cambiamo solo le richieste OUTGOING. E stiamo apportando le modifiche in un firewall su questo PC. (Alcune richieste, che sarebbero state inviate a un sito esterno, stiamo tornando indietro a noi stessi.) Questo non cambia le richieste INCOMING, quindi non influisce su ciò che chiunque remoto può vedere / fare. Detto questo, vedi ancora problemi di sicurezza?
ToolmakerSteve

1
... la misura di sicurezza essenziale, è l'inclusione di "-A OUTPUT" nella regola. Secondo il tuo commento, le persone devono essere consapevoli dell'OMISSIONE che avrebbe il pericolo che descrivi. Aggiungerò un commento per sottolineare questo.
ToolmakerSteve

3
Funziona bene ma non riesco a vederlo elencato ovunque iptables --list o --list-rules. Come posso elencarlo ed eliminarlo in seguito quando non è più necessario?
Filip Stefanov,

@FilipStefanov (Bit tardi lo so!): Elenca le regole nat con un numero accanto a loro: iptables -t nat --list --line-numbers Quindi elimina che non governano mai con quel numero: iptables -t nat -D OUTPUT <number>
Richard Walton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.