As I have spend many time on this subject and searching for secrets.....
I can answer now to many questions.
Basicaly to run a captive portal you must understand that:
- Connect any device to Internet and it will send request by DHCP to a specific URL to have a Network Connectivity Status Indicator.
Right it's clear! specific "URL" mean the dhcp-server must be able to resolve an URL and need a valid and reachable DNS server, check your IPTABLE and your ISC-DHCP to point a valid DNS and you will resolve 90% of the problem
something like iptable -t nat -A PREROUTING -d 8.8.8.8/32 -j ACCEPT and
option domain-name-servers 8.8.8.8; in your ISC-DHCP conf will do the job, this will open a notification that the connexion need more informations.
- Right now if you have setting up good rules on your IPTABLES to redirect to local port 80 with a good splash captive portal page, it will work !!!! magic
- Just a last tip, I don't know why some devices from apple big ch.... will not open your default splash page but will search something other and finish to 404, so you need also to setup your splash page on HTTP server as 404
for example in apache add:
ErrorDocument 404 http://splash_page_url
Finaly when client connect -> ask the dns to resolve IP to check Network Connectivity Status Indicator.
-> return URL is unreachable -> open notification or browser depending the device.