ubuntuusers.de

WLAN_Router

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |
Dieses Thema ist die Diskussion des Artikels WLAN_Router.

elektronenblitz63

(Themenstarter)
Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Danke, das ging ja flott. Habe jetz noch den Link zu "Internetverbindungsfreigabe" aktiviert.

mniess

Anmeldungsdatum:
17. Oktober 2005

Beiträge: 366

Wohnort: Hamburg

Hi, würde den Artikel gerne etwas überarbeiten. Speziell das Skipt instant_AP sieht sehr unsauber aus. Ich habe es nicht mal zum Laufen bekommen. Nur so als Beispiel hier ein Skript, welches ich seit einer Weile benutze

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh
# This script instantly creates an AP. hostapd and dnsmasq need to be properly
# configured, but disabled (e.g. with BUM). Run with start/stop. configure
# according to hostapd and dnsmasq configuration. Before running, $IF_WAN should
# have an internet connection.

## Configuration ##
IF_WLAN=wlan0          # WiFi interface
IF_WAN=eth0            # WAN interface (with internet connection)
NET_ADDR=10.10.0.1     # access point IP
SUBNET=10.10.0.0/24    # subnet to be used
NETMASK=255.255.255.0  # netmask to be used

## Do not change anything below this line ##
start_ap (){
  ifconfig $IF_WLAN down
  ifconfig $IF_WLAN $NET_ADDR netmask $NETMASK
  ifconfig $IF_WLAN up
  iwconfig $IF_WLAN mode managed

  iptables -F
  iptables -X
  iptables -t nat -F
  iptables -A FORWARD -i $IF_WAN -o wlan0 -s $SUBNET -m conntrack --ctstate NEW -j ACCEPT
  iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  iptables -t nat -A POSTROUTING -o $IF_WAN -j MASQUERADE
  sysctl -w net.ipv4.ip_forward=1

  /etc/init.d/dnsmasq restart
  /etc/init.d/hostapd restart
}

stop_ap (){
  /etc/init.d/dnsmasq stop
  /etc/init.d/hostapd stop
  iptables -F
  iptables -X
  iptables -t nat -F
  ifconfig $IF_WLAN down
}

help (){
  echo "This script instantly creates an AP. hostapd and dnsmasq need to be properly"
  echo "Edit the script for configuration."
  echo "USAGE:\n\t`basename $0` (start|stop)"
}

if [ `whoami` != "root" ]; then
  echo "`basename $0` must be run as root or with sudo"
  exit 1
fi

case $1 in
 start) start_ap;;
  stop) stop_ap;;
     *) help;;
esac

Das ist jetzt auch nicht unbedingt ein Bild eines perfekten Bash-Skripts, aber man hat schnell einen Überblick, was da passiert und was man konfigurieren muss.

decembersoul

Anmeldungsdatum:
4. Mai 2007

Beiträge: 64

Hallo

Bei mir werden die up Befehle in der Interface nicht ausgeführt. Daher werden die iptables rules nicht gesetzt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
auto lo
iface lo inet loopback

#pre-up service network-manager stop


auto eth0
iface eth0 inet static
        address 192.168.1.98
        netmask 255.255.255.0
        broadcast 192.168.1.255
        gateway 192.168.1.1

auto wlan0
iface wlan0 inet static
        address 192.168.3.99
        netmask 255.255.255.0
        broadcast 192.168.3.255
        gateway 192.168.1.1
        up /sbin/iptables -F
        up /sbin/iptables -X
        up /sbin/iptables -t nat -F
        up /sbin/iptables -A FORWARD -o eth0 -s 192.168.0.0/16 -m conntrack --ctstate NEW -j ACCEPT
        up /sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
        up /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
        up /sbin/sysctl -w net.ipv4.ip_forward=1
        up /etc/init.d/hostapd restart
        up /etc/init.d/dnsmasq restart

Jemand eine Idee warum das so ist. Wenn ich die Befehle per "Hand" oder Skript ausführe, dann geht alles.

Enternix

Avatar von Enternix

Anmeldungsdatum:
11. November 2010

Beiträge: 145

Vielen Dank für den sehr nützlichen Artikel. Für mich, als Normal-Sterblichen, haben sich beim Lesen der ersten Hälfte (also bis zu #Instant-AP) dennoch ein paar Fragen aufgetan:

  • Im Artikel steht:

Eine Übersicht geeigneter Systemtreiber und WLAN-Karten findet man auf Linuxwireless.org

Ich habe also erst einmal mit hwinfo --wlan meine WLAN-Karte ermittelt. Eventuell könnte man also den Link http://wiki.ubuntuusers.de/Gerätemanager#hwinfo in den Wiki-Text einfügen. Auf Linuxwireless.org war ich dann erst einmal etwas verwirrt, wie ich aus der Tabelle herauslesen soll, ob sich meine WLAN-Karte dazu eignet, als Router zu fungieren. Ich vermute mal, dass die Spalte cfg80211 darüber Auskunft gibt? Da wäre ein kleiner Satz als Erklärung, für mich zumindest, sehr hilfreich.

  • Nachdem ich nun die vier Dateien /etc/network/interfaces, /etc/default/hostapd, /etc/hostapd.conf und /etc/dnsmasq.conf bearbeitet und den Netzwerkmanager ausgeschaltet hatte, versuchte ich über sudo /etc/init.d/networking restart das Netzwerk neu zu starten. Zurückgegeben wurde dann aber erst einmal die Warnung:

Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces

Vielleicht kann man die Warnung ignorieren. Einen WLAN Access-Point konnte ich so jedoch nicht erstellen. Das neue Netz wurde manchmal zwar angezeigt. Die Verbindung zum neuen Netz konnte ich jedoch, z.B. mit meinem Handy, nicht aufbauen. Erst nach einem Neustart meines Rechners funktionierte mein "neuer Router" fehlerfrei. Übrigens auch ohne, dass ich meinen Netzwerkmanager deinstalliert habe. Sollte man zum Wiki-Text hinzufügen, dass der Rechner eventuell neu gestartet werden sollte?

  • Um die Netzwerkkarte wieder in den Ursprungszustand zurückzusetzen, reicht es, die ursprünglichen Dateien /etc/network/interfaces und /etc/default/hostapd wiederherzustellen?

floreg

Anmeldungsdatum:
18. November 2012

Beiträge: Zähle...

Hallo elektronenblitz63,

ich hatte heute das Problem, dass "/etc/resolv.conf" keinen sinnvollen Inhalt hatte und damit auch keine DNS-Auflösung funktioniert hat.

Der Grund dafür war, dass "/sbin/dhclient" unter ubuntu 12.04.1 in der Grundkonfiguration keinen Update für "/etc/resolv.conf" macht. D.h. ich habe keinerlei Änderungen an den Konfigurationsdateien für "/sbin/dhclient" gemacht.

Ich habe deshalb folgende Änderungen an deinem Script "instant_AP.sh" gemacht:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# LAN aut.m über DHCP nur wenn kein Bridged-Mode gewählt
if [ "$Br" = "0" ] & [ "$A" = "1" ]
then
    echo "starte automatische LAN-Verbindung ..."
    # "löschen" von /var/lib/dhcp/dhclient.leases
    # wird von /sbin/dhclient $laniface neu befüllt
    echo "" > /var/lib/dhcp/dhclient.leases
    /sbin/dhclient $laniface
    # befülle /etc/resolv.conf
    echo setze DNS
    echo '# erzeugt durch instant_AdHoc.sh' | tee /etc/resolv.conf
    /usr/bin/awk '/domain-name-servers/ {print "nameserver" $3}' < /var/lib/dhcp/dhclient.leases | \
        tr -d ';' | tee -a /etc/resolv.conf
    echo $dns | awk {'print $1,$2'} | tee -a /etc/resolv.conf
    echo $dns | awk {'print $3,$4'} | tee -a /etc/resolv.conf
    echo $dns | awk {'print $5,$6'} | tee -a /etc/resolv.conf
    echo $dns | awk {'print $7,$8'} | tee -a /etc/resolv.conf
    echo $dns | awk {'print $9,$10'} | tee -a /etc/resolv.conf
fi

D.h. ich hole die Nameserver-Information aus der Datei "/var/lib/dhcp/dhclient.leases" unter dem Schlüsselwort "domain-name-servers". Die Datei "/var/lib/dhcp/dhclient.leases" wird durch "/sbin/dhclient $laniface" erzeugt.

Zur Sicherheit habe ich noch den Inhalt von "/var/lib/dhcp/dhclient.leases", dem Default-Speicherort von "/sbin/dhclient" für Leases, mit einer Leerzeile initialisiert. Ansonsten häufen sich dort "leases"-Einträge, wenn man "instant_AP.sh" häufiger aufruft.

Mein Router liefert nur einen Eintrag für "domain-name-servers". Ich konnte also nicht testen, ob das Script "instant_AP.sh" noch läuft, wenn unter "domain-name-servers" mehrere Einträge stehen.

Dann sollte man noch versuchen die Zeile

1
/sbin/iwconfig $wlaniface mode managed

für ubuntu Versionen größer gleich 12.04 auf das Kommando "iw" umzustellen, weil die "wireless-tools" nicht das Interface "nl80211" unterstützt, das bei "hostapd" verwendet wird.

Ich bin noch nicht dazu gekommen das mit "iw" auszuprobieren.

Gruß, floreg

Bema01

Anmeldungsdatum:
30. August 2007

Beiträge: Zähle...

Hallo Forengemeinde,

ich wollte nur einmal auf ein nützliches Tool hinweisen, mit dem es sehr einfach ist einen Wlan-Hostspot zu erstellen. http://nims11.wordpress.com/2012/11/26/hostapd-python-client/

Vielleicht könnte man ja das in den Wiki-Artikel als Alternative einbinden, das Tool hat bei mir sofort ohne vorherige Konfiguration von hostapd oder dhcpd funktioniert. Der Quellcode ist auf der Seite offen verfügbar. Das Tool benötigt Python, hostapd und dhcpd, welches im Paket isc-dhcp-server zu finden ist.

Grüße,

Bema01

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9384

Wohnort: Münster

Die Datei /etc/network/interfaces erlaubt keine Zeilenendkommentare; diese erzeugen syntaktische Fehler. Beispiele, insbesondere im Abschnitt Netzwerkbrücke deshalb überarbeitet.

Antworten |