Gentoo Logo

1.  Configurare Avansată

Variabila config_eth0 reprezintă inima configuraţiei unei interfeţe. Este o listă de instrucţiuni de nivel înalt pentru configurarea interfeţei (eth0 în acest caz). Fiecare comandă din lista de instrucţiuni este executată secvenţial. Interfaţa este considerată OK dacă cel puţin o comandă funcţionează.

Iată o listă de instrucţiuni integrate:

Commandă Descriere
null Nu face nimic
noop Dacă interfaţa este activă şi există o adresă, atunci anulează configurarea cu succes
o adresă IPv4 sau IPv6 Adaugă adresa interfeţei
dhcp, adsl sau apipa (sau o anumită comandă dintr-un modul extern) Rulează modulul ce oferă comanda. Spre exemplu, dhcp va rula un modul ce oferă DHCP, care poate fi, ori dhcpcd, udhcpc, dhclient sau pump.

Dacă o comandă returnează eroare, puteţi specifica o comandă de revenire. Aceasta trebuie să se potrivească în structura configuraţiei exact.

Puteţi înlănţui aceste comenzi împreună. Iată unele exemple din lumea reală.

Cod 1.1: Exemple de configurare

# Adăugarea a trei adrese IPv4
config_eth0=(
  "192.168.0.2/24"
  "192.168.0.3/24"
  "192.168.0.4/24"
)

# Adăugarea unei adrese IPv4 şi a două adrese IPv6
config_eth0=(
  "192.168.0.2/24"
  "4321:0:1:2:3:4:567:89ab"
  "4321:0:1:2:3:4:567:89ac"
)

# Păstraţi adresa desemnată de kernel, dacă interfaţa nu se activează
# deci desemnează o altă adresă prin DHCP. Dacă DHCP returnează eroare
# atunci adaugă o adresă statică determinată de APIPA
config_eth0=(
  "noop"
  "dhcp"
)
fallback_eth0=(
  "null"
  "apipa"
)

Notă: Când utilizaţi modulul ifconfig şi adăugaţi una sau mai multe adrese, aliasurile interfeţelor sunt create pentru fiecare adresă suplimentară. Deci, cu exemplele de mai sus, veţi avea interfeţele eth0, eth0:1 şi eth0:2. Nu puteţi face nimic special cu aceste interfeţe, deoarece kernel-ul sau alte aplicaţii vor trata eth0:1 şi eth0:2 ca eth0.

Important: Ordinea comenzilor de revenire este importantă! Dacă nu am specificat opţiunea null, atunci comanda apipa va fi rulată doar în cazul în care comanda noop returnează eroare.

Notă: (APIPA) şi (DHCP) sunt tratate ulterior.

1.  Dependenţe de Reţea

Script-urile de iniţializare din /etc/init.d pot depinde de o anumită interfaţă de reţea sau doar de net. net poate fi definit în /etc/conf.d/rc să aibă o altă însemnătate prin utilizarea variabilei RC_NET_STRICT_CHECKING.

Valoare Descriere
none Serviciul net este considerat întotdeauna activ
no În principiu, aceasta înseamnă că cel puţin un serviciu net.* în afară de net.lo trebuie să fie activ. Aceasta poate fi utilizată de utilizatorii de sisteme notebook ce deţin o interfaţă WIFI şi o interfaţă statică, şi doresc ca doar una să fie activă în orice moment au nevoie de o interfaţă activă.
lo Aceasta este similară cu opţiunea no, numai că şi net.lo este luată în considerare. Acest lucru este folositor utilizatorilor cărora nu le pasă ca o anume interfaţă de reţea să fie activă la boot.
yes Pentru aceasta, TOATE interfeţele de reţea TREBUIE să fie active pentru ca serviciul net să fie considerat activ.

Dar ce se întâmplă în situaţia în care net.br0 depinde de net.eth0 şi net.eth1? net.eth1 poate fi un dispozitiv wireless sau PPP ce necesită configurare înainte să fie adăugate în bridge. Aceasta nu se poate înfăptui dacă /etc/init.d/net.br0 este un link simbolic la net.lo.

Răspunsul este crearea propriei funcţii depend() în /etc/conf.d/net

Cod 1.1: dependenţă net.br0 în /etc/conf.d/net

# Puteţi utiliza orice dependenţă (use, after, before) ca în script-urile curente
depend_br0() {
  need net.eth0 net.eth1
}

Pentru o discuţie mai detaliată despre dependenţă, consultaţi secţiunea ("Scrierea Script-urilor de Iniţializare") din Manualul Gentoo.

1.  Nume de variabile şi valori

Numele de variabile este dinamic. Acestea urmează în mod normal, structura de variabila_${interfata|mac|essid|apmac}. Spre exemplu, variabila dhcpcd_eth0 are ca valoare opţiunile dhcpcd pentru eth0 şi dhcpcd_essid are ca valoare opţiunile dhcpcd când oricare interfaţă se conectează la numele ESSID "essid".

Oricum, nu este nici o regulă principală şi rapidă ce defineşte faptul că numele interfeţelor trebuie să fie ethx. De fapt, multe interfeţe wireless au numele interfeţelor ca wlanx, rax cât şi ethx. De asemenea, unele interfeţe definite de utilizator, cum ar fi sisteme bridge, li se poate desemna orice nume, cum ar fi foo. Mai interesant, dispozitivele wireless Access Point pot avea nume cu caractere non-alfanumerice conţinute - aceasta este important, deoarece puteţi configura parametrii de reţea pentru fiecare nume ESSID.

Dezavantajul îl reprezintă faptul că Gentoo utilizează variabile bash pentru reţea - iar bash nu poate utiliza altceva în afara caracterelor alfanumerice din engleză. Pentru a trece peste această limitare, noi modificăm fiecare caracter ce nu este unul alfanumeric englezesc, într-un caracter _.

Un alt dezavantaj al bash este conţinutul variabilelor - unele caractere trebuie să fie reprezentate escape. Aceasta se poate efectua prin plasarea caracterului \ în faţa caracterului ce trebuie reprezentat escape. Mai jos aveţi o listă a caracterelor ce trebuie reprezentate escape în acest mod: ", ' şi \.

În acest exemplu, vom utiliza nume wireless ESSID, deoarece acestea pot conţine cea mai mare plajă de caractere. Vom utiliza ESSID My "\ NET.

Cod 1.1: exemplu de nume de variabilă

# Aceasta funcţionează, însă domeniul este invalid
dns_domain_My____NET="My \"\\ NET"

# Comanda de mai sus setează domeniul dns la valoarea My "\ NET când o placă wireless
# se conectează la un dispozitiv AP al cărui nume ESSID este My "\ NET

Actualizat la 22 Decembrie 2005

Versiunea originală a acestui document a fost actualizată ultima dată la 19 August 2011

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.