基于 iptables 的重定向,强制门户风格

基于 iptables 的重定向,强制门户风格

什么是 iptables 规则集,它将强制连接到尝试访问任何网站(任何 IP 或主机名的端口 80)的接入点的主机重定向到网络上的另一个设备(实际上是独立的)?

例如,第二台服务器(托管 Web 服务器)通过以太网连接,IP 为 192.168.1.99/24 (eth0)

主服务器托管一个无线热点(来自适配器 wlan0ap),IP 为 192.168.12.1/24。我想这样做,以便尝试访问 192.168.12.1:80 或 192.168.12.4:80 或 google.com:80 的热点(在 192.168.12.0/24 网络中)的任何 wifi 用户将被强制重定向到 192.168 .1.99:80。

目前,我已经尝试将这些规则与net.ipv4.ip_forward=1sysctl 中的启用设置结合起来

sudo iptables -A POSTROUTING -t nat -o wlan0ap -j MASQUERADE
sudo iptables -t mangle -N internet
sudo iptables -t mangle -A PREROUTING -i wlan0ap -p tcp -m tcp --dport 80 -j internet
sudo iptables -t mangle -A PREROUTING -i wlan0ap -p tcp -m tcp --dport 443 -j internet
sudo iptables -t mangle -A internet -j MARK --set-mark 99
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp -m mark --mark 99 -m tcp --dport 80 -j DNAT --to-destination 192.168.1.98

答案1

以下规则应该有效(未经测试):

iptables -t nat -A PREROUTING -i wlan0ap -p tcp --dport 80 -j DNAT  --to-destination  192.168.1.99:80
iptables -t nat -A PREROUTING -i wlan0ap -p tcp --dport 443 -j DNAT --to-destination  192.168.1.99:80
iptables -t nat -A POSTROUTING -j MASQUERADE

答案2

您可以使用多端口选项。要限制端口 上的所有流量80443您可以使用:

iptables -t nat -A PREROUTING -i wlan0ap -p tcp -m multiport 80,443 -j DNAT --to-destination 192.168.1.99:80

如果有用户使用de Portal登录,

iptables -t nat -A PREROUTING -i wlan0ap -s ip_user -p tcp -ACCEPT

我们的替换 -s Ip -mac --source mac MAC

相关内容