ubuntuusers.de

Wireless LAN - Setup Skript

Status: Gelöst | Ubuntu-Version: Kubuntu 6.10 (Edgy Eft)
Antworten |

xapient

Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

LINK ZUR AKTUELLEN VERSION >>

lanconfig.tar.gz

(Für den Desktop empfehle ich zusätzlich KNEMO aus den Paketquellen zu installieren zur Überwachung der Interfaces)
http://www.kde-apps.org/content/show.php?content=12956
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Background:
Leider muss immer wieder aufs Neue erfahren, dass es nach wie vor eine nervtötende Sache ist wlan unter Linux zu betreiben. Ich habe es mit “Netgo”, “Wireless Assistant”, “Kwifimanager” und dem “Kcontrol center” versucht. Sie alle bieten ein leicht verständliches GUI um die wichtigsten Daten einzugeben und einen “OK” oder “verbinden” Button welcher das Ganze absegnen und umsetzen sollte….
sollte.. letztlich lande ich doch immer wieder in einer Shell und erledige es “von Hand” - sei es um einen default Gateway einzutragen (oder einen doppelt gesetzten zu entfernen) oder einfach um eth0(lan) abzudrehn, welches der Konfiguration trotzt und dennoch “up” und konfiguriert eth1(wlan) im Wege steht…. Kwifimanager geht sowieso nicht bevor ich nicht über die Einstellungen "kcmwifi" gestartet habe um dort auf "aktivieren" zu klicken.. und dann ist der 42 mal zuvor definierte default GW erst wieder nicht gesetzt... die ganzen GUI's brauchen mindestens 3 Klicks und eine Passworteingabe zu viel für meinen Geschmack... whatever... 🙄 🙄

An und für sich würde ich mich auch über eine DAU sichere step by step Anleitung freuen um mit einem dieser grafischen Netzwerkhilfen zurecht zu kommen.. aber eigentlich ist das herumgeklicke ohnehin nicht so wirklich mein Fall.... 😉
So dachte ich mir ich könne viel Zeit sparen, würde ich die ganzen nutzlosen GUI’s wegschmeissen und gleich zur Tastatur greifen. Also schrieb ich ein kleines Shell Script und siehe da - es funktioniert.. .. (das ist wahrlich verwunderlich denn es ist quasi mein erster Gehversuch in der Bash mit Skripten 😳 )

Funktionsumfang: (Stand: 06.06.07 | Aktuell: siehe "Threadende")

  • LAN mit statischer IP

  • LAN mit DHCP

  • WLAN mit statischer IP

  • WLAN mit DHCP

  • WEP mit wpa_supplicant

  • WPA mit wpa_supplicant

  • WPA2 mit wpa_supplicant

  • VPN Funktion (Openvpn / Bridged Networking)

  • DNS Server kann gesetzt werden

  • Profile werden in einzelnen Profildateien in /etc/network/lanconfig/*.profile abgelegt.

  • Das Skript kann auf Klick auf das mitgelieferte Programmicon in einem xterm gestartet werden bzw. aus der Konsole

  • kleine Goodies im Script, wie zB Ping, Auflisten der Profile, Anzeige der ifconfig, route und DNS Einstellungen

  • ein kleines install/uninstall Script

  • Konsole aufruf mit Parameterübergabe (sofortstart eines Profils)

  • add/delete/edit profiles (neue Profile können über das Skript angelegt werden)

  • auto profile selection (Anhand eines ESSID - Profil - Abgleichs wird die "richtige" Wahl getroffen)

  • automatische Spracherkennung (Deutsch/Englisch)

  • Readme / Help

Interna:
Zwei DNS Server können definiert werden. Diese werden in die /etc/resolv.conf eingefügt.
Das LAN wird mit ifconfig konfiguriert und mit route add der defaultgateway gesetzt. Bei DHCP kommt dhclient zum Einsatz.
Bei WLAN wird eine wpa_supplicant.conf erzeugt und mit wpa_supplicant, ifconfig und route konfiguriert.
VPN verwendet Openvpn, ifconfig, brctl (bridge utils), route.

Das Skript geht immer davon aus, dass nur 2 Network-Interfaces vorhanden sind.. lan und wlan.. das jeweils nicht gebrauchte wird deaktiviert wird um nicht zu interferieren ..
Spezialfälle sind in diese Überlegung nicht eingebracht..

____________________________________________________________
Wer also Zeit und Muse hat (und minimalen Tau vom shell scripting) möge mir helfen das Ding zu verbessern.
Ich weiss es gibt davon sicher schon ne ganze Menge.. ich sehe das alledings als Lernmöglichkeit.

Vielen Dank für alle konstruktiven Vorschläge, Code stückchen.. etc.
Special THX to FireHawk, JKW und Nobuddy und alle anderen die hier mitbasteln und ideen einbringen..

Moderiert von V for Vortex:

auf Wunsch von xapient ausnahmsweise geändert (Text für künftige Versionen "verallgemeinert", siehe fettgedruckte Teile)

C.R.I.Z

Avatar von C.R.I.Z

Anmeldungsdatum:
25. April 2006

Beiträge: 686

Hab zwar keine große Ahnung vom "Skripten", aber das was du geschrieben hast funktioniert bei mir super.
Warum schaffen das die blöden GUI Dinger nicht auch?
Bloß bei der Eingabe des WEP Passwortes hab ich bedenken.
Das kann man aus dem Skript ja so raus lesen.
Ist das nicht etwas riskant?

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

fein.. fein.. (das einzige was bei mir noch manchmal den zugang blockiert ist die firewall..)

@riskant??: nein.. denn um das lesen zu können müsste man sich ja bereits in dein netz eingeklinkt haben.. du musst das skript ja nicht unbedingt über samba freigeben *g*.... zudem kannst du dein passwort sowieso in der /etc/network/interfaces auslesen sofern du es im kontrol center eigegeben hast....

man könnte natürlich die datei rechte entsprechend bearbeiten..

C.R.I.Z

Avatar von C.R.I.Z

Anmeldungsdatum:
25. April 2006

Beiträge: 686

Ich hab das Script im home liegen, wäre es wo anders besser aufgehoben?

edit:
Wäre es nicht besser zu jedem LAN Profil den jeweiligen DNS Server einzugeben?
Manche haben bestimmt mehr als zwei LAN und vor allem mehr als zwei WLAN Einstellungen.
Das Skript wäre dann flexibler.

C.R.I.Z

Avatar von C.R.I.Z

Anmeldungsdatum:
25. April 2006

Beiträge: 686

Ich hab da mal was gebastelt.
(Die .tif in .sh umbenennen)

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

@speicherort: liegt bei mir auch im home mit link aufs skript in der "kiba-dock" – wieso auch nicht..

Danke für den Vorschlag!
Ich habe jedoch die ORSN Domain Name Server eingetragen. Diese sind offen zugängig für jeden (unabhängig vom Provider), daher sollte man diese mit jedem Profil problemlos lesen können.. Ich habe es aber dennoch so eingestellt, dass man die DNS bei jedem Profil separat definiert.

Weiters habe ich das ganze etwas überarbeitet und vorallem auch die Möglichkeit eingebaut ein OpenVPN, also ein virtuelles Netzwerk einzurichten. (Die Installation von OpenVPN, das Erstellen der Schlüssel und der Konfigurationsdatei muss selbstverständlich vorher geschehen sein. http://www.pc-portal.at/thread.php?id=534 )
Das Skript kann lediglich OpenVpn starten, den virtuellen Adapter konfigurieren bzw. auch mittels "bridge utils" ein "bridged Network" einrichten (hierbei wird das gesamte LAN mit dem VPN Server verbunden und auch "broadcasts" gehen drüber (genial zum Zocken über das Internet im "LAN"))

Sooooo.....

JKW

Avatar von JKW

Anmeldungsdatum:
24. Oktober 2006

Beiträge: 254

sieht gut aus!

und ja .. verstehe ich auch nicht warum es sowas nicht in GUI form gibt ...
ich hatte das gleiche problem und habs auch fast gleich gelößt.
Bei mir kam dazu das sich manchmal die Hotspots verabschiedet haben wenn zuviele Studenten gleichzeitig eingeloggt waren und ich daher bei meinem script ne endlosschleife brauchte die immer wieder guckt ob ich noch verbunden bin

klappt auch seit nem monat ganz gut .. vielleicht hilfs dir ja weiter ( wobei du da weiter bist als ich glaube ich ) http://www.ubuntuusers.de/paste/7632/

gruß JKW

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

heya.. sehr fein.. sind ein paar tolle sachen drin in deinem skript die ich noch gerne einbauen würde.. ... eben das scannen nach netzen und das verbinden per dhcp und so.. was ich da zusammengebastelt hab funktioniert ja nur wenn man haargenau weiss welche daten man eingeben muss..

du hast auch channel und frequenz eingetragen.. wie auch immer.. daran hab ich gar net gedacht *g*

was ich allerdings nit versteh ist, dass du die verbindung wieder "manuell" aufbauen musst.. habe jetzt eine woche lang in einem sehr schwachen netz gesurft wo die verbindung anscheinend alle 5 minuten mal ausgesetzt hat.. (knemo meldete zumindest: disconnected) doch sekunden später schrieb knemo auch schon wieder "connection established" ... sah für mich so aus als ob das ohnehin automatisch geschieht...

JKW

Avatar von JKW

Anmeldungsdatum:
24. Oktober 2006

Beiträge: 254

hi, das mit den frequenzen war notwendig .. ich weiss nicht warum, aber ohne findet er den hotspot nicht ... vielleicht gibt es auch hotspots dich gleich heißen und auf dem gleichen channel senden aber einer anderen frequenz ( keine Ahnung ob frequenz und channel nicht zusammenhängen ) jedenfalls ging es nur so

ich könnte mir folgendes vorstellen: wenn du eine zeitlang kein packet vom Hotspot bekommst sagt dir knemo disconnected, aber kurz drauf bekommste wieder eins und bist wieder online ... bei mir ist es vielleicht so das sich der hotspot komplett abschaltet oder mich gekickt hat aus irgendeinem grund .. jedenfalls kommt das bei uns in der uni häufiger vor daher war die schleife sowohl notwendig auch eine gute sache ... so bin ich innerhalb kürzester zeit wieder online .. 😉
mfg JKW

C.R.I.Z

Avatar von C.R.I.Z

Anmeldungsdatum:
25. April 2006

Beiträge: 686

Arbeitest du noch an dem Skript?
Wenn das noch WPA könnte wäre es ja fast perfekt.
Nutze das Ding nämlich schon seit Februar täglich.

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

leider wenig zeit zur zeit - hab mich aber inzwischen mal etwas ins programmieren eingearbeitet... (muss ich doch mal lernen dacht ich mir) jedoch anderwertig.. (mach ein CMS und solche sachen) daher hab ich vorerst nichts weitergemacht an dem lansetupskript... DHCP hab ich noch eingebaut letztens soweit ich mich erinner.. da es aber immerwieder gelegenheiten gibt wo man so ein ding brauchen kann werd ichs wohl noch weiter ausfeilen..

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

http://xapient.net/stuff/files/linux/lanconfig.txt (v.0.2.2)

hab das ganze umgebaut.. anstelle von iwconfig verwende ich nun wpa_supplicant zum configurieren der interfaces... (wpa supplicant sollte auf jedem ubuntu bereits installiert sein und somit laufen)

da ich, wie bereits geschrieben, nur WEP habe konnte ich WPA noch nicht testen.. im skript müsste lediglich das profil angepasst werden und anstelle von $WEP, $WPA oder $WPA2 eingetragen werden.. dann sollte das werkl schon laufen..

ausserdem hab ich noch ein weiteres profil hinzugefügt welches die IPs per DHCP zieht!

danke schonmal fürs testen und evtl. vorschläge..

mfg xapient.

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hallo xapient,
was Ihr da gezaubert habt ist echt ne Wucht, auch wenn ich von dem allem keine Ahnung habe.

Mein Problem ist, daß mein WLAN mit WEB-Verschlüsselung funktioniert, aber mit WPA/WPA2 eben nicht.
Och habe das Wiki schon rauf und runter gelesen, aber irgendwie komme ich einfach nicht weiter.

Ich schreibe hier mal meine Daten, bei Schlüssel usw. verwende ich mal Fantasiedaten.

LAN = eth0
WLAN = wlan0
WLAN-Treiber = prism2_usb
/etc/network/interfaces
auto lo
iface lo inet loopback

# Kabelgebundenes Netzwerk
iface eth0 inet static
address 192.168.178.123
netmask 255.255.255.0
broatcast 192.168.178.255
gateway 192.168.178.1

# Funk-Netzwerk
iface wlan0 inet static
wireless-essid MEINWLAN
wireless-key 00:00:00:00:00:00:00:00:00:00:00:00:00 open
address 192.168.178.120
netmask 255.255.255.0
gateway 192.168.178.1
broatcast 192.168.178.255

Sind diese Infos ausreichend für Dein Script und wie würde das mit meinen Daten aussehen?

Habe in Dein Script mal hineingeschaut, aber da ich von dem noch keine Ahnung habe, bin ich nicht sicher wo überall, Änderungen in Deinem Script vorgenommen werden müßten.

Sind zusätzliche Vorbereitungen notwendig, um daß das Script funktioniert?

Wäre toll, wenn ich Dein Script bei mir auch zum Laufen brächte.

Grüße Wolfgang

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

das ganze ist relativ einfach... du musst lediglich die folgenden zeilen anpassen und anstelle von "eth1" den namen deines wireless interfaces eintragen ... also "wlan0"

WLANIF="eth1"		#wireless
LANIF="eth0"		

und dann nimmst du dir eines der 2 wlan profile mit fixierten adressen raus z.b. "wlan1" und passt die daten (IPADDR,BROADCAST,GATEWAY,ESSID,KEY) an die deinigen an.. treiber kannst du u.U. auch weiterhin bei "wext" belassen da dies ein generischer treiber ist der in der regel funktionieren sollte.. das ganze ist ohnehin bereits auf "WEP" verschlüsselung eingestellt.. also sonst nix zu tun.. die "abteilungen" WEP WPA und WPA2 können dir egal sein.. das sind alles standart einstellungen.. ebenso INFO,IF und DNS (die eingetrageen DNS kannst du natürlich ändern falls du schnellere benutzen möchtest oder so)

wlan1() {
    INFO="Wireless Network 1"
    IF=$WLANIF
    IPADDR="192.168.1.100"
    NETMASK="255.255.255.0"
    BROADCAST="192.168.1.255"
    GATEWAY="192.168.1.1"
    ESSID="xapient.net" 
    KEY="B5B4B63D5CBF24EE87403340EF"
    DRIVER="wext"
	#hostap Host AP driver (Intersil Prism2/2.5/3)
	#madwifi  MADWIFI 802.11 support (Atheros, etc.)
	#atmel  ATMEL AT76C5XXx (USB, PCMCIA)
	#wext Linux wireless extensions (generic), benutzen falls andere Treiber nicht funktionieren
	#ndiswrapper Linux ndiswrapper (nur bei ndiswrapper bis Version 1.16)
	#ipw Intel ipw2100/2200 driver (nicht in edgy benutzen)
	#wired ´wired Ethernet driver

WEP="
network={
ssid=\"$ESSID\"
key_mgmt=NONE
wep_key0=$KEY
wep_tx_keyidx=0
priority=5
scan_ssid=1
}"

WPA="network={
ssid=\"$ESSID\"
scan_ssid=1
proto=WPA
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk=\"$KEY\"
}"

WPA2="
network={
ssid=\"$ESSID\"
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=TKIP CCMP
psk=\"$KEY\"
}"

    DNS1="217.146.139.5"	#open root server
    DNS2="62.157.101.211"	#open root server

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
TYPE="$WEP"		# or $WPA or $WPA2
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
} 

viel erfolg!
mfg xapient

Nobuddy

Avatar von Nobuddy

Anmeldungsdatum:
2. September 2005

Beiträge: 6990

Wohnort: 29614 Soltau

Hallo xapient,
bin total begeistert, wie einfach so etwas gehen kann.
Wenn ich überlege wie viele User hier verzweifelt nach einer vernünftigen Lösung für den WLAN-Bereich suchen und hier so eine prima Lösung.

Was mich noch interessiert:
die Installation der notwendigen Pakete, wie in den entsprechenden Wikibeiträgen beschrieben sind Voraussetzung für das Script?

sind irgendwelche Einträge im System notwendig, um daß das Script läuft, wie z.B. /etc/netwaork/interfaces oder /etc/wlan/wlan.conf oder /etc/wpa_supplicant/wpa_supplicant.conf oder....?

sind die Einträge in der /etc/netwaork/interfaces noch relevant, oder könnten die Einträge für eth0 und wlan0 in meinem Fall gelöscht werden?

die DNS-Einträge von Dir funktionieren, wüßte aber auch nicht, wenn ich sie austauschen wollte, welche ich da nehmen müsste bzw. wo ich die herbekomme?

Habe da noch 2 - 3 Fragen auf Lager, die mich auch brennend interessieren, aber immer eins nach dem anderen.

Grüße Wolfgang

Antworten |