Captive Portal для мостового интерфейса
Мне нравится создавать простой портал, который работает для интерфейса, который является частью моста.
Мостовой интерфейс br0 (10.19.1.1/16) состоит из двух интерфейсов eth0 и eth1. За eth1 стоят клиентские компьютеры. За eth0 находится коммутатор, к которому подключен интернет-шлюз.
Для встроенного портала все tcp-запросы на порт 80, поступающие от клиентов за eth1, должны быть направлены на локальный веб-сервер.
Следующие строки, кажется, работают, так как запрос веб-сайта перенаправляется на локальный веб-сервер. Проблема в том, что после использования строки аутентификации, приведенной ниже, клиент больше не может загружать обычные веб-сайты.
Я уже искал в интернете, но не нашел решения.
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