Erstellen eines WiFi Access Points auf einer einzelnen Oberfläche unter Linux

14

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

Ich habe eine Software namens gefunden, mit hostapdder Sie einen Hotspot erstellen können, für die jedoch zwei Schnittstellen erforderlich sind. Einer ist mit dem Internet verbunden und der andere, auf dem Sie den Zugangspunkt erstellen möchten ( Tutorial hier ). Das Problem, das ich habe, ist, dass ich keine Ethernet-Verbindung habe. Über die wlanSchnittstelle wird eine Verbindung zum Internet hergestellt.

Gibt es eine Möglichkeit, den Hotspot auf derselben Schnittstelle zu erstellen, die mit dem Internet verbunden ist (wie die Software connectify unter Windows)? Ich überlegte, eine virtuelle Schnittstelle (wie die airmon-ngzur Überwachung von WLAN) zu erstellen und 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-Oberfläche

4) Starten Sie dnsmasq, um die IP-Adresse für die angeschlossenen Geräte bereitzustellen

Das alles funktioniert. Geräte können eine Verbindung zu diesem Netzwerk herstellen und eine IP-Adresse erhalten. Der nächste Schritt ist die Bereitstellung 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 zu erhalten, aber es kann die IP-Adresse nicht erhalten.

Der Befehl dhclient mySta zeigt keine Meldung 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?

adityap174
quelle
Hast du mit "Dummy net driver support" (Kerneltreiber) als Modul ausprobiert. Ich kann dir nicht mehr helfen, da ich openSUSE nicht kenne. Aber ich kann sehen, dass es Fehler ab Version 11 gibt, wenn es mit Yast erstellt wird. Also sei vorsichtig.
Diblo Dk
Ich kann Ihnen natürlich helfen, wenn dies auf die gleiche Weise (Kernel-Konfiguration, Netzwerk-Setup) wie in Gentoo, Debian oder Ubuntu möglich ist.
Diblo Dk
Jede Hilfe wird geschätzt. Ich benutze die Yast-Tools nicht als solche. Die Konfigurationen stammen aus einem Tutorial zu Ubuntu. Das Dateisystem und die Konfigurationen sind nahezu identisch.
Adityap174
Was ist deine Kernel-Version?
Diblo Dk
Kernel: x86_64 Linux 3.7.10-1.16-desktop
adityap174

Antworten:

9

Für alle anderen, die mit diesem Problem konfrontiert sind, lag das Problem bei der Mac-Adresse. Ich habe das Access Point Interface gestartet und ihm eine MAC-Adresse gegeben. Nachdem Sie hostapd ausgeführt haben, haben Sie die Stationsschnittstelle hinzugefügt, ihr eine andere Mac-Adresse zugewiesen und sie mit dem Netzwerk verbunden sowie die IP-Adresse der Station als Standard-Gateway der Clients über dnsmasq angegeben.

Jetzt funktioniert alles einwandfrei.

Wie von Diblo Dk erwähnt, konnte man virtuelle und Dummy-Schnittstellen verwenden, aber Hostapd funktionierte nicht mit ihnen. Ich weiß nicht warum.

Hier sind die Schritte:

  1. Deaktivieren Sie den Netzwerkmanager-Dienst, da er die virtuellen Schnittstellen stört
  2. Schalten Sie wlan0 mit ifconfig wlan0 down aus
  3. Erstellen Sie eine Access Point-Schnittstelle mit dem Befehl iw (Typ __ap), und weisen Sie ihr eine andere MAC- und IP-Adresse zu
  4. Schalten Sie hostapd an dieser Zugriffsschnittstelle ein
  5. Verwenden Sie dnsmasq, um die verbindenden Clients an dieser Schnittstelle mit IP-Adressen zu versehen, und geben Sie das Standard-Gateway als IP der zu erstellenden Stationsschnittstelle an
  6. Schalten Sie dnsmasq an der Zugriffsschnittstelle ein. Jetzt kann der Client eine Verbindung zum Access Point herstellen und IP-Adressen abrufen.
  7. Erstellen Sie eine neue Schnittstelle (Typ Station). Weisen Sie ihr eine separate MAC-Adresse zu und verbinden Sie sie mit dem Netzwerk, indem Sie essid zuweisen und dhclient verwenden, um die IP-Adresse zu erhalten.
  8. Führen Sie bei Bedarf eine IP-Maskierung über den Befehl iptables durch
adityap174
quelle
um es klar zu sagen, WTF hostapd :)
Diblo Dk
Können Sie Ihre Antwort mit den genauen Schritten aktualisieren, die Sie gemacht haben? Dies ist definitiv eine Antwort, die ich gerne speichern würde.
Diblo Dk
aktualisiert :) Möchten Sie weitere Details?
Adityap174
Coole Art, um das Problem zu
umgehen
Welchen Dongle / Chipsatz haben Sie verwendet?
Alvin
2

Richten Sie ein Dummy-Netzwerk ein

1 Öffnen Sie die Konsole

su -

2 Überprüfen Sie, ob Sie einen Dummy-Treiber haben

modprobe -l | grep /net/dummy.ko

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

3 Laden Sie den Dummy-Treiber

modprobe dummy

(!) Füge es nicht zum Start hinzu, wenn es fehlschlägt.

4 Testen Sie 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 Kernel-Sys-Datei.

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

Zur ifcfg-dummy0-Datei hinzufügen:

# 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



Kernelmodul erstellen

1 Installieren Sie zuerst die notwendigen Dinge

Ö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 Kernelquelle

cd /usr/src/linux

3 Importieren Sie die aktuelle Kernel-Konfiguration

zcat /proc/config.gz > .config

4 Öffnen Sie die Kernel-Menükonfiguration

make menuconfig

5 Fügen Sie Unterstützung für Dummy-Netz-Treiber hinzu

Navigieren Sie zu Device Drivers->Network device support

* Network core driver support
    M Dummy net driver support

(!) Wenn Sie ein Sternchen neben "Network Core Driver Support" haben, können Sie die Schritte 7 und 9 überspringen.

6 Kompilieren Sie den Kernel

make -j(n+1)

Wobei (n + 1) = Anzahl der CPU-Kerne plus einer, um die Kompilierung zu beschleunigen. 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 (Teil zum Laden von Modulen und ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA
Konfigurieren Sie statische IPs: 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 - Kompilieren eines Kernels für Newbies : http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html

Diblo Dk
quelle
Vielen Dank für eine so ausführliche Erklärung. Ich habe diese Methode ausprobiert. Ich war in der Lage, Dummy0-Schnittstelle zu erstellen und beim Booten zu starten. Aber wie macht man es zu einer drahtlosen Schnittstelle? iwconfig gibt: dummy0 keine drahtlosen Erweiterungen. Hostapd funktioniert damit nicht. Es gibt Fehler: nl80211 Treiberinitialisierung fehlgeschlagen
adityap174
Ja, das Problem ist, dass Sie einen IP-Konflikt haben. Dies kann jedoch mit dem Pseudo-Modul (Zuweisen mehrerer IP-Adressen) erfolgen. Geben Sie mir etwas Zeit, um nach Ihrem System zu suchen.
Diblo Dk
Sie können auch hier nachschauen: linode.com/wiki/index.php/Configure_Static_IPs#OpenSUSE Es könnte sein, dass Sie sehen können, wie man mit WLAN umgeht :)
Diblo Dk
Das Problem ist, dass Sie einen IP-Konflikt bekommen *
Diblo Dk
1

Erstellen Sie eine virtuelle Schnittstelle

Erstellen Sie eine ifcfg-wlan0: 0-Datei

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

Hinzufügen zu ifcfg-wlan0: 0 Datei:

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: Beim Herunterfahren der Hauptschnittstelle werden auch alle Aliase heruntergefahren. Aliase können unabhängig von anderen Schnittstellen heruntergefahren werden.

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

Diblo Dk
quelle
Auch dies funktionierte nicht mit Hostapd. Es gab den gleichen Fehler: Konnte die Datei / sys / class / net / dummy0 / phy80211 / name nicht öffnen: Keine solche Datei oder Verzeichnis mit dummy0 und Konnte die Datei / sys / class / net / wlan0: 0 / phy80211 / name nicht öffnen: Keine solche Datei oder Verzeichnis mit der virtuellen Schnittstelle. Danke für deine Hilfe. :) Das Problem war mit der Mac-Adresse. Ich habe Ihre Antworten positiv bewertet und poste die Lösung für andere.
Adityap174