web-dev-qa-db-fra.com

Création d'un point d'accès WiFi sur une seule interface sous Linux

J'essaie de créer un point d'accès WiFi ou un point d'accès sur mon ordinateur portable Linux. J'utilise Opensuse Kde 12.3.

J'ai découvert un logiciel appelé hostapd qui vous permet de créer un hotspot, mais qui nécessite deux interfaces. L'un connecté à Internet et l'autre sur lequel vous voulez créer le point d'accès ( tutorial here ). Le problème que j'ai, c'est que je n'ai pas de connexion Ethernet. L’interface wlan est utilisée pour se connecter à Internet.

Existe-t-il un moyen de créer le point d'accès sans fil sur la même interface connectée à Internet (comme le logiciel Connectify le fait sous Windows)? Je pensais créer une interface virtuelle (comme celle que airmon-ng crée pour surveiller le wifi) et l'utiliser comme deuxième interface. Est-ce possible?

UPDATE

Voici ce que j'ai pu faire jusqu'à présent:

1) Créer 2 interfaces (une en tant que station et l'autre en tant que point d'accès)

  iw phy phy0 interface add mySta type station
  iw phy phy0 interface add myAcc type __ap

2) Donnez-leur un identifiant Mac séparé

ifconfig myAcc hw ether A4:17:FE:6E:00:53
ifconfig myAcc 192.168.27.1 up

3) démarrez hostapd sur l'interface myAcc

4) démarrez Dnsmasq pour fournir l’adresse IP aux périphériques connectés

Tout cela fonctionne. Les périphériques peuvent se connecter à ce réseau et obtenir une adresse IP. La prochaine étape consiste à fournir un masquage IP

iptables --table nat --append POSTROUTING --out-interface mySta -j MASQUERADE
iptables --append FORWARD --in-interface myAcc -j ACCEPT

Mais l'interface mySta ne parvient plus à se connecter à Internet. Il est capable d’obtenir l’Essid mais il ne peut pas obtenir l’adresse IP.

La commande dhclient mySta ne montre aucun message et donne l'erreur suivante:

ls: cannot access /var/run/netconfig//mySta/: No such file or directory

Quelqu'un peut-il comprendre comment obtenir l'adresse IP?

13
adityap174

Pour quiconque d'autre face à ce problème, le problème était avec l'adresse mac. J'ai démarré l'interface du point d'accès, lui ai donné une adresse mac. Ensuite, après avoir exécuté hostapd, ajouté l'interface de la station, lui a donné une adresse MAC différente et l'a connectée au réseau, puis a donné l'adresse IP de la station en tant que passerelle par défaut des clients via Dnsmasq.

Maintenant tout fonctionne correctement.

Comme l'a souligné Diblo Dk, vous pouvez utiliser des interfaces virtuelles et factices, mais hostapd ne fonctionne pas avec elles. Je ne sais pas pourquoi.

Voici les étapes:

  1. désactiver le service de gestionnaire de réseau car il interfère avec les interfaces virtuelles
  2. baissez wlan0 en utilisant ifconfig wlan0 vers le bas
  3. créer une interface de point d'accès à l'aide de la commande iw (type __ap), attribuez-lui une adresse MAC et IP différente
  4. activer hostapd sur cette interface d'accès
  5. utilisez dnsmasq pour affecter les adresses IP des clients qui se connectent à cette interface et indiquez la passerelle par défaut comme adresse IP de l'interface de la station à créer
  6. activer Dnsmasq à l'interface d'accès. Maintenant, le client pourra se connecter au point d'accès et obtenir des adresses IP.
  7. créez une nouvelle interface (type station), affectez-la à une adresse MAC distincte et connectez-la au réseau en affectant essid et en utilisant dhclient pour obtenir une adresse IP.
  8. si nécessaire, effectuez un masquage IP via la commande iptables
8
adityap174

Configurer un réseau factice

1 Ouvrez la console

su -

2 Vérifiez si vous avez un pilote factice

modprobe -l | grep /net/dummy.ko

(!) Si vous n'avez pas de pilote factice, allez à " Créez un module de noyau ".

3 Charger le pilote factice

modprobe dummy

(!) Ne l'ajoutez pas au démarrage s'il échoue.

4 Testez dummy0 en le mettant en place

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

Cela vous donnera une sortie similaire.

dummy0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
        inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
        ...

5 Ajoutez le pilote factice au démarrage

Éditez le fichier sys du noyau.

nano /etc/sysconfig/kernel

et ajoutez " dummy " à MODULES_LOADED_ON_BOOT.

MODULES_LOADED_ON_BOOT = "..."

Ex. MODULES_LOADED_ON_BOOT = "dummy vmcp".

6 Configurez les paramètres réseau pour dummy0

Créez le fichier ifcfg-dummy0.

nano /etc/sysconfig/network/ifcfg-dummy0

Ajoutez au fichier ifcfg-dummy0:

# Configuration for dummy0
BOOTPROTO=static

# This line ensures that the interface will be brought up during boot.
STARTMODE=onboot

# dummy0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1



Créer un module de noyau

1 Installez d'abord les choses nécessaires

Ouvrez YaST.

Accédez à Software -> Software Management.

Cocher:

Development 

[X] Base Development
[X] Linux Kernel Development
[X] C/C++ Development

2 Retour à la console et accédez au code source du noyau

cd /usr/src/linux

3 Importez la configuration actuelle du noyau

zcat /proc/config.gz > .config

4 Ouvrez le menuconfig du noyau

make menuconfig

5 Ajouter le support du pilote réseau factice

Accédez à Device Drivers -> Network device support

* Network core driver support
    M Dummy net driver support

(!) Si vous avez un astérisque à côté de "Prise en charge du pilote réseau principal", vous pouvez ignorer les étapes 7 et 9.

6 Compilez le noyau

make -j(n+1)

Où (n + 1) = nombre de cœurs de la CPU plus un utilisé pour accélérer la compilation. Make -j5 est utilisé pour quatre cœurs.

7 Installez le nouveau noyau

make install

8 Installez les modules

make modules_install

9 Chargez le nouveau noyau

reboot



Définition d’un VIPA (partie concernant le module de chargement et ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA
Configurez les IP statiques: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 et l’installation de nouvelles versions du noyau Linux à partir de kernel.org: http://forums.opensuse.org/blogs/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - Comment compiler un noyau pour débutants: http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html

2
Diblo Dk

Créer une interface virtuelle

Créez un fichier ifcfg-wlan0: 0

nano /etc/sysconfig/network/ifcfg-wlan0:0

Ajouter au fichier ifcfg-wlan0: 0:

DEVICE=wlan0:0

# Configuration for wlan0:0
ONBOOT=yes

# This line ensures that the interface will be brought up during boot.
BOOTPROTO=static

# wlan0:0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1

Les commandes pour activer l'interface

ifup wlan0:0

Remarque: L'arrêt de l'interface principale ferme également tous ses alias. Les alias peuvent être arrêtés indépendamment des autres interfaces.

Vérifie si l'interface fonctionne

ifconfig

Cela vous donnera une sortie similaire.

wlan0:0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
         inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
         ...

http://forums.opensuse.org/english/get-technical-help-here/network-internet/461132-os-11-4-network-manager-default-connection-can-handle-virtual- interfaces.html # post2350426

1
Diblo Dk