我喜欢创建一个简单的强制网络门户,适用于作为网桥一部分的接口。
桥接接口br0(10.19.1.1/16)由两个接口eth0和eth1组成。 eth1背后是客户端计算机。 eth0后面是一个连接到互联网网关的交换机。
对于强制门户网站,所有来自eth1后面的客户端的端口80的tcp请求都需要指向本地Web服务器。
以下行似乎可以正常工作,因为网站请求被重定向到本地Web服务器。问题是,一旦使用下面的身份验证行,客户端就不能再加载任何常规网站了。
我已经搜索了互联网,但还没有找到解决方案。
PORTAL_INT="eth1"
PORTAL_IP="10.19.1.1"
#'drop' packets from being bridged
ebtables -t broute -A BROUTING -i $PORTAL_INT -p IPv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target DROP
iptables -N internet -t mangle
iptables -t mangle -A PREROUTING -j internet
#authenticated
#iptables -t mangle -I internet 1 -m mac --mac-source $CLIENT_MAC -j RETURN
#mark all traffic
iptables -t mangle -A internet -j MARK --set-mark 99
#redirect website access
iptables -t nat -A PREROUTING -m mark --mark 99 -p tcp --dport 80 -j DNAT --to-destination $PORTAL_IP
iptables -t filter -A FORWARD -m mark --mark 99 -j DROP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -m mark --mark 99 -j DROP