如何在 Ubuntu 20.04 上配置 PolarProxy?

如何在 Ubuntu 20.04 上配置 PolarProxy?

问题

我按照说明进行操作PolarProxys 网站,但无法让任何流量通过(不是来自同一台计算机也不是远程计算机)。

重现步骤

在 Ubuntu 20.04 上运行的命令(按顺序):

mkdir ~/PolarProxy
cd ~/PolarProxy/
curl https://www.netresec.com/?download=PolarProxy | tar -xzf -
sudo ./PolarProxy -v -p 443,80 -x /usr/local/share/polarproxy.cer --certhttp 10080 -w ../polarproxy.pcap
sudo iptables -A FORWARD -i eth1 -d 192.168.1.55 -p tcp --dport 10443 -m state --state NEW -j ACCEPT
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to 192.168.1.55:10443
sudo iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
./PolarProxy -p 10443,80,443 --certhttp 10080 -w - | sudo wireshark -k -i -

结果

PolarProxy 按预期启动,并且访问时http://192.168.1.55:10800/polarproxy.cer证书开始下载。问题是,当将 192.168.1.55:10443 设置为代理服务器或将其添加到 hosts 文件时(在 Windows 10 上测试),所有其他请求都会失败。此外,PolarProxy 打开的 Wireshark 窗口根本不显示任何请求,我认为它应该显示。

其他信息

Ubuntu 本地 IP 地址:192.168.1.55
Ubuntu 网络接口:wlan0
Windows 本地 IP 地址:192.168.1.199
Windows 网络接口:wlan0

答案1

PolarProxy 是一个透明代理,这意味着它应该不是在浏览器或操作系统中配置为“代理服务器”。相反,请确保 PolarProxy 已配置为 Windows PC 上的默认网关(使用“ipconfig”命令检查),或将所有 TLS 流量从默认网关/防火墙转发到 PolarProxy IP。如您所提到的,在 hosts 文件中添加指向 PolarProxy IP 的静态主机条目也可以起作用,但某些浏览器可能会忽略这些条目。

PolarProxy 安装说明显示三种不同类型的路由选项。请确保为您的设置选择正确的路由选项。

路由选项 #1:在网关/防火墙上安装 PolarProxy

如果您的 Ubuntu PC 的 IP(192.168.1.55)配置为 Windows PC 上的默认网关,则请将这些 iptables 规则应用到 Ubuntu 机器:

sudo iptables -A INPUT -i eth1 -p tcp --dport 10443 -m state --state NEW -j ACCEPT
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to 10443

路由选项 #2:PolarProxy 安装在单独的机器上

如果你的 Ubuntu PC 不是“wlan0”网络上的默认网关,那么你需要应用这些 iptables 规则在你的路由器/防火墙上(不在 Ubuntu PC 上):

sudo iptables -A FORWARD -i eth1 -d 192.168.1.55 -p tcp --dport 10443 -m state --state NEW -j ACCEPT
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to 192.168.1.55:10443
sudo iptables -t nat -A POSTROUTING -o eth1 -d 192.168.1.55 -p tcp --dport 10443 -j MASQUERADE 

路由选项 #3:客户端 PC 上的 PolarProxy

最后,如果您只想代理来自 Ubuntu 机器(也运行 PolarProxy)的本地 TLS 流量,请使用以下 iptables 规则:

sudo iptables -t nat -A OUTPUT -m owner --uid 1000 -p tcp --dport 443 -j REDIRECT --to 10443 

状态连接跟踪

“-m state” 规则要求您配置相关或已建立的规则。如果您没有,您可以使用以下命令添加它:

sudo iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -I FORWARD 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

如果您的网关使用的是 conntrack 模块而不是 state 模块,那么您只需将“-m state --state”更改为“-m conntrack --ctstate”即可。

避免以 root 身份运行 PolarProxy

我还注意到,在提供的示例命令中,您在 TCP 443 上启动 PolarProxy。PolarProxy 的设计允许它无需 root 权限即可运行。这就是为什么我们在示例中将其设置为监听 TCP 端口 10443。请确保使用“-p 10443,80,443”启动 PolarProxy,以符合说明中的 iptables 规则。

免责声明:此答案由 PolarProxy 的开发人员和维护人员发布。

相关内容