ztn*_*man 2 ubuntu proxy iptables
我有一台 Ubuntu 12.04 主机,上面有一个在端口 8080 上运行的鱿鱼代理。我想使用 iptables 通过鱿鱼代理来自主机的所有 Web 流量。正确的方法是:
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Run Code Online (Sandbox Code Playgroud)
这是行不通的。当我浏览到某个页面时,即使禁用了代理,它也会正常显示。任何建议表示赞赏。
小智 5
tl;dr你的命令非常接近。您需要删除该-d 127.0.0.1
片段并确保以其他用户身份运行代理进程,并从过滤器中排除该用户,-m owner ! --uid-owner <other-username>
以便代理不会将其流量重定向到自身。
更多详情
\n\n我发现大多数配置透明代理的建议都iptables
假设代理计算机位于与客户端不同的主机上。我想代理源自我的计算机的流量(并且我还在同一台计算机上运行代理)。
我读你问题的方式让我觉得你也想要同样的东西。
\n\n这篇博文提到了修复方法:
\n\n\n\n\n本地主机也是如此
\n\n如果您想在与服务器相同的计算机上运行客户端(您\xe2\x80\x99在咖啡店里使用笔记本电脑;给我准备一份糕点),我们\n可以\xe2\x80\x99t使用PREROUTING 表,因为它仅适用于来自外部的数据包。我们能做的就是修改\n数据包OUTPUT上的目标端口 我们可以做的是修改客户端进程问题是它也会影响 mitmproxy 输出的数据包,并且我们会进入路由循环。
\n\n可能有多种方法可以解决这个问题,但对我来说最有效的方法是以 root 身份运行 mitmproxy,并使 iptables 规则不 生效 root 拥有的进程。
\n\nRun Code Online (Sandbox Code Playgroud)\n\nsudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner root --dport 443 -j REDIRECT --to-port 8080\n
\n
\n\n- -mowner:加载 所有者 模块。
\n- !\xe2\x80\x93uid-所有者根:规则不适用于 root 拥有的进程
\n请记住,在这种情况下,您\xe2\x80\x99 将以 root 身份运行 mitmproxy。这还将记录您的所有 https Web 浏览器流量。添加
\n-m multiport
并\n 替换--dport
为--dports
以拦截多个端口(或仅使用不同的端口重复该行)。
还有这个mitmproxy 论坛帖子有一个解决方案,因此您不必以 root 身份运行。您专门创建一个单独的用户来运行 mitmproxy,然后在 iptables 过滤器中排除该用户的 uid。
\n\n我发现@keerthi 评论中链接的线程不太正确,因为那是关于转发本地主机上的单个端口,而我认为您想转发所有端口 traffic.
\n 归档时间: |
|
查看次数: |
22635 次 |
最近记录: |