Η ρύθμιση του ασύρματου δικτύου μπορεί να είναι πολύπλοκη. Ευελπιστούμε ότι θα το κάνετε να δουλέψει! 9.1 2010-11-07
Εισαγωγή

Η ασύρματη δικτύωση στο Linux είναι συνήθως σχετικά στρωτή. Υπάρχουν δύο τρόποι για να ρυθμίσετε το wifi: οι γραφικοί πελάτες, ή η γραμμή εντολών.

Ο ευκολότερος τρόπος είναι να χρησιμοποιήσετε έναν γραφικό πελάτη μόλις εγκαταστήσετε ένα περιβάλλον επιφάνειας εργασίας. Οι περισσότεροι γραφικοί πελάτες, όπως ο wicd και ο NetworkManager, είναι σχετικά αυτεξήγητοι. Αυτοί προσφέρουν μια εύχρηστη point-and-click διεπαφή που σας βάζει σε ένα δίκτυο μέσα σε λίγα δευτερόλεπτα.

Ο wicd προσφέρει ένα εργαλείο γραμμής εντολών πέρα από την κύρια γραφική διεπαφή. Μπορείτε να την έχετε εγκαθιστώντας τον wicd με την σημαία USE ncurses ορισμένη. Αυτό το wicd-curses εργαλείο είναι ειδικότερα χρήσιμο για όσους δεν χρησιμοποιούν ένα περιβάλλον επιφάνειας εργασίας βασισμένο στο gtk, αλλά επιθυμούν ακόμη να έχουν ένα εύκολο εργαλείο γραμμής εντολών που να μην απαιτεί τροποποίηση των αρχείων ρυθμίσεων με το χέρι.

Ωστόσο, αν δεν θέλετε να χρησιμοποιήσετε έναν γραφικό πελάτη, μπορείτε να ρυθμίσετε το wifi στην γραμμή εντολών τροποποιώντας ορισμένα αρχεία ρυθμίσεων. Αυτό θα πάρει λίγο περισσότερο για να ολοκληρωθεί, αλλά επίσης απαιτεί τα λιγότερα πακέτα για λήψη και εγκατάσταση. Εφόσον οι γραφικοί πελάτες είναι στο μεγαλύτερο βαθμό αυτεξήγητοι (με κατατοπιστικές φωτογραφίες στις ιστοσελίδες τους), θα επικεντρωθούμε στις εναλλακτικές λύσεις για την γραμμή εντολών.

Μπορείτε να ρυθμίσετε ασύρματη δικτύωση στην γραμμή εντολών εγκαθιστώντας το wireless-tools ή το wpa_supplicant. Αυτό που είναι σημαντικό να θυμάστε είναι ότι ρυθμίζετε ασύρματα δίκτυα καθολικά και όχι ανά διεπαφή.

Το wpa_supplicant είναι η καλύτερη επιλογή. Για μια λίστα με τους υποστηριζόμενους οδηγούς, διαβάστε την ιστοσελίδα του wpa_supplicant.

Το wireless-tools υποστηρίζει σχεδόν όλες τις κάρτες και τους οδηγούς, αλλά δεν μπορεί να συνδεθεί σε Σημεία Πρόσβασης που υποστηρίζουν μόνο WPA. Αν τα δίκτυά σας προσφέρουν μόνο κρυπτογράφηση WEP ή είναι εντελώς ανοιχτά, μπορείτε να προτιμήσετε την απλότητα του wireless-tools.

Ο οδηγός linux-wlan-ng δεν υποστηρίζεται από το baselayout αυτή τη στιγμή. Αυτό γίνεται γιατί το linux-wlan-ng έχει τη δική του εγκατάσταση και ρυθμίσεις οι οποίες είναι εντελώς διαφορετικές από οποιονδήποτε άλλο. Οι προγραμματιστές του linux-wlan-ng φημολογείται ότι αλλάζουν την εγκατάστασή τους σε αυτή του wireless-tools, οπότε όταν αυτό συμβεί θα μπορείτε να χρησιμοποιήσετε τον linux-wlan-ng με το baselayout.
WPA Supplicant

Το WPA Supplicant είναι ένα πακέτο το οποίο σας επιτρέπει να συνδέεστε σε σημεία πρόσβασης με ενεργοποιημένο το WPA.

# emerge net-wireless/wpa_supplicant
Θα πρέπει να έχετε το CONFIG_PACKET ενεργοποιημένο στον πυρήνα σας για να δουλέψει το wpa_supplicant. Προσπαθήστε να τρέξετε το grep CONFIG_PACKET /usr/src/linux/.config για να δείτε αν το έχετε ενεργοποιημένο στον πυρήνα σας. Ανάλογα με τις δικές σας σημαίες USE, το wpa_supplicant μπορεί να εγκαταστήσει μια γραφική διεπαφή γραμμένη σε Qt4, η οποία ενσωματώνεται ομαλά στο KDE. Για να την αποκτήσετε, εκτελέστε echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use ως root πριν εγκαταστήσετε το wpa_supplicant.

Τώρα έχουμε να ρυθμίσουμε το /etc/conf.d/net έτσι ώστε να προτιμούμε το wpa_supplicant έναντι του wireless-tools (αν και τα δύο είναι εγκατεστημένα, το wireless-tools είναι εξ ορισμού το προτιμώμενο).

# Προτίμησε το wpa_supplicant έναντι του wireless-tools
modules=( "wpa_supplicant" )

# Είναι σημαντικό να πούμε στο wpa_supplicant ποιον οδηγό θα πρέπει να
# χρησιμοποιούμε καθώς δεν είναι αρκετά καλό στον να μαντεύει ακόμη
wpa_supplicant_eth0="-Dmadwifi"
Αν χρησιμοποιείτε τον οδηγό host-ap θα χρειαστεί να βάλετε την κάρτα σε Κατάσταση διαχείρισης (Managed mode) πριν μπορέσει να χρησιμοποιηθεί από το wpa_supplicant σωστά. Μπορείτε να χρησιμοποιήσετε το iwconfig_eth0="mode managed" για να το καταφέρετε αυτό μέσα στο /etc/conf.d/net.

Ήταν απλό, έτσι δεν είναι; Ωστόσο, έχουμε ακόμη να ρυθμίσουμε το ίδιο το wpa_supplicant το οποίο είναι λίγο πιο πολύπλοκο ανάλογα με το πόσο ασφαλή τα Σημεία Πρόσβασης είναι στα οποία προσπαθείτε να συνδεθείτε. Το παρακάτω παράδειγμα πάρθηκε και απλοποιήθηκε από το /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz το οποίο έρχεται μαζί με το wpa_supplicant.

# Η παρακάτω γραμμή δεν πρέπει να αλλαχθεί αλλιώς αρνούμαστε
# να δουλέψουμε
ctrl_interface=/var/run/wpa_supplicant

# Διασφαλίστε ότι μόνο ο root μπορεί να διαβάσει τις ρυθμίσεις του WPA
ctrl_interface_group=0

# Αφήστε το wpa_supplicant να αναλάβει την σάρωση και την επιλογή του AP
ap_scan=1

# Απλή περίπτωση: WPA-PSK, PSK ως μια ASCII κωδική φράση, επέτρεψε όλους τους έγκυρους
# κρυπτογραφικούς κώδικες
network={
  ssid="simple"
  psk="very secret passphrase"
  # Όσο υψηλότερη είναι η προτεραιότητα τόσο πιο σύντομα γίνεται ταίριασμα
  priority=5
}

# Όμοια με τα προηγούμενα, αλλά στείλε αίτηση για σάρωση με συγκεκριμένο SSID
# (για AP τα οποία απορρίπτουν την αναμετάδοση SSID)
network={
  ssid="second ssid"
  scan_ssid=1
  psk="very secret passphrase"
  priority=2
}

# Μόνο το WPA-PSK χρησιμοποιείται. Οποιοσδήποτε συνδυασμός κρυπτογραφικού
# κώδικα γίνεται αποδεκτός
network={
  ssid="example"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Σύνδεση απλού κειμένου (ούτε WPA, ούτε IEEE 802.1X)
network={
  ssid="plaintext-test"
  key_mgmt=NONE
}

# Σύνδεση διαμοιραζόμενου κλειδιού WEP (ούτε WPA, ούτε IEEE 802.1X)
network={
  ssid="static-wep-test"
  key_mgmt=NONE
  # Τα κλειδιά μέσα στα εισαγωγικά είναι κλειδιά ASCII
  wep_key0="abcde"
  # Κλειδιά που δίνονται χωρίς εισαγωγικά είναι δεκαεξαδικά κλειδιά
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Σύνδεση διαμοιραζόμενου κλειδιού WEP (ούτε WPA, ούτε IEEE 802.1X)
# χρησιμοποιώντας ταυτοποίηση Διαμοιραζόμενου Κλειδιού IEEE 802.11
network={
  ssid="static-wep-test2"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# Δίκτυο IBSS/ad-hoc με WPA-None/TKIP
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="secret passphrase"
}
Wireless Tools Αρχική εγκατάσταση και Κατάσταση Διαχείρισης

Το Wireless Tools παρέχει έναν γενικό τρόπο ρύθμισης βασικών διεπαφών ασύρματου δικτύου μέχρι το επίπεδο ασφαλείας του WEP. Ενώ το WEP είναι μια αδύναμη μέθοδος ασφάλειας είναι επίσης η πιο διαδεδομένη.

Η ρύθμιση του Wireless Tools ελέγχεται από λίγες κύριες μεταβλητές. Το παράδειγμα αρχείου ρυθμίσεων παρακάτω θα πρέπει να περιγράφει ό,τι χρειάζεστε. Ένα πράγμα που θα πρέπει να έχετε στο νου σας είναι ότι αν δεν υπάρχει αρχείο ρύθμισης σημαίνει "συνδέσου στο Σημείο Πρόσβασης που έχει το δυνατότερο σήμα και είναι μη κρυπτογραφημένο" - θα προσπαθούμε πάντα να σας συνδέσουμε σε κάτι.

# emerge net-wireless/wireless-tools
Αν και μπορείτε να αποθηκεύσετε τις ρυθμίσεις του ασύρματου στο /etc/conf.d/wireless αυτός ο οδηγός προτείνει να τις αποθηκεύσετε μέσα στο /etc/conf.d/net. Θα χρειαστεί να συμβουλευτείτε την τεκμηρίωση για ταονόματα μεταβλητών.
# Προτίμηση iwconfig έναντι wpa_supplicant
modules=( "iwconfig" )

# Ρύθμιση κλειδιών WEP για Σημεία Πρόσβασης με ονόματα ESSID1 και ESSID2
# Μπορείτε να ρυθμίσετε έως 4 κλειδιά WEP, αλλά μόνο 1 μπορεί να είναι ενεργό
# κάθε στιγμή οπότε παρέχουμε έναν προκαθορισμένο δείκτη [1] για να θέσουμε το κλειδί [1]
# και έπειτα ξανά για να αλλάξουμε το ενεργό κλειδί στο [1]. Το κάνουμε αυτό
# για την περίπτωση που ορίσετε άλλα ESSID να χρησιμοποιούν κλειδιά WEP
# άλλα από το 1
#
# Δίνοντας πρόθεμα s: στο κλειδί σημαίνει ότι είναι κλειδί ASCII, αλλιώς
# είναι κλειδί HEX
#
# enc open ορίζει ανοιχτή ασφάλεια (το πιο ασφαλές)
# enc restricted ορίζει περιορισμένη ασφάλεια (το λιγότερο ασφαλές)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# Το παρακάτω δουλεύει μόνο όταν σαρώνουμε για διαθέσιμα Σημεία Πρόσβασης

# Κάποιες φορές περισσότερα από ένα Σημεία Πρόσβασης είναι ορατά οπότε
# πρέπει να ορίσουμε μια σειρά προτίμησης για την σύνδεση
preferred_aps=( "ESSID1" "ESSID2" )
Βελτίωση Επιλογής Σημείου Πρόσβασης

Μπορείς να προσθέσεις επιπλέον επιλογές για να βελτιώσεις την επιλογή του Σημείου Πρόσβασης, αλλά αυτές σε κανονικές συνθήκες δεν χρειάζονται.

Μπορείτε να αποφασίσετε αν θα συνδεόμαστε μόνο σε Σημεία Πρόσβασης της προτίμησής μας ή όχι. Εξ ορισμού αν ό,τι έχουμε ρυθμίσει αποτύχει και μπορούμε να συνδεθούμε σε ένα Σημείο Πρόσβασης χωρίς κρυπτογράφηση, τότε θα συνδεθούμε. Αυτό μπορεί να ρυθμιστεί από την μεταβλητή associate_order. Ορίστε ένας πίνακας με τιμές και τι χειρισμό κάνουν.

anyΕξ ορισμού συμπεριφοράpreferredonlyΘα συνδεθούμε μόνο σε ορατά AP από την λίστα προτίμησηςforcepreferredΘα συνδεθούμε με τη βία σε AP από την λίστα προτίμησης αν δεν βρεθούν σε μία σάρωσηforcepreferredonlyΜην κάνεις σάρωση για AP - αντί αυτής απλά προσπάθησε να συνδεθείς στο καθένα με την σειράforceanyΤο ίδιο με την forcepreferred + συνδέσου σε κάθε άλλο διαθέσιμο AP
Τιμή Περιγραφή

Τέλος έχουμε κάποιες blacklist_aps και unique_ap επιλογές. Η blacklist_aps δουλεύει με παρόμοιο τρόπο με την preferred_aps. Η unique_ap είναι μια yes ή no τιμή που λέει αν μια δεύτερη ασύρματη διεπαφή μπορεί να συνδεθεί στο ίδιο Σημείο Πρόσβασης όπως η πρώτη διεπαφή.

# Κάποιες φορές δεν θέλετε ποτέ να συνδεθείτε σε συγκεκριμένα σημεία πρόσβασης
blacklist_aps=( "ESSID3" "ESSID4" )

# Αν έχετε περισσότερες από μια κάρτες ασύρματου δικτύου, μπορείτε να
# πείτε αν θέλετε να επιτρέψετε η κάθε κάρτα να συσχετίζεται με το ίδιο Σημείο
# Πρόσβασης ή όχι
# Οι τιμές είναι "yes" ή "no"
# Η εξ ορισμού τιμή είναι "yes"
unique_ap="yes"
Καταστάσεις Ad-Hoc και Master

Αν θελήσετε να ρυθμίσετε να ρυθμίσετε τον εαυτό σας ως κόμβο Ad-Hoc αν αποτύχετε να συνδεθείτε σε όλα τα Σημεία Πρόσβασης σε κατάσταση διαχείρισης, μπορείτε να κάνετε και αυτό.

adhoc_essid_eth0="This Adhoc Node"

Τι κάνουμε αν θέλουμε να συνδεθούμε σε δίκτυα Ad-Hoc ή να τρέξουμε σε κατάσταση Master για να γίνουμε ένα Σημείο Πρόσβασης; Ορίστε η ρύθμιση ειδικά για αυτό! Μπορεί να χρειαστεί να ορίσετε κλειδιά WEP όπως φαίνεται παρακάτω.

# Ορίστε την κατάσταση - μπορεί να είναι διαχείρισης (εξ ορισμού), ad-hoc
# ή master. Δεν υποστηρίζονται όλες οι καταστάσεις από όλους τους οδηγούς
mode_eth0="ad-hoc"

# Ορίστε το ESSID της διεπαφής
# Σε κατάσταση διαχείρισης, αυτό ωθεί την διεπαφή να δοκιμάσει και να
# συνδεθεί στο ορισμένο ESSID και πουθενά αλλού
essid_eth0="This Adhoc Node"

# Χρησιμοποιείται το κανάλι 3 αν δεν ορίσετε κάποιο
channel_eth0="9"
Το παρακάτω έχει παρθεί ατόφιο από την τεκμηρίωση του BSD wavelan που μπορεί να βρεθεί στην τεκμηρίωση του NetBSD. Υπάρχουν 14 πιθανά κανάλια· Μας έχουν ενημερώσει ότι τα κανάλια 1-11 είναι νόμιμα για Βόρια Αμερική, τα κανάλια 1-13 για το μεγαλύτερο μέρος της Ευρώπης, τα κανάλια 10-13 για την Γαλλία, και μόνο το κανάλι 14 για την Japan. Αν έχετε αμφιβολίες, παρακαλώ ανατρέξτε στην τεκμηρίωση που ήρθε μαζί με την κάρτα ή το σημείο πρόσβασης. Σιγουρευτείτε ότι το κανάλι που επιλέγετε είναι το ίδιο κανάλι στο οποίο βρίσκεται το σημείο πρόσβασης (ή η άλλη κάρτα σε ένα δίκτυο ad-hoc). Η εξ ορισμού ρύθμιση για κάρτες που πωλούνται στη Βόρια Αμερική και το μεγαλύτερο μέρος της Ευρώπης είναι το 3· η εξ ορισμού ρύθμιση για κάρτες που πωλούνται στην Γαλλία είναι το 11, και η εξ ορισμού ρύθμιση για κάρτες που πωλούνται στην Ιαπωνία είναι το 14.
Αντιμετώπιση προβλημάτων των Wireless Tools

Υπάρχουν μερικές ακόμη μεταβλητές που μπορείτε να χρησιμοποιήσετε για να σας βοηθήσουν να βάλετε το ασύρματο δίκτυό σας σε λειτουργία αν έχετε προβλήματα με οδηγούς ή προβλήματα περιβάλλοντος. Ορίστε ένας πίνακας με άλλα πράγματα που μπορείτε να δοκιμάσετε.

iwconfig_eth0 Δείτε την σελίδα τεκμηρίωσης του iwconfig για λεπτομέρειες στο τι να στείλετε στο iwconfig iwpriv_eth0 Δείτε την σελίδα τεκμηρίωσης του iwpriv για λεπτομέρειες στο τι να στείλετε στο iwpriv sleep_scan_eth00Ο αριθμός των δευτερολέπτων που θα κοιμηθεί πριν κάνει προσπάθεια σάρωσης. Αυτό χρειάζεται όταν ο οδηγός/firmware χρειάζεται επιπλέον χρόνο για να ενεργοποιηθεί πριν να είναι δυνατή η χρήση του.sleep_associate_eth05Ο αριθμός των δευτερολέπτων που θα περιμένουμε για την διεπαφή να συσχετιστεί με το Σημείο Πρόσβασης πριν συνεχίσουμε στο επόμενοassociate_test_eth0MACΟρισμένοι οδηγοί δεν επαναφέρουν τις συσχετισμένες διευθύνσεις MAC με μια μη έγκυρη όταν χάνουν ή προσπαθούν συσχέτιση. Ορισμένοι οδηγοί δεν επαναφέρουν το επίπεδο ποιότητας όταν χάνουν ή προσπαθούν συσχέτιση. Έγκυρες ρυθμίσεις είναι οι MAC, quality και all.scan_mode_eth0 Ορισμένοι οδηγοί πρέπει να σαρώσουν σε κατάσταση ad-hoc, οπότε αν η σάρωση αποτυγχάνει δοκιμάστε να θέσετε ad-hoc εδώ iwpriv_scan_pre_eth0 Στέλνει μερικές εντολές iwpriv στην διεπαφή πριν τη σάρωση. Δείτε την σελίδα τεκμηρίωσης του iwpriv για περισσότερες λεπτομέρειες. iwpriv_scan_post_eth0 Στέλνει μερικές εντολές iwpriv στην διεπαφή μετά τη σάρωση. Δείτε την σελίδα τεκμηρίωσης του iwpriv για περισσότερες λεπτομέρειες.
Μεταβλητή Προκαθορισμένη Τιμή Περιγραφή
Ορίζοντας ρυθμίσεις δικτύου ανά ESSID

Ορισμένες φορές, χρειάζεστε μία στατική IP όταν συνδέεστε στο ESSID1 και χρειάζεστε DHCP όταν συνδέεστε στο ESSID2. Στην πραγματικότητα, οι περισσότερες μεταβλητές μονάδων μπορούν να οριστούν ανά ESSID. Ορίστε πως το κάνουμε.

Αυτά δουλεύουν αν χρησιμοποιείτε WPA Supplicant ή Wireless Tools. Θα χρειαστεί να συμβουλευτείτε την τεκμηρίωση για ταονόματα μεταβλητών.
config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )

# Μπορούμε να ορίσουμε διακομιστές ονομάτων τομέων και άλλα πράγματα επίσης
# ΣΗΜΕΙΩΣΗ: Το DHCP θα παρακάμψει όλα αυτά εκτός και αν του πούμε να μην το κάνει
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# Παράκαμψη με την διεύθυνση MAC του Σημείου Πρόσβασης
# Αυτό είναι χρήσιμο αν πηγαίνετε σε διαφορετικές τοποθεσίες που έχουν το ίδιο ESSID
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )