如何更改IP地址以指向localhost?


10

IP地址可直接访问Web应用程序的沙箱环境:http://<my_ip_address>无需登录名。

有没有一种方法可以在本地计算机中创建一个名为的虚拟主机<my_ip_address>,并更改/ etc / hosts使其“重定向”到我的本地主机?

127.0.0.1 <my_ip_address>

因此,当我加载URL时http://<my_ip_address>,浏览器将指向我的本地主机?我已经可以重定向域名的方式。

Answers:


21

主机文件只能用于将域名与IP相关联;它无法将IP映射到IP。

可以通过防火墙来更改IP 。在Linux上,默认防火墙由iptables命令控制。“ man iptables”是文档。Google会“解释iptables”进行介绍性解释。

一些链接:

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

具体来说,您想将PC的OUTGOING请求更改为IP地址(<my_ip_address>),以使它们转到另一个IP地址,在本例中为127.0.0.1。给定“目标IP”(例如123.45.67.89),您要执行NAT网络地址转换),将其<my_ip_address>更改为其他“目标IP”(127.0.0.1)。

尝试以下操作(代替123.45.67.89,放置需要更改的ip_address):

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

细节:

-t nat =用于将一个地址转换为另一个地址的表

-A OUTPUT =附加到本地生成的传出数据包的规则列表中。 安全警告:确保规则包括此OUTPUT指令。如果不这样做,该规则可能会造成安全漏洞,因为匹配的来自远程位置的传入数据包也将定向到本地主机。

-p all =适用于所有协议(tcp,udp和icmp)。

-d 123.45.67.89 =数据包要到达的原始IP地址(其目的地)。

-j DNAT =如果规则匹配(在这种情况下,如果传出数据包的目标IP为123.45.67.89),则使用DNAT处理它,从而更改目标。

--to-destination 127.0.0.1 =告诉DNAT该怎么做;将原始目标位置替换为“ 127.0.0.1”。

(注意:如果遇到更复杂的情况,例如拦截对特定网页的请求,则另一种解决方案可能是使用“代理”软件。)


请注意,此处存在安全问题。通常认为127.0.0.1无法从任何远程主机访问。如果您在不添加过滤的情况下进行了更改,则可能会无意中破坏安全措施。
Slartibartfast 2014年

@Slartibartfast-请注意,我们仅更改待发请求。我们正在此PC上的防火墙中进行更改。(有些请求本应发送到外部站点,我们正在循环回到自己。)这不会更改INCOMING请求,因此不会影响任何远程用户可以看到/执行的操作。鉴于此,您仍然看到安全问题吗?
ToolmakerSteve

1
...基本安全措施是在规则中包含“ -A OUTPUT”。根据您的评论,人们需要意识到,忽略它会带来您所描述的危险。我将添加一条评论以强调这一点。
ToolmakerSteve

3
它工作正常,但我看不到它在iptables --list或--list-rules中列出。我如何列出它并在以后不再需要时删除它?
Filip Stefanov

@FilipStefanov(有点晚了,我知道!):在nat规则旁边列出一个数字:iptables -t nat --list --line-numbers 然后删除该数字永远不会规则的规则: iptables -t nat -D OUTPUT <number>
Richard Walton
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.