Hotspot sous linux

Tags: #<Tag:0x00007fc9ded25c30> #<Tag:0x00007fc9ded25b40>

[quote=“agentsteel”]Pas (encore) vu de GUI pour ce genre de programme, malgré mes recherches.

Rien n’empêche de programmer une GUI pour piloter les scripts vus plus haut
(ça doit pouvoir se faire rapidement en GTK+ ou en QT)[/quote]

Oui, je pourrais le faire normalement en Qt (pyside), mais il faudrait auparavant que j’arrive a comprendre le fonctionnement de chillispot ^^

En fait tu n’avais pas précisé ton but initial.

Si c’est juste pour créer un hotspot tout simple, pour un usage familial ; un script suffirait.

Mais si tu veux créer un point d’accès avec portail captif (usage hors-familial) :

dans ce cas, chilispot n’est plus trop vivant :wink:

mieux vaudrait s’orienter vers CoovaChilli
coova.org/CoovaChilli

Ou encore, se tourner vers les distros firewall (pfsense comme l’a dit P’tit Nico), ou équivalent :

en.wikipedia.org/wiki/Captive_portal

Ce n’est pas si compliqué mais il faut effectivement une machine dédiée (ou une machine virtuelle :wink: )

EDIT Il y a ça aussi (en français) : alcasar.net/

Oui, j’aurais du preciser ça plus tot…
Personnellement, moi il me faut juste un moyen de partager ma connexion wifi tout con avec un code WPA/WEP.
Malheureusement, je ne suis franchement pas un as dans tout ce qui concerne le reseau, donc je me vois mal faire un script a ce niveau ^^

une petite recherche dans un moteur avec les mots-clé “raspberry wireless hotspot script”, et tu devrais finir par trouver un script tout fait (c’est la grosse mode les hotspots avec un raspberry pi :stuck_out_tongue: )

J’ai trouvé ça, tout préconfiguré normalement : github.com/harryallerston/RPI-Wireless-Hotspot

Je me demande juste si c’est censé marché etant donné que je suis pas sur une raspberry (dans le readme il y a marquer qu’il faut raspbian ou un truc du genre)

Prends pas ça, le script va écraser tes fichiers de config réseau…

bon attends 2 secondes, j’adapte mon script

Voilà, testé de mon côté, ça fonctionne :stuck_out_tongue:

[code]#!/bin/bash

Wifi Hotspot script

Quickly create a wireless hotspot to share access from your wired network

http://agentoss.wordpress.com

hardware requirements : 1 ethernet NIC + 1 wireless NIC (must support hostap mode)

software requirements : iptables, hostapd, dnsmasq, dhclient (or dhcpcd)

This is a standalone script, it will not use your existing configuration files

(for wpa_supplicant or hostapd)

Wireless will use WPA/WPA2 encryption.

BEFORE STARTING THIS SCRIPT :

- you must have root rights

- stop your wireless connection manager (networkmanager, wicd, etc…)

- disable your firewall

- disable power management (prevent the computer to go into suspend mode when unused)

This script has been tested on Debian 7 (Wheezy), but should work on other Linux systems with minor adaptations.

this is the wireless interface we use to create our new AP

WLAN_AP=“wlan0”

your new AP’s SSID

WLAN_AP_SSID=“MY_NEW_SSID”

Change passphrase here

WLAN_AP_PASSPHRASE=“myinsecurepassphrase”

change channel if needed

WLAN_AP_CHANNEL=6
WLAN_AP_IP="192.168.7.1"
WLAN_AP_DHCP_RANGE=“192.168.7.10,192.168.7.20”

temp files (will contain clear passphrases!)

HOSTAP_TEMP_CONF="/root/hostap_temp.conf"

Path for used commands (adapt to your system)

DHCPCD="/sbin/dhclient"
HOSTAPD="/usr/sbin/hostapd"
DNSMASQ="/usr/sbin/dnsmasq"
IPTABLES="/sbin/iptables"

Main program

check if we are root

if [[ $EUID -ne 0 ]]; then
echo basename $0 “: must be run as root!” 1>&2
exit 1
fi

check for software we need

if [[ ! -x $DHCPCD ]]; then
echo “FATAL: $DHCPCD not found!”; exit 1
fi
if [[ ! -x $HOSTAPD ]]; then
echo “FATAL: $HOSTAPD not found!”; exit 1
fi
if [[ ! -x $DNSMASQ ]]; then
echo “FATAL: $DNSMASQ not found!”; exit 1
fi
if [[ ! -x $IPTABLES ]]; then
echo “FATAL: $IPTABLES not found!”; exit 1
fi

check for wireless interfaces

ifconfig $WLAN_STA 1>&2>/dev/null
if [[ $? -ne 0 ]]; then
echo “FATAL: Wireless interface $WLAN_STA unavailable!”; exit 1
fi

some cleanup

kill existing wireless connections

$DHCPCD -x $WLAN_AP 2>/dev/null
killall wpa_supplicant 2>/dev/null

kill running hostapd daemon if it exists

killall hostapd 2>/dev/null

kill dnsmasq dhcp

killall dnsmasq 2>/dev/null

empty existing temp.conf files, for security

$HOSTAP_TEMP_CONF

stop the repeater? then just exit, we have already cleaned up!

if [ “$1” == “stop” ]; then
echo "Repeater has been stopped."
exit 0;
fi

else, continue and create our AP

echo "Please wait, starting up… "

create temp wpa_supplicant.conf file for our STA interface

cat >$HOSTAP_TEMP_CONF <<EOF
interface=$WLAN_AP
country_code=FR
ieee80211d=1
ssid=$WLAN_AP_SSID
hw_mode=g
channel=$WLAN_AP_CHANNEL
wme_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=$WLAN_AP_PASSPHRASE
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF

start hostapd daemon to create the “hotspot” AP

$HOSTAPD -B $HOSTAP_TEMP_CONF
if [[ $? -ne 0 ]]; then
echo “FATAL: unable to start $WLAN_AP interface (hostapd)!”; exit 1
fi

assign an IP address to the AP, and start a new DHCP server

ifconfig $WLAN_AP $WLAN_AP_IP netmask 255.255.255.0
$DNSMASQ --dhcp-range=$WLAN_AP_DHCP_RANGE --interface=$WLAN_AP
if [[ $? -ne 0 ]]; then
echo “FATAL: unable to start dhcp server! (dnsmasq)”; exit 1
fi

enable packet forwarding and add firewall rules to allow forwarding packets

between our 2 network interfaces.

IF_IN="eth0"
IF_OUT=$WLAN_AP

warning : permissive firewall rules here. Adapt to your liking.

sysctl -w net.ipv4.ip_forward=1
$IPTABLES -F
$IPTABLES -X
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE
$IPTABLES -A FORWARD -i $IF_IN -o $IF_OUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $IF_OUT -o $IF_IN -j ACCEPT

echo "-------------------------------------------------------------------------"
echo "Wireless Access Point “$WLAN_AP_SSID” is up!"
echo “To kill it : basename $0 stop”

exit 0
[/code]

Bon, jusqu’ici ça marche a moitié.
J’ai bien un hotspot de créé, mais je n’ai pas acces a internet depuis l’autre PC.
Je me demande si ça ne viens pas du fait que je n’ai pas modifié ces lignes:

WLAN_AP_IP="192.168.7.1" WLAN_AP_DHCP_RANGE="192.168.7.10,192.168.7.20"

Sinon, comment ça se passe avec un proxy ?
Parce que moi je dois en permanence utiliser un proxy pour la connexion a internet. J’imagine que normalement, a partir du moment ou moi j’ai configuré le proxy global, la personne a qui je passe internet n’aura pas a le configurer non ?
Parce que sur l’autre PC j’ai essayé avec et sans proxy et je n’ai pas reussi a me connecter a internet (impossible d’avoir un retour avec ping google.fr).

En tout cas c’est du beau script sinon ^^

Tu as bien ton interface filaire configurée (eth0)?
Le script ne la modifie pas. Donc si elle n’est pas “up”, pas d’internet.

Si tu es en dhcp, un petit

avant de lancer le script (et désactiver aussi le gestionnaire de réseau s’il y’en a un : network-manager, wicd…)

Pour la plage d’IP du hotspot, tu peux la changer, du moment ou cela n’interfère pas avec la plage de ton réseau déjà en place (souvent 192.168.0.x ou 192.168.1.x avec les box adsl)

Hmmm, ça viens peut etre du fait qu’il faut que j’installe mon driver ethernet…
Je vais regler ce probleme puis j’essaierais a nouveau ton script.

En tout cas merci bien

Quel FAI ?
“Partager” en wifi avec une machine qui se trouve à quelle distance de la machine ‘mère’ ?

[quote=“ricardo”]Quel FAI ?
“Partager” en wifi avec une machine qui se trouve à quelle distance de la machine ‘mère’ ?[/quote]

Pas vraiment de FAI connu je dirais, c’est mon UTC qui me donne ma connexion internet.
En distance, pas besoin de grand chose, une centaine de metres suffirait.

Sinon, j’ai reussi a installer le driver ethernet, mais ça n’a pas amélioré les choses concernant le script…
Je voulais savoir aussi si quelqu’un avait deja essayé ceci : clapico.com/2012/06/23/hotspot/, sur Gnome 3 on a a peu pres la meme chose dans le menu reseau.
Parce qu’actuellement je n’ai que mon telephone sous la main pour faire un test de connexion a internet, mais le reseau n’est meme pas reconnu (reseau ad hoc en meme temps…)

pour le truc avec network manager, c’est ce dont je parlais plus haut, mais oui c’est limité (WEP, ad-hoc).

avec le script, tu as un message d’erreur? Je peux le modifier pour qu’il affiche les messages d’erreur dans un fichier log de debug.

cela peut aussi venir de ta carte wifi si elle ne supporte pas le mode infrastructure (“AP mode”) sous Linux (dans ce cas hostapd devrait échouer)

wireless.kernel.org/en/users/Documentation/modes

Bref, sans information (config réseau filaire, firewall installé ou pas) c’est pas facile d’aider :stuck_out_tongue:

Voila ce que j’obtiens en lançant le script:

[code]Please wait, starting up…
Configuration file: /root/hostap_temp.conf
Failed to update rate sets in kernel module
Could not connect to kernel driver.
Using interface wlan0 with hwaddr 68:a3:c4:d9:8e:f4 and ssid 'debian_hotspot’
random: Cannot read from /dev/random: Resource temporarily unavailable
random: Only 0/20 bytes of strong random data available from /dev/random
random: Not enough entropy pool available for secure operations
WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
Failed to set beacon parameters
net.ipv4.ip_forward = 1

Wireless Access Point “debian_hotspot” is up!
To kill it : wireless_hotspot_script stop[/code]

Sinon, je n’ai pas de firewall, mais je dois utiliser un proxy pour me connecter, et j’utilise en general aussi un vpn…

Sinon, comment savoir si ma carte reseau est compatible AP deja ? (je suis sur de d’avoir utilisé la commande il y a pas longtemps, mais impossible de remettre la main dessus…)

[quote=“N3mesis98”]Voila ce que j’obtiens en lançant le script:

[code]Please wait, starting up…
Configuration file: /root/hostap_temp.conf
Failed to update rate sets in kernel module
Could not connect to kernel driver.
Using interface wlan0 with hwaddr 68:a3:c4:d9:8e:f4 and ssid 'debian_hotspot’
random: Cannot read from /dev/random: Resource temporarily unavailable
random: Only 0/20 bytes of strong random data available from /dev/random
random: Not enough entropy pool available for secure operations
WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
Failed to set beacon parameters
net.ipv4.ip_forward = 1

Wireless Access Point “debian_hotspot” is up!
To kill it : wireless_hotspot_script stop[/code]

Sinon, je n’ai pas de firewall, mais je dois utiliser un proxy pour me connecter, et j’utilise en general aussi un vpn…

Sinon, comment savoir si ma carte reseau est compatible AP deja ? (je suis sur de d’avoir utilisé la commande il y a pas longtemps, mais impossible de remettre la main dessus…)[/quote]

Lance la commande

(paquet iw si pas déjà installé)

Il faut avoir au moins “AP” dans la liste “Supported interface modes”.

Regarde également là ( wireless.kernel.org/en/users/Devices/PCI ) le modèle de ton chip wifi et vérifie que le driver correspondant supporte le mode AP.

Supported interface modes: * IBSS * managed * AP * AP/VLAN * monitor

Sinon voici ma carte wifi:

Mais elle a pas l’air d’etre sur le site…

Edit:
Normalement avec le telephone portable comme temoin de connexion ça fonctionne non ?

Quand j’essaie de me connecter avec en tout cas ça me fait un truc bizarre…
Je vois le wifi avec un signal “excellent”, je demande a me connecter en inserant la clef WPA, et quand je le fait, pouf, dans les 5s, mon telephone ne detecte plus rien et me dit qu’il a été déconnecté…

A ton avis il y a moyen de faire un truc pour suivre l’activité du script sur le PC, voir ce qui se passe ?

oui, regarde déjà les logs :

[code]==> /var/log/daemon.log <==
Jun 19 20:51:42 debian avahi-daemon[2810]: Joining mDNS multicast group on interface wlan0.IPv4 with address 192.168.7.1.
Jun 19 20:51:42 debian avahi-daemon[2810]: New relevant interface wlan0.IPv4 for mDNS.
Jun 19 20:51:42 debian avahi-daemon[2810]: Registering new address record for 192.168.7.1 on wlan0.IPv4.
Jun 19 20:51:42 debian dnsmasq[6942]: demarré, version 2.66 (taille de cache 150)
Jun 19 20:51:42 debian dnsmasq[6942]: options à la compilation : IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth
Jun 19 20:51:42 debian dnsmasq-dhcp[6942]: DHCP, plage d’adresses IP 192.168.7.10 – 192.168.7.20, durée de bail 1h
Jun 19 20:51:42 debian dnsmasq[6942]: Lecture de /etc/resolv.conf
Jun 19 20:51:42 debian dnsmasq[6942]: utilise le serveur de nom 195.83.155.55#53
Jun 19 20:51:42 debian dnsmasq[6942]: lecture /etc/hosts - 5 adresses
Jun 19 20:51:47 debian NetworkManager[2681]: wpa_supplicant die count reset

==> /var/log/syslog <==
Jun 19 20:51:42 debian avahi-daemon[2810]: Registering new address record for 192.168.7.1 on wlan0.IPv4.
Jun 19 20:51:42 debian dnsmasq[6942]: demarré, version 2.66 (taille de cache 150)
Jun 19 20:51:42 debian dnsmasq[6942]: options à la compilation : IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth
Jun 19 20:51:42 debian dnsmasq-dhcp[6942]: DHCP, plage d’adresses IP 192.168.7.10 – 192.168.7.20, durée de bail 1h
Jun 19 20:51:42 debian dnsmasq[6942]: Lecture de /etc/resolv.conf
Jun 19 20:51:42 debian dnsmasq[6942]: utilise le serveur de nom 195.83.155.55#53
Jun 19 20:51:42 debian dnsmasq[6942]: lecture /etc/hosts - 5 adresses
Jun 19 20:51:42 debian kernel: [ 754.108020] ip_tables: © 2000-2006 Netfilter Core Team
Jun 19 20:51:42 debian kernel: [ 754.149731] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
Jun 19 20:51:47 debian NetworkManager[2681]: wpa_supplicant die count reset
[/code]

Edit:

Quand j’essaie de me connecter avec mon telephone j’ai ce message qui revient environ toutes les 5s:

[code]==> /var/log/syslog <==
Jun 19 21:02:58 debian hostapd: wlan0: STA fc:c7:34:41:4c:40 IEEE 802.11: associated (aid 1)
Jun 19 21:02:58 debian hostapd: wlan0: STA fc:c7:34:41:4c:40 IEEE 802.11: Could not add STA to kernel driver

==> /var/log/daemon.log <==
Jun 19 21:02:58 debian hostapd: wlan0: STA fc:c7:34:41:4c:40 IEEE 802.11: associated (aid 1)
Jun 19 21:02:58 debian hostapd: wlan0: STA fc:c7:34:41:4c:40 IEEE 802.11: Could not add STA to kernel driver
[/code]

Il faut déjà désactiver networkmanager…

service network-manager stop

Un message a été déplacé vers un nouveau sujet : Problème plug wifi en AP