设置 hostapd、iptables 和 squid

设置 hostapd、iptables 和 squid


我正在尝试设置一个类似于机场等场所的接入点。基本上,人们可以连接到网络,进入启动画面,然后通过代理服务器进行身份验证。

到目前为止,我设法设置了 squid 和 iptables 来使用我的测试设置重新路由 80/443 包,但显然现在人们也希望他们的 whatsapp 和其他东西能够正常工作,但我似乎无法让东西正常工作。

我已经尝试了很多东西,我当前的设置如下(作为 whatsapp 的测试):

squid3.conf

[...]
acl Safe_ports port 4244
acl Safe_ports port 5242
acl Safe_ports port 5228
acl Safe_ports port 5223
acl Safe_ports port 5222
[...]

iptables

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 4244 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5242 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5228 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5223 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 5222 -j REDIRECT --to-ports 3128


这是我尝试让 whatsapp 进行通信的设置,但显然它不会。现在,在我安装 squid 之前,我使用 hostapd 来路由软件包,如下所示

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE

它实现了完全的互联网访问,我很喜欢。所以,我现在有两个问题。

  1. 是否可以设置 iptables,以便只有经过 squid 认证的用户才能获得上述完整的互联网访问权限?如果可以,那将立即解决我的所有问题。
  2. 如果没有,那么 whatsapp 的基本设置是什么样的?

可能值得一提的是:我也尝试过 Android 版“drony”来代理 WhatsApp,摆脱困境,但同样没有成功。
任何帮助我都感激不尽。谢谢!



编辑:我还没有找到正确的方法。我采取了另一种在我看来可行的方法,即尝试以如下方式修改所有软件包:

iptables -t nat -A PREROUTING -i eth0 ! -s 192.168.2.1 -p tcp -j DNAT --to 192.168.2.1:3128
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0 -d 192.168.2.1 -j SNAT --to 192.168.2.1:3128

基本上,如果我所有事情都正确的话,这应该会将所有包传输到 squid 代理(传入和传出)......至少我希望如此?

我还有其他几行代码似乎可以解决这个问题,但到目前为止我还没有真正成功。

iptables -A FORWARD -s 192.168.2.0 -d 192.168.2.1 -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

以及 eth/wlan 更改,例如 das

iptables -A FORWARD -s 192.168.2.0 -d 192.168.2.1 -i eth0 -o wlan0 -p tcp --dport 3128 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0 -d 192.168.2.1 -i wlan0 -o eth0 -p tcp --dport 3128 -j ACCEPT

我猜这真的不是一个适合中等技能的人的项目,或者我只是犯了一些荒谬的错误。有趣的是,新的线条(似乎)完美地取代了这些线条

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128

所以我认为我的猜测没有错,但现在我完全陷入了困境。

相关内容