像`/ etc / hosts`一样重定向而不编辑`/ etc / hosts`

时间:2015-12-08 17:47:54

标签: linux redirect localhost

我需要将特定的传出连接(从我的系统上的 任何 Web客户端)重定向到特定的IP。是的,可以通过在/etc/hosts文件中添加此行来完成:

123.456.789.012  www.mydomain.com

是否可以在没有编辑/etc/hosts的情况下进行重定向?实际上,我暂时需要这种重定向。此外,我无法修改我的系统上的任何配置文件,所以我应该只通过命令行中的一些工具进行这样的重定向。我已经阅读了tsocks,但它可以仅从特定应用程序而不是从任何应用程序将传出连接重定向到SOCKS服务器。

那么,有可能吗?

1 个答案:

答案 0 :(得分:2)

好的,我找到了解决方案。我们可以使用iptables。此规则通过80端口将所有传出请求重定向到0.0.0.0:3010

$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 0.0.0.0:3010

要删除此规则,只需将-A替换为-D

$ sudo iptables -t nat -D OUTPUT -p tcp --dport 80 -j DNAT --to-destination 0.0.0.0:3010

如果我们想通过80端口仅重定向特定请求,我们可以使用此命令:

$ sudo iptables -t nat -A OUTPUT -p tcp -d google.com --dport 80 -j DNAT --to-destination 0.0.0.0:3010

在这种情况下,只有google.com的请求才会被重定向到0.0.0.0:3010