Hotspot sous linux

Tags: #<Tag:0x00007fc9df2af408> #<Tag:0x00007fc9df2af340>

Bonjour a tous,

ça fait un certain temps que je cherche un moyen de partager une connexion internet sous linux.
J’ai bien trouvé ceci:
help.ubuntu.com/community/WifiD … ccessPoint

mais je me suis dit qu’il devait quand meme exister des alternatives plus pratiques quand meme parce que la c’est pas mal de boulot pour partager une connexion internet via wifi…

Je ne sais pas si vous connaissez connectify sous window$, mais c’est quelque chose de semblable que je recherche en fait. Quoique pas necessairement graphique…

Est ce que l’un d’entre vous connais un paquet qui permette de faire ce genre de chose ?

Merci d’avance,

Dans la rubrique “trucs et astuces”, j’ai mis un petit script en bash qui automatise les manips présentées par ton lien.

pour-les-scripts-c-est-ici-t3548-300.html#p415449

Sinon, en graphique, il me semble que network-manager peut le faire : à vérifier.

Hum, pas sur mais tu veux plutot entendre deux interfaces connectées a internet non ?
Par exemple, acces a internet par cable ethernet et diffusion de la dite connexion via la carte wifi ?

Oops oui en effet, mon script en l’état est fait pour 2 interfaces wifi, désolé :stuck_out_tongue:

sinon avec 1 interface filaire et 1 interface wireless, il y a aussi la méthode via un pont réseau :

agentoss.wordpress.com/2011/10/ … ian-linux/
(tuto fait pour squeeze a l’époque, mais fonctionne pareil avec Wheezy)

Hello,

Bon c’est un peu hors sujet mais pfsense fait ça très bien aussi.

:wink:

[quote=“P’tit Nico :wink:”]Hello,

Bon c’est un peu hors sujet mais pfsense fait ça très bien aussi.

:wink:[/quote]

Pas mal, mais ce n’est pas une application au final c’est une distribution complète ^^

[quote=“N3mesis98”][quote=“P’tit Nico :wink:”]Hello,

Bon c’est un peu hors sujet mais pfsense fait ça très bien aussi.

:wink:[/quote]

Pas mal, mais ce n’est pas une application au final c’est une distribution complète ^^[/quote]

J’utilise chilispot pour les explications il te faudra piocher à droite et à gauche avec pas mal d’expérimentation pour en faire exactement ce dont tu as besoin, chez moi le hotspot est fermé et couplé avec du LDAP.

[quote=“N3mesis98”][quote=“P’tit Nico :wink:”]Hello,

Bon c’est un peu hors sujet mais pfsense fait ça très bien aussi.

:wink:[/quote]

Pas mal, mais ce n’est pas une application au final c’est une distribution complète ^^[/quote]

Oui, c’est assez perturbant car c’est à base de FreeBSD. Mais au final j’ai eu très très peu besoin de la console, l’interface web étant extrêmement bien foutu.
Le portail captif est très simple et ça fonctionne bien. En prod au boulot pour le wifi invité depuis des moi sans soucis.

Seul regret il ne se connecte pas à un LDAP directement, il faut un RADIUS.

Bon, j’ai téléchargé chillispot…
J’ai regardé la doc mais c’est bien confus…
Si je souhaite uniquement partager ma connection internet en WPA comment je dois faire ?

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=“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