Gentoo Logo

1.  Zaawansowana konfiguracja

Zmienna config_eth0 jest sercem konfiguracji interfejsu sieciowego. Jest to lista poleceń konfiguracyjnych wysokiego poziomu (w tym przypadku urządzenia eth0). Każde polecenie z listy poleceń jest uruchamiane w sposób sekwencyjny. Urządzenie uruchomi się jeżeli co najmniej jedno polecenie zostanie poprawnie uruchomione.

Poniżej znajduje się lista wbudowanych poleceń.

Polecenie Opis
null Nie robi nic
noop Jeżeli urządzenie działa i jest przypisany adres, zakończy pomyślnie konfigurację.
adres IPv4 lub IPv6 Dodaje wskazany adres do interfejsu
dhcp, adsl lub apipa (lub dowolne polecenie pochodzące z modułu producenta) Uruchamia moduł, który posiada dane polecenie. Dla przykładu, dhcp uruchomi moduł, który zapewnia DHCP i który może być którymś z grupy dhcpcd, dhclient lub pump.

Jeżeli jakieś polecenie się nie wykona, można zdefiniować takie które będzie wykonywane zamiennie. Polecenie to musi pasować dokładnie do struktury konfiguracji głównej.

Można połączyć te polecenia razem. Poniżej znajduje się kilka przykładów.

Listing 1.1: Przykłady konfiguracji

(Dodawanie trzech adresów IPv4)
config_eth0=(
   "192.168.0.2/24"
   "192.168.0.3/24"
   "192.168.0.4/24"
)

(Dodawanie adresu IPv4 oraz dwóch adresów IPv6)
config_eth0=(
   "192.168.0.2/24"
   "4321:0:1:2:3:4:567:89ab"
   "4321:0:1:2:3:4:567:89ac"
)


# Zachowuje przypisany adres, chyba że urządzenie zostanie wyłączone
# - w takim wypadku należy przypisać kolejny adres poprzez DHCP.
# Jeżeli pobranie adresu przez DHCP nie powiedzie się - zostanie
# przypisany stały adres IP poprzez APIPA
config_eth0=(
   "noop"
   "dhcp"
)
fallback_eth0=(
   "null"
   "apipa"
)

Uwaga: Przy używaniu modułu ifconfig oraz dodawaniu więcej niż jednego adresu zostają utworzone aliasy dla każdego dodatkowego adresu. Wobec tego, powyższe dwa przykłady utworzą interfejsy eth0, eth0:1 oraz eth0:2. Nie można nic specjalnego z tymi interfejsami zrobić, gdyż jądro oraz programy będą traktować interfejsy eth0:1 oraz eth0:2 jako eth0.

Ważne: Kolejność zapasowej konfiguracji jest bardzo ważna! Gdyby polecenie null nie zostało zdefiniowane, to polecenie apipa zostałoby wykonane tylko w przypadku gdyby polecenie noop nie powiodło się.

Uwaga: (APIPA) oraz (DHCP) będą omawiane później.

1.  Zależności sieciowe

Skrypty startowe znajdujące się w /etc/init.d mogą być zależne od konkretnego urządzenie sieciowego lub po prostu od usługi net. Usługa net może być zdefiniowana w /etc/conf.d/rc za pomocą zmiennej RC_NET_STRICT_CHECKING i może oznaczać różne rzeczy.

Wartość Opis
none Zakłada, że usługa sieci net jest zawsze włączona
no Oznacza, że co najmniej jedna usługa sieciowa net.* prócz net.lo musi być włączona. Opcja ta może być używana przez właścicieli komputerów przenośnych z kartami wifi oraz zwykłymi kartami sieciowymi, w których powinno być uruchomione jednocześnie tylko jedno urządzenie.
lo Działa podobnie jak opcja no, z tą różnicą, że net.lo również jest wliczane. Jest to szczególnie przydatne dla osób, którym nie robi różnicy czy uruchamia się jakiekolwiek urządzenie sieciowe.
yes Ta opcja oznacza, że WSZYSTKIE urządzenia sieciowe MUSZĄ być uruchomione, aby można było uznać usługę net za działającą.

Ale co z net.br0 zależnym od net.eth0 oraz net.eth1? net.eth1 może być urządzeniem bezprzewodowym lub ppp, które potrzebuje skonfigurowania zanim zostanie uruchomione. Czynność ta nie może być dokonana w /etc/init.d/net.br0, gdyż jest to link symboliczny do net.lo.

Rozwiązaniem tego problemu jest samodzielne stworzenie funkcji depend() w /etc/conf.d/net

Listing 1.1: Zależność net.br0 w /etc/conf.d/net

# Można użyć dowolnej zależności (use, after, before) według przykładów znalezionych w skryptach startowych
depend_br0() {
   need net.eth0 net.eth1
}

Więcej informacji o zależnościach można znaleźć w sekcji dotyczącej (tworzenia skryptów inicjacyjnych) w Podręczniku Gentoo.

1.  Nazwy zmiennych i ich wartości

Nazwy zmiennych są dynamiczne. Najczęściej posiadają one strukturę zmienna_${interfejs|mac|essid|apmac}. Przykładowo, zmienna dhcpcd_eth0 przechowuje wartość dla opcji dhcpcd dla interfejsu eth0, zaś dhcpcd_essid przechowuje wartości dla opcji dhcpcd gdy interfejs podłączy się do ESSID o nazwie "essid".

Jednakże, nie ma zasady mówiącej o tym, iż nazwy interfejsów muszą mieć format ethx. Wiele urządzeń bezprzewodowych posiadają nazwy takie jak wlanx, rax, jak również eth.x Dodatkowo, niektóre interfejsy sieciowe zdefiniowane przez użytkowników, takie jak mostki, mogą posiadać dowolną nazwą, np. foo. Aby urozmaicić życie, bezprzewodowe punkty dostępu mogą mieć nazwy ze znakami nie alfanumerycznymi - jest to ważne, gdyż część opcji można konfigurować dla konkretnego ESSID-a.

Na domiar złego, Gentoo używa zmiennych bashowych do kontrolowania sieci - a bash nie potrafi korzystać z niczego co pochodzi spoza angielskich znaków alfanumerycznych. Aby ominąć te ograniczenie, każdy znak pochodzący spoza znaków dopuszczalnych zamieniany jest na znak _.

Kolejnym ograniczeniem powłoki bash jest to, że niektóre ze znaków muszą być specjalnie cytowane, czyli musi pojawić się przed nimi symbol \. Znaki, których to dotyczy to ", ' oraz \.

W poniższym przykładzie, zostaje użyty bezprzewodowy ESSID z najszerszym możliwym zestawem znaków. Zostanie użyty ESSID My "\ NET:

Listing 1.1: przykład nazewnictwa zmiennej

(Poniższe działa, ale domena jest nieprawidłowa)
dns_domain_My____NET="My \"\\ NET"

(Powyższe ustawienia ustawiają domenę dns jako My "\ NET gdy karta
#bezprzewodowa połączy się z punktem dostępu którego ESSID to My "\ NET)

Zaktualizowano 12 lutego 2009

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 19 sierpnia 2011. Jeśli chcesz pomóc w aktualizacji tego dokumentu do najnowszej wersji, skontaktuj się z Łukaszem Damentko, koordynatorem polskiego projektu tłumaczeń dokumentacji Gentoo.

Podsumowanie: Przed przejściem do modularnej pracy w sieci musimy nauczyć się zasad jakimi rządzi się konfiguracja.

Donate to support our development efforts.

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