Netcfg

De la ArchWikiRo
Salt la: navigare, căutare

Netcfg este utilizat pentru a configura şi gestiona conexiunile de reţea prin intermediul unor profiluri. Acesta are suport pentru o serie de tipuri de conexiuni, cum ar fi ethernet,wireless,ppp. De asemenea, este capabil de a porni/opri mai multe conexiuni pe acelaşi profil. Este util pentru utilizatorii care doresc un mijloc simplu şi robust de a gestiona multiple configuraţii de reţea (de exemplu, utilizatorii de laptop). Pentru sistemele de conectarea la o reţea unică, daemon-ul de reţea poate fi mai adecvat.

Cuprins

Pregătirea

Utilizatorii trebuie cel puţin să cunoască numele interfeţei de reţea (de exemplu,eth0,wlan0),cum să configureze o adresă IP statică, gateway-ul şi să cunoască adresa serverului. În cazul unei conectări la o reţea fără fir, acestea sunt informaţii de bază.Pentru o reţea fără fir acest lucru include ce tip de securitate este utilizat, numele reţelei (ESSID), precum şi orice chei de criptare sau parole sunt folosite. În plus, asiguraţi-vă că aveți instalate driverele corecte şi firmware-ul pentru dispozitivul fără fir, aşa cum este descris în Wireless.

Instalarea

Asiguraţi-vă că aveţi instalată cea mai recentă versiune a pachetului netcfg.Versiunile mai vechi au unele bug-uri şi nu pot lucra bine cu cele mai recente drivere. Pachetul netcfg este disponibil în core:

# pacman -S netcfg

Incepând cu versiunea 2.5.x, dependinţele opţionale includ wpa_actiond - necesar pentru conectare automată wireless roaming și ifplugd - necesar pentru configurarea automată ethernet.

# pacman -S wpa_actiond ifplugd

Configurare

Profilurile de reţea sunt stocate în directorul /etc/network.d.Pentru a nu întâmpina prea multe erori, copiați configuraţia exemplu de la /etc/network.d/examples/ la /etc/network.d/mynetwork. Numele de fişier mynetwork este numele de profil de reţea ("mynetwork" este folosit ca un exemplu, pe parcursul acestui articol). Numele nu este o configuraţie de reţea şi nu trebuie să se potrivească cu numele de reţea fără fir (SSID). În funcţie de tipul de conexiune şi securitate, utilizaţi unul din următoarele exemple de la /etc/network.d/examples ca o bază. Fiţi prudent cu exemplele găsite pe internet, deoarece acestea conţin adesea opţiuni învechite care pot cauza probleme.

Connection type/security Example profile
Wireless; WEP hex key wireless-wep
Wireless; WEP string key wireless-wep-string-key
Wireless; WPA personal (passphrase) wireless-wpa
Wireless; WPA enterprise wireless-wpa-config (wpa_supplicant configuration is external)
wireless-wpa-configsection (wpa_supplicant configuration stored as string)
Wired; DHCP ethernet-dhcp
Wired; static IP ethernet-static
Wired; iproute configuration ethernet-iproute

Apoi,modificaţi noul fişier de configurare , /etc/network.d/mynetwork:

  • Setați INTERFACE pe varianta corectă,wireless sau ethernet.Aceasta poate fi verificată cu ifconfig și iwconfig. .
  • Fiți siguri că ESSID și KEY sunt setate corect pentru wireless.
  • Reţineţi că cheile șir WEP (nu cheile hex) trebuie să fie specificate în felul următor:KEY="s:somepasskey"
Notă: script-uri cu configuraţii netcfg sunt valabile în Bash. Orice configuraţie care implică caractere speciale, cum ar fi $ sau \ trebuie să fie citată în mod corect,în caz contrar acesta va fi interpretat de Bash. Pentru a evita interpretarea, utilizaţi ghilimele simple sau caractere backslash escape, dacă este cazul.
Notă: informaţiile de reţea (de exemplu, cheia de acces wireless) vor fi stocate în format text simplu, astfel încât utilizatorii să poată modifica permisiunile pe profilul nou creat (de exemplu, chmod 0600 /etc/network.d/mynetwork pentru a putea fi citit numai de root)

Folosire

Pentru a conecta un profil:

# netcfg mynetwork

Pentru deconectare:

# netcfg down <profile-name>

Daca va avea succes, utilizatorii pot configura netcfg pentru a se conecta automat sau în timpul de boot.În cazul în care conexiunea nu reuşeşte, consultaţi # Rezolvarea problemelor. Pentru alte funcționalități:

$ netcfg help

Conectarea automată

Câteva metode sunt disponibile pentru utilizatorii care doresc să se conecteze automat la profilurile de reţea (de exemplu,în timpul de boot sau când sunt într-o călătorie).Reţineţi că un profil de reţea trebuie să fie corect configurat în primul rând în directorul /etc/network.d.

Notă: În cazul în care activați unul dintre următorii daemoni şi nimic nu este configurat la secțiunea INTERFACES în rc.conf,se poate elimina network din șirul DAEMONS.Dacă montaţi NFS shares în timpul procesului de boot, asigurați-vă că daemonul netfs rămâne în listă.

Net-profiles

net-profiles permite utilizatorilor să conecteze în timpul start-up profilurile create.Pentru a activa această facilitate, utilizatorii trebuie să adauge net-profiles la DAEMONS în rc.conf și să specifice profilurile în NETWORKS:

File: /etc/rc.conf
NETWORKS=(mynetwork yournetwork)

...

DAEMONS=(... net-profiles ...)

Alternativ,net-profiles poate fi configurat să afișeze un meniu care să permită userilor să aleagă profilul prin stabilirea conţinutului din NETWORKS în menu:

File: /etc/rc.conf
NETWORKS=(menu)

...

DAEMONS=(... net-profiles ...)

Este necesar pachetul dialog.

Notă: Se poate avea oricând acces la meniu , prin rularea netcfg-menu într-un terminal.

Net-auto-wireless

net-auto-wireless permite userilor să se conecteze automat la rețeaua wireless.Pentru a activa această facilitate, utilizatorii trebuie să adauge net-auto-wireless la DAEMONS și să specifice în WIRELESS_INTERFACE interfața dorită:

File: /etc/rc.conf
WIRELESS_INTERFACE="wlan0"

...

DAEMONS=(... net-auto-wireless ...)

Pentru aceasta va fi nevoie de pachetul wpa_actiond.De reținut că profilul wpa-config nu funcționează cu net-auto-wireless. Acesta trebuie convertit în wpa-configsection.

Net-auto-wired

net-auto-wired permite userilor să se conecteze automat la rețeaua cu fir(wired).Pentru aceasta e necesar pachetul ifplugd:

# pacman -S ifplugd

și adăugați net-auto-wired în câmpul DAEMONS.Aici se specifică interfața cu variabila WIRED_INTERFACE:

File: /etc/rc.conf
WIRED_INTERFACE="eth0"

...

DAEMONS=(... net-auto-wired ...)

Daemon-ul pornește ifplugd care,la rândul său rulează /etc/ifplugd/netcfg.action,pînă cînd statusul interfeței wired se modifică.Prin conectarea cablului,se încearcă pornirea oricărui profil cu CONNECTION = "ethernet" sau "ethernet-iproute" și INTERFACE = WIRED_INTERFACE până la stabilirea conexiunii.

Notă: profilele DHCP sunt încercate înainte de cele statice;aceasta ar putea duce la rezultate neclare, în unele cazuri.
Notă: Daemon-ul net-auto-wired nu poate porni mai multe procese ifplugd pentru mai multe interfeţe (spre deosebire de propriul ifplugd /etc/rc.d/ifplugd care poate face acest lucru).

Sfaturi și trucuri

Adăugare argumente pentru iwconfig înainte de conectare

Adaugați următoarea linie la profilul creat:

IWCONFIG="<arguments>"

Unde <arguments> poate fi orice argument valid iwconfig.Scriptul rulează iwconfig $INTERFACE $IWCONFIG .De exemplu poate forța placa de rețea să inregistreze un anumit punct de acces acordat de adresa MAC:

IWCONFIG="ap 12:34:56:78:90:12"

Aceasta înlocuiește IWOPTS și WEP_OPTS , opțiuni care nu au fost suficient testate.

rfkill (activare / dezactivare wireless)

Netcfg poate activa / dezactiva wireless pentru carduri wireless echipate cu software de control . Pentru plăci de retea wireless cu comutare hardware, netcfg poate detecta această comutare și actionează ca atare. Pentru a permite suportul rfkill,trebuie să specificați ce fel de metodă de comutare pentru rețeaua wireless folosiți: hardware sau software.Acest lucru poate fi stabilit într-un profil sau la nivel de interfaţă (/etc/network.d/interfaces/$INTERFACE;vezi #Interfața de configurare).

  RFKILL=soft # can be either 'hard' or 'soft'

Unele comutatoare care opresc procesul rfkill în /sys nu sunt legate de interfață iar variabila RFKILL_NAME trebuie setată să se potrivească la conținut cu /sys/class/rfkill/rfkill#/name.De exemplu,pe un Eee PC:

RFKILL=soft
RFKILL_NAME='eeepc-wlan'

Executarea comenzilor înainte/după pornirea/oprirea interfeței de rețea

Dacă interfața de rețea are nevoie de comenzi speciale înainte/după pornirea/inchiderea conexiunii,puteți folosi variabilele PRE_UP, POST_UP, PRE_DOWN și POST_DOWN. De exemplu,dacă doriți ca placa wireless să opereze în mod ad-hoc,puteți schimba modul de operare când interfața este oprită:

  PRE_UP="ifconfig wlan0 down; iwconfig wlan0 mode ad-hoc"

Sau, dacă doriţi să montaţi network shares după o conexiune reușită,ați putea folosi:

 POST_UP="sleep 5; mount /mnt/shares/nexus/utorrent 2>/dev/null"

Daca doriţi să rulaţi ceva legat de netcfg cu un alt utilizator:

 POST_UP="su -c '/you/own/command' username"
Notă: În cazul în care comenzile specificate returnează cu totul altceva decât 0 (succes), netcfg intrerupe operația curentă. Deci, dacă doriţi să montaţi network shares care nu ar putea fi disponibilă în momentul conectarii (apare o eroare), aţi putea crea un script bash separat cu comenzile de montare şi exit 0 la sfârșit. Alternativ, puteţi adăuga || true la sfârşitul comenzii, dacă totuși aceasta a eşuat.

Conectare intermitentă

Între unele combinații de driver+hardware pot apărea probleme de sincronizare.Folosiți comenzile pre și post pentru a adăuga sau elimina driverul,apoi folosiți un script(ca în exemplul următor)pentru a stabili conexiunea:

File: /usr/local/bin/netcfgd
#!/bin/bash
log() { logger -t "$( basename $0 )" "$*" ; }

main() {
        local host
        while sleep 1; do
                [[ "$( netcfg current )" = "" ]] && continue

                host=$( route -n | awk '/^0.0.0.0/ { print $2 }' )
                ping -c 1 $host && continue

                log "trying to reassociate"
                wpa_cli reassociate
                ping -c 1 $host && continue

                log "reassociate failed, reconfiguring network"
                netcfg -r $( netcfg current )
        done
}

exec 1>/dev/null
[[ $EUID != 0 ]] && { log "must be root"; exit 1; }

for cmd in wpa_cli ping netcfg; do
        ! which $cmd && {
                log "can't find command ${cmd}, exiting..."
                exit 1                                                                                                      
        }
done

log 'starting...'
main 

Interfața de configurare

Opţiunile de configurare care se aplică la toate profilurile folosind o interfaţă pot fi setate folosind /etc/network.d/interfaces/$INTERFACE.De exemplu:

/etc/network.d/interfaces/wlan0

Aceasta este folositoare pentru opțiunea wpa_supplicant,suport comutare rfkill,scripturi pentru pre/post pornire/oprire și net-auto-wireless. Aceste opţiuni sunt încărcate înainte într-un profil care va deveni prioritar. /etc/network.d/interfaces/$INTERFACE poate conţine orice opţiune de profil valabil, deşi este mult mai probabil să fie utilizate PRE_UP/DOWN și POST_UP/DOWN (descrise în secţiunea anterioară) sau una dintre optiunile de mai jos.Amintiţi-vă că aceste opţiuni sunt stabilite pentru toate profilurile care folosesc interfața,de exemplu,în cazul în care nu doriţi să realizaţi conexiunea VPN într-un anumit loc, să rețină acest lucru,deoarece acesta va încerca să se conecteze la orice wireless!

 WPA_GROUP   - Setting the group of the wpa_ctrl interface
 WPA_COUNTRY - Enforces local regulatory limitations and allows use of more channels
 WPA_DRIVER  - Defaults to wext, may want nl80211 for mac80211 devices
Notă: POST_UP/POST_DOWN necesită pachetul wpa_actiond.

ArchAssistant (GUI)

Există un utilitar grafic pentru netfg, ArchAssistant ,utilitar bazat pe Qt.Scopul său este de a gestiona şi conecta / deconecta diferse profiluri de rețea. Poate, de asemenea,face detectarea automată a reţelelor fără fir disponibile. Acest instrument este util pentru utilizatorii de laptop.

În plus, o interfaţă grafică relativ nouă pentru netcfg2 care se ocupă numai cu configurarea reţelei,o puteți găsi aici.

wifi-select

Alt instrument în consolă pentru selectarea reţelei fără fir în "timp real"(asemănător cu NetworkManager) ar fi wifi-select.Acest instrument este util pentru utilizarea în internet-cafe sau alte locuri pe care le vizitaţi mai rar. Cu acest instrument, nu aveţi nevoie să creați un profil pentru o nouă reţea, doar să tastați în terminal sudo wifi-select wlan0 şi selectaţi reţeaua pe care o doriţi. Pachetul este disponibil în [community]. Pentru a-l instala :

# pacman -S wifi-select

wifi-select efectuează următoarele:

  • Analizează rezultatul iwlist scan şi prezintă lista de reţele, împreună cu setările sale de securitate (WPA/WEP/none) folosind dialog.
  • În cazul în care utilizați o reţea cu profil existent,trebuie doar să utilizaţi acest profil pentru a vă conecta cu netcfg
  • Dacă userul selectează o nouă rețea(de exemplu un punct de acces WIFI),wifi-select automat genereză un nou profil cu variabila $SECURITY setată corespunzător si va solicita parola(dacă este necesar).Se foloseşte DHCP ca $ IP implicit.
  • Dacă conectarea reușește,profilul este salvat pentru o folosire ulterioară
  • Dacă conectarea nu reușește,userul este întrebat dacă dorește să salveze profilul

Folosire dhclient în loc de dhcpcd

Pur şi simplu adăugaţi

DHCLIENT=yes

la profilul dorit.

Rezolvarea problemelor

Debugging

Netcfg poate rula cu ieşire de depanare, pentru aceasta setaţi "yes" la NETCFG_DEBUG ca de exemplu:

 # NETCFG_DEBUG="yes" netcfg <arguments>

Informaţii pentru debug(log) pe wpa_supplicant pot fi enumerate folosind WPA_OPTS într-un profil,de exemplu:

WPA_OPTS="-f/path/to/log"

Orice intrare va fi adăugată ulterior la comanda wpa_supplicant.

Network unavailable

Această eroare este de obicei cauzată de:

  • în afara intervalului specificat, sau
  • probleme cu driverele.

Wireless association failed

Această eroare poate avea următoarele cauze:

  • în afara domeniului / recepţiei;
  • configurare incorectă;
  • cheie invalidă;
  • problemă driver sau
  • încercarea de conectare la o reţea ascunsă.

În cazul în care problema de conexiune se datorează recepţie slabe,se poate creşte variabila TIMEOUT din /etc/network.d/mynetwork , după cum urmează:

TIMEOUT=60

Dacă utilizaţi un AP cu SSID ascuns, încercaţi:

PRE_UP='iwconfig $INTERFACE essid $ESSID'

Unable to get IP address with DHCP

Această eroare se datorează

  • în afara domeniului / recepţiei.

Încercaţi să creșteți variabila DHCP_TIMEOUT în /etc/network.d/profile.

Not a valid connection, check spelling or look at examples

Trebuie setat CONNECTION la una din tipurile de conexiuni listate în directorul /usr/lib/network/connections.Alternativ,puteți folosi un exemplu din configurațiile aflate în /etc/network.d/examples.

find: "/var/run/network//suspend/": No such file or directory

Dacă primiţi acest mesaj de eroare, trebuie să știți că este un bug cunoscut. Creați manual acest director.

Unelte personale