|
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 |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
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 |
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 |
dns_domain_My____NET="My \"\\ NET"
|
|