web-dev-qa-db-fra.com

Dnsmasq config pour le portail captif

J'essaie de créer un hotspot de portail captif wifi.

Objectif de la configuration:

  1. Les utilisateurs qui se connectent à Hotspot via WLAN0 ne doivent jamais être autorisés à accéder à Internet via Eth1.

  2. Pour que la "connexion dans le réseau wifi" apparaisse sur Android, iPhone et tout périphérique qui se connecterait, j'essaie d'acheminer les demandes qui vont à
    [.____] http://clients1.google.com/generate_204 et autre URL pour d'autres systèmes d'exploitation, je n'ai pas encore compris, à mon serveur local et renvoyez ce que les serveurs réels reviendront.

J'utilise dnsmasq et hostapd pour y parvenir.

Le problème: lorsque j'utilise l'adresse =/#/127.24.2.1 dans dnsmasq.conf, les demandes Internet qui vont de scripts internes échouent également. Je pense que je suis la page Dnsmasq Config Man, indiquant comment utiliser DNSMASQ pour filtrer uniquement le trafic d'interface WLAN0.

que devrais-je faire plus loin.

La machine a ces interfaces

    eth1      Link encap:Ethernet  HWaddr 00:1e:06:30:5b:03
          inet addr:192.168.0.107  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::21e:6ff:fe30:5b03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:37047 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1752 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3351437 (3.1 MiB)  TX bytes:176100 (171.9 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:796 errors:0 dropped:0 overruns:0 frame:0
          TX packets:796 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:284838 (278.1 KiB)  TX bytes:284838 (278.1 KiB)

wlan0     Link encap:Ethernet  HWaddr 98:de:d0:1b:95:5a
          inet addr:172.24.1.1  Bcast:172.24.1.255  Mask:255.255.255.0
          inet6 addr: fe80::9ade:d0ff:fe1b:955a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:576 (576.0 B)

Le dnsmasq ressemble à ceci

interface=wlan0      # Use interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
#bind-interfaces      # Bind to the interface to make sure we aren't sending things elsewher$
server=8.8.8.8       # Forward DNS requests to Google DNS
domain-needed        # Don't forward short names
bogus-priv           # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Assign IP addresses between 172.24.1.50 and 172.24$
address=/#/172.24.1.1
except-interface=eth1

J'utilise un serveur Nodejs Express et fais cela

 app.get('/generate_204', function(req, res) {
        console.log('generate 204 hit');
        res.statusCode = 302;
        res.setHeader("Location", "/");
        res.end();
    });

J'ai créé le hotspot à l'aide de Hostapd, la configuration est

    # This is the name of the WiFi interface we configured above
interface=wlan0

# Use the nl80211 driver with the brcmfmac driver
driver=nl80211

# This is the name of the network
ssid=Pi3-AP

# Use the 2.4GHz band
hw_mode=g

# Use channel 6
channel=6

# Enable 802.11n
ieee80211n=1

# Enable WMM
wmm_enabled=1

# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Accept all MAC addresses
macaddr_acl=0

# Use WPA authentication
auth_algs=1

# Require clients to know the network name
ignore_broadcast_ssid=0

# Use WPA2
wpa=2

# Use a pre-shared key
wpa_key_mgmt=WPA-PSK

# The network passphrase
wpa_passphrase=raspberry

# Use AES, instead of TKIP
rsn_pairwise=CCMP

J'ai essayé d'expliquer l'exigence, je ne suis pas sûr de bien vouloir bien expliquer la pièce d'explication. Une autre question que j'ai soulevée ici sur Serverfault pour le même problème, qui a été marquée hors sujet, la lecture, il vous fera comprendre clairement l'exigence. https://serverfault.com/questions/823139/iptables-for-lux-captive-portal-wifi-hotspot

6
55597

lorsque j'utilise l'adresse =/#/127.24.2.1, les demandes Internet qui vont de scripts internes échouent également

Il semble que vos scripts internes utilisent pour résoudre les noms DNS le même serveur DNSMASQ local en tant que clients WiFi.

Vérifier votre /etc/resolv.conf Configuration et s'il existe votre adresse de serveur DNSMASQ (127.24.2.1 ou 127.0.0.1 ou autre) - retirez-le. Utilisez plutôt des serveurs DNS ISP, ou Google DNS ou tout autre que vous préférez, qui ne remplacent aucune adresse à 127.24.2.1.

Remarque. Si vous utilisez le système resolvconf pour générer /etc/resolv.conf (in resolv.conf Avertissement présent comme # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN), alors vous devez modifier les configurations dans /etc/resolvconf/resolv.conf.d/ Au lieu de cela, et après son régénération /etc/resolv.conf (redémarrez la mise en réseau ou le meilleur - redémarrage du système entier)

Une autre possibilité: supprimer le paquet resolvconf et modifier /etc/resolv.conf

3
Slipeer