如何用iptables将透明代理请求重定向另一主机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用iptables将透明代理请求重定向另一主机相关的知识,希望对你有一定的参考价值。
其实应该这样设置1、PREROUTING 该怎么做还怎么做,DNAT 到那个 PROXY
iptables -t nat -I PREROUTING -s <内网IP> -d ! <内网IP> -p tcp --dport 80 -j DNAT <PROXY_IP>:3128
2、针对访问 PROXY 的数据首包进行一次原地址修改
ipitables -t nat -I POSTROUTING -d <PROXY_IP> -p tcp --dport 3128 -j SNAT --to <LINUX_IP> 参考技术A 其实应该这样设置
1、PREROUTING 该怎么做还怎么做,DNAT 到那个 PROXY
iptables -t nat -I PREROUTING -s <内网IP> -d ! <内网IP> -p tcp --dport 80 -j DNAT <PROXY_IP>:3128
2、针对访问 PROXY 的数据首包进行一次原地址修改
ipitables -t nat -I POSTROUTING -d <PROXY_IP> -p tcp --dport 3128 -j SNAT --to <LINUX_IP>本回答被提问者和网友采纳
通过代理重定向本地主机?
【中文标题】通过代理重定向本地主机?【英文标题】:Redirect localhost through proxy? 【发布时间】:2010-10-31 19:19:38 【问题描述】:我有一个在 localhost:1234 运行的 HTTP 代理。该代理适用于我发出的所有 Web 请求。
我有一个在 localhost:4567 运行的服务器。我希望对我的服务器的 HTTP 请求通过我的代理。应该很简单吧?有没有办法让 IE 或任何其他浏览器做到这一点?
【问题讨论】:
相关:***.com/questions/37700079 【参考方案1】:浏览器绕过某些地址的代理。浏览器网络设置的“无代理”小节中对此进行了说明。 (火狐)
由于使用“localhost”而不是 ip,它解析为默认 ip 127.0.0.1,并且“localhost”和“127.0.0.1”都明确列为“无代理”。
但是“本地主机”是相当大的子集。可以使用 127.0.0.2:4567 或 127.0.1.1:4567,他们说有超过 1600 万个 IP 地址供您使用。 这将解决问题(至少对于 FF)。
附上设置和地址示例
【讨论】:
【参考方案2】:在 Windows 上:
转到 Windows/System32/Drivers/等
在记事本中以管理员身份运行
在你的主机文件中添加这样的内容:
127.0.0.1 mysite.local
然后,该代理将获取位于http://mysite.local 的该主机的所有数据。
Ubuntu: /etc/hosts
苹果: http://decoding.wordpress.com/2009/04/06/how-to-edit-the-hosts-file-in-mac-os-x-leopard/
【讨论】:
windows HOSTS文件的实际格式为IP name
。【参考方案3】:
是的,有办法!
在 IE9 中,如果您在 Internet 选项中手动配置了代理,您可以单击高级并简单地将 <-loopback>
添加到代理绕过列表。在 IE6 中,当手动配置代理时,localhost URL 会通过代理。只有 IE7+ 版本不向代理服务器发送 localhost 请求。
如果您想要一个更全球化的解决方案,您可以创建一个自动代理配置脚本。它基本上是一个包含函数 FindProxyForURL 的 javascript 文件。您可以使用该脚本的 URL 配置 Internet 选项。所有 HTTP 请求都会查询 FindProxyForURL 以获得它需要的代理服务器。因此,如果您希望所有 URL 都通过代理,您可以执行以下操作:
function FindProxyForURL(url, host)
return "PROXY localhost:1234";
如果您只希望外部地址访问您的本地主机代理,那么您可以执行以下操作:
function FindProxyForURL(url, host)
if (isPlainHostName(host))
return "DIRECT";
return "PROXY localhost:1234";
【讨论】:
【参考方案4】:这取决于您的浏览器。在 Firefox 中,检查“无代理”是否为空。默认情况下,Firefox 会阻止 localhost 和 127.0.0.1 的 URL 代理。
mozilla.org
【讨论】:
【参考方案5】:通常您可以为此配置浏览器设置。在 Firefox 中,它是选项 -> 高级 -> 网络 -> 连接(设置)。
如果 IE 检测到 localhost URL,它会自动忽略代理。这一直是 Fiddler 等工具的眼中钉。
但是,您通常可以通过直接访问 http://somesite.com:1234。有人花时间注册“somesite.com”域以自动路由到 127.0.0.1。这会使 IE 误以为它是一个外部域,但应该在重定向到本地服务器时通过您的代理运行。
祝你好运。
【讨论】:
somesite.com 上的注册似乎已失效。 在@FlavorScape 的回答中使用 HOSTS 文件。以上是关于如何用iptables将透明代理请求重定向另一主机的主要内容,如果未能解决你的问题,请参考以下文章