¿Cómo cambiar la dirección IP para que apunte a localhost?

10

Se puede acceder al entorno sandbox de una aplicación web directamente mediante una dirección IP: http://<my_ip_address>sin un nombre de inicio de sesión.

¿Hay alguna manera de hacer un host virtual en mi máquina local, llamado as <my_ip_address>, y cambiar / etc / hosts para que se "redirija" a mi host local ?

127.0.0.1 <my_ip_address>

Entonces, cuando cargo la url, ¿ http://<my_ip_address>el navegador apuntará a mi host local? La forma en que ya puedo redirigir los nombres de dominio.

Miguel
fuente

Respuestas:

21

El archivo de hosts solo se puede usar para asociar un nombre de dominio con una IP; no puede asignar IP a IP.

La alteración de las direcciones IP puede realizarse mediante un firewall . En Linux, el firewall predeterminado está controlado por los comandos de iptables . "man iptables" es la documentación. Google "explica iptables" para explicaciones introductorias.

Algunos enlaces:

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

Específicamente, desea cambiar las solicitudes SALIENTES de su PC a una dirección IP ( <my_ip_address>), para que en su lugar vayan a una dirección IP diferente, en este caso 127.0.0.1. Desea realizar NAT ( traducción de direcciones de red ), dada la "IP de destino" ( <my_ip_address>; por ejemplo, 123.45.67.89), cambiándola a una "IP de destino" diferente (127.0.0.1).

Pruebe esto (en lugar de 123.45.67.89 , coloque la dirección_IP que necesita ser alterada):

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

Detalles:

-t nat = tabla para traducir una dirección a otra

-A OUTPUT = agregar a la lista de reglas para paquetes salientes generados localmente. ADVERTENCIA DE SEGURIDAD: asegúrese de que la regla incluya esta directiva de SALIDA. Si no lo hace, la regla crearía un posible agujero de seguridad, porque los paquetes entrantes coincidentes de ubicaciones remotas también se dirigirían a localhost.

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

-d 123.45.67.89 = la dirección IP original a la que iba el paquete (su destino).

-j DNAT = si la regla coincide (en este caso, si un paquete saliente tiene una IP de destino 123.45.67.89), entonces trátelo con DNAT, que altera el destino.

--to-destination 127.0.0.1 = le dice a DNAT qué hacer; reemplace el destino original con "127.0.0.1".

(NOTA: Si tuvo una situación más compleja, como interceptar solicitudes de páginas web específicas, una solución alternativa podría ser utilizar un software "proxy").

ToolmakerSteve
fuente
Tenga en cuenta que hay una preocupación de seguridad aquí. 127.0.0.1 se entiende comúnmente como inalcanzable desde cualquier host remoto. Si cambia eso sin agregar filtros, puede rechazar involuntariamente una medida de seguridad.
Slartibartfast
@Slartibartfast: tenga en cuenta que solo cambiamos las solicitudes SALIENTES. Y estamos haciendo el cambio en un firewall en esta PC. (Algunas solicitudes, que habrían salido a un sitio externo, estamos regresando a nosotros mismos). Esto no cambia las solicitudes ENTRANTES, por lo que no afecta lo que cualquier persona remota puede ver / hacer. Ante esto, ¿todavía ve un problema de seguridad?
ToolmakerSteve
1
... la medida de seguridad esencial, es la inclusión de "-A OUTPUT" en la regla. Según su comentario, las personas deben saber que OMITIR eso tendría el peligro que usted describe. Agregaré un comentario para enfatizar esto.
ToolmakerSteve
3
Está funcionando bien, pero no puedo verlo en ninguna parte de iptables --list o --list-rules. ¿Cómo puedo enumerarlo y eliminarlo después cuando ya no sea necesario?
Filip Stefanov
@FilipStefanov (¡un poco tarde, lo sé!): Enumere las reglas nat con un número al lado de ellas: iptables -t nat --list --line-numbers luego elimine las que nunca gobiernan por ese número: iptables -t nat -D OUTPUT <number>
Richard Walton