Erstellen eines WLAN-Zugangspunkts auf einer einzigen Oberfläche in Linux

27374
adityap174

Ich versuche, auf meinem Linux-Laptop einen WLAN-Hotspot oder einen Zugangspunkt zu erstellen. Ich benutze Opensuse Kde 12.3.

Ich habe eine Software mit dem Namen " hostapdHotspot" gefunden, die zwei Schnittstellen erfordert. Einer ist mit dem Internet verbunden und der andere, auf dem Sie den Zugangspunkt erstellen möchten ( Tutorial hier ). Mein Problem ist, dass ich keine Ethernet-Verbindung habe. Die wlanSchnittstelle wird verwendet, um eine Verbindung zum Internet herzustellen.

Gibt es eine Möglichkeit, den Hotspot auf derselben Schnittstelle zu erstellen, die mit dem Internet verbunden ist (wie die Software, die connectify unter Windows ausführt)? Ich dachte daran, eine virtuelle Schnittstelle zu erstellen (wie die, airmon-ngdie zur Überwachung von Wifi erstellt wird) und sie als zweite Schnittstelle zu verwenden. Ist das möglich?

AKTUALISIEREN

Folgendes konnte ich bisher tun:

1) Erstellen Sie 2 Schnittstellen (eine als Station und die andere als Zugangspunkt).

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

2) Geben Sie ihnen eine separate Mac-ID

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

3) Starten Sie hostapd auf der myAcc-Schnittstelle

4) Starten Sie dnsmasq, um den angeschlossenen Geräten eine IP-Adresse bereitzustellen

All das funktioniert. Geräte können sich mit diesem Netzwerk verbinden und erhalten eine IP-Adresse. Der nächste Schritt ist das Bereitstellen von IP-Masquerading

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

Die mySta-Schnittstelle kann jedoch keine Verbindung zum Internet herstellen. Es ist in der Lage, das Essid, aber nicht die IP-Adresse zu erhalten.

Der Befehl dhclient mySta zeigt keine Nachricht an und gibt nach einiger Zeit den Fehler aus:

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

Kann jemand herausfinden, wie man die IP-Adresse erhält?

13
Habe es mit "Dummy-Netz-Treiberunterstützung" (Kernel-Treiber) als Modul versucht. Ich kann Ihnen nicht mehr helfen, weil ich openSUSE nicht kenne. Aber ich kann sehen, dass es Fehler gibt, die ab Version 11 gemeldet werden, wenn sie mit Yast erstellt wird. Also sei vorsichtig. Diblo Dk vor 10 Jahren 0
Ich kann Ihnen natürlich helfen, wenn es auf die gleiche Weise (Kernel-Konfiguration, Netzwerk-Setup) wie in Gentoo, Debian oder Ubuntu möglich ist. Diblo Dk vor 10 Jahren 0
Jede Hilfe wird geschätzt. Ich verwende die Yast-Tools nicht als solche. Die Konfigurationen stammen aus einem Tutorial zu Ubuntu. Das Dateisystem und die Konfigurationen sind nahezu identisch. adityap174 vor 10 Jahren 0
Was ist deine Kernelversion? Diblo Dk vor 10 Jahren 0
Kernel: x86_64 Linux 3.7.10-1.16-Desktop adityap174 vor 10 Jahren 0
Sie müssen wissen, welche Probleme Sie selbst gelöst haben, damit die Antwort möglicherweise aktualisiert wird. :) Diblo Dk vor 10 Jahren 0
Dieselbe Frage noch einmal: http://superuser.com/questions/639479/linux-share-wireless-connection-through-the-same-wireless-interface/639496#639496 Und nochmal: http://superuser.com/questions/ 649220 / a-wifi-ap-with-a-single-nic / 656574 # 656574 imz -- Ivan Zakharyaschev vor 10 Jahren 0

3 Antworten auf die Frage

8
adityap174

Für alle anderen, die mit diesem Problem konfrontiert waren, war das Problem die Adresse des Mac. Ich habe die Zugangspunktschnittstelle gestartet und eine MAC-Adresse angegeben. Nachdem Hostapd ausgeführt wurde, fügte er die Stationsschnittstelle hinzu, gab eine andere MAC-Adresse an, verband sie mit dem Netzwerk und gab die IP-Adresse der Station als Standardgateway der Clients über dnsmasq an.

Jetzt funktioniert alles einwandfrei.

Wie von Diblo Dk erläutert, konnten Sie virtuelle und Dummy-Schnittstellen verwenden, aber Hostapd arbeitete nicht mit ihnen. Ich weiß nicht warum.

Hier sind die Schritte:

  1. Deaktivieren Sie den Network Manager-Dienst, da er virtuelle Schnittstellen stört
  2. Schalten Sie wlan0 mit ifconfig wlan0 herunter
  3. Erstellen Sie eine Zugriffspunktschnittstelle mit dem Befehl iw (Typ __ap) und weisen Sie eine andere MAC- und IP-Adresse zu
  4. Aktivieren Sie hostapd an dieser Zugriffsschnittstelle
  5. Verwenden Sie dnsmasq, um den verbindenden Clients an dieser Schnittstelle IP-Adressen zuzuweisen, und geben Sie das Standard-Gateway als IP-Adresse der zu erstellenden Stationsschnittstelle an
  6. Aktivieren Sie dnsmasq an der Zugriffsschnittstelle. Nun kann sich der Client mit dem Zugangspunkt verbinden und IP-Adressen erhalten.
  7. Erstellen Sie eine neue Schnittstelle (Typstation), weisen Sie dieser eine separate MAC-Adresse zu, und verbinden Sie sie mit dem Netzwerk, indem Sie essid zuweisen und mithilfe von dhclient die IP-Adresse erhalten.
  8. Falls erforderlich, führen Sie das IP-Masquerading über den Befehl iptables aus
Um es einfach zu sagen, WTF hostapd :) Diblo Dk vor 10 Jahren 0
Können Sie Ihre Antwort mit den genauen Schritten aktualisieren, die Sie gemacht haben? Dies ist definitiv eine Antwort, die ich speichern möchte. Diblo Dk vor 10 Jahren 0
updated :) want more details ? adityap174 vor 10 Jahren 0
Cooler Weg, um das Problem zu umgehen :) Diblo Dk vor 10 Jahren 0
Welchen Dongle / Chipsatz hast du benutzt? Alvin vor 9 Jahren 0
@ adityap174 Hallo, ich bin mir immer noch nicht sicher, wie du das Setup eingerichtet hast? Können Sie meine Frage unter https://unix.stackexchange.com/questions/411478/hostapd-on-single-interface überprüfen Veerendra vor 6 Jahren 0
2
Diblo Dk

Richten Sie ein Dummy-Netzwerk ein

1 Öffnen Sie die Konsole

su - 

2 Prüfen Sie, ob Sie einen Dummy-Treiber haben

modprobe -l | grep /net/dummy.ko 

(!) Wenn Sie keinen Dummy-Treiber haben, gehen Sie zu " Kernel-Modul erstellen ".

3 Laden Sie den Dummy-Treiber

modprobe dummy 

(!) Fügen Sie es nicht dem Start hinzu, wenn es fehlschlägt.

4 Testen Sie das Dummy0, indem Sie es aufstellen

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up  ifconfig 

Sie erhalten eine ähnliche Ausgabe.

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 Fügen Sie dem Start einen Dummy-Treiber hinzu

Bearbeiten Sie die sys-Datei des Kernels.

nano /etc/sysconfig/kernel 

und füge " dummy " zu MODULES_LOADED_ON_BOOT hinzu.

MODULES_LOADED_ON_BOOT = "..." 

Ex. MODULES_LOADED_ON_BOOT = "vmcp-Dummy".

6 Konfigurieren Sie die Netzwerkeinstellungen für Dummy0

Erstellen Sie die Datei ifcfg-dummy0.

nano /etc/sysconfig/network/ifcfg-dummy0 

Hinzufügen zur ifcfg-dummy0-Datei:

# 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 



Kernel-Modul erstellen

1 Zuerst die notwendigen Dinge installieren

Öffnen Sie YaST.

Navigieren Sie zu Software-> Software Management.

Tick:

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

2 Kehren Sie zur Konsole zurück und navigieren Sie zur Kernel-Quelle

cd /usr/src/linux 

3 Importieren Sie die aktuelle Kernelkonfiguration

zcat /proc/config.gz > .config 

4 Öffnen Sie das Kernel menuconfig

make menuconfig 

5 Fügen Sie die Unterstützung für Dummy-Netztreiber hinzu

Navigieren Sie zu Device Drivers->Network device support

* Network core driver support M Dummy net driver support 

(!) Wenn Sie ein Sternchen neben "Unterstützung für Netzwerkkerntreiber" haben, können Sie die Schritte 7 und 9 überspringen.

6 Kompilieren Sie den Kernel

make -j(n+1) 

Dabei ist (n + 1) = Anzahl der CPU-Kerne plus einer, die zum Beschleunigen des Kompilierens verwendet wird. Verwenden Sie für vier Kerne make -j5.

7 Installieren Sie den neuen Kernel

make install 

8 Installieren Sie die Module

make modules_install 

9 Laden Sie den neuen Kernel

reboot 



Definieren eines VIPA (Der Teil über das Laden des Moduls und des ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA
Statische IPs konfigurieren: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 und Installieren neuer Linux-Kernel-Versionen von kernel.org: http://forums.opensuse.org/blogs/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - So kompilieren Sie einen Kernel für Neulinge : http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html

Thanks for such a detailed explanation. I tried this method. I was able to create dummy0 interface and start in on boot. But how do you make it a wireless interface ? iwconfig gives : dummy0 no wireless extensions. hostapd doesn't work with this. It gives error : nl80211 driver initialization failed adityap174 vor 10 Jahren 0
Ja, das Problem ist, dass Sie einen IP-Konflikt haben. Es könnte jedoch mit Pseudo-Modul (mehrere IP-Adressen zuweisen) durchgeführt werden. Gib mir etwas Zeit, um nach deinem System zu suchen. Diblo Dk vor 10 Jahren 0
Sie können auch hier https://www.linode.com/wiki/index.php/Configure_Static_IPs#OpenSUSE nachsehen. Es könnte sein, dass Sie sehen, wie Sie mit wlan umgehen können :) Diblo Dk vor 10 Jahren 0
, das Problem ist, dass Sie einen IP-Konflikt bekommen * Diblo Dk vor 10 Jahren 0
1
Diblo Dk

Virtuelle Schnittstelle erstellen

Erstellen Sie die Datei ifcfg-wlan0: 0

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

Zu ifcfg-wlan0: 0 Datei hinzufügen:

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 

Die Befehle zum Aktivieren der Schnittstelle

ifup wlan0:0 

Hinweis: Durch das Herunterfahren der Hauptschnittstelle werden auch alle Aliasnamen heruntergefahren. Aliase können unabhängig von anderen Schnittstellen heruntergefahren werden.

Prüfen Sie, ob die Schnittstelle funktioniert

ifconfig 

Sie erhalten eine ähnliche Ausgabe.

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/deutsch/get-technical-help-here/network-internet/461132-os-11-4-network-manager-default-connection-can-handle-virtual-interfaces.html# post2350426

even this was not working with hostapd. It gave the same error : Could not open file /sys/class/net/dummy0/phy80211/name: No such file or directory with dummy0 and Could not open file /sys/class/net/wlan0:0/phy80211/name: No such file or directory with the virtual interface. Thanks for all your help. :) The problem was with mac address. I have upvoted your answers and i am posting the solution for others. adityap174 vor 10 Jahren 0