什么是 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=1
sysctl 中的启用设置结合起来
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
您可以使用多端口选项。要限制端口 上的所有流量80
,443
您可以使用:
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