Gentoo Logo

1.  Moduły sieciowe

Obecnie wspierane są modułowe skrypty sieciowe, co oznacza, że w prosty sposób można dodawać kolejne urządzenia sieciowe i moduły konfiguracyjne, zachowując zgodność z obecnie działającymi.

Moduły są domyślnie wczytywane w momencie gdy są potrzebne przez jakiś pakiet. Jeżeli zostanie zdefiniowany moduł, który nie posiada zainstalowanego pakietu, wyświetlony zostanie błąd z komunikatem mówiącym jaki pakiet należy doinstalować. Najczęściej ustawień modułów używa się jedynie wtedy, gdy zostały zainstalowane dwa lub więcej pakiety, które udostępniają tę samą usługę i należy wyznaczyć która usługa ma pierwszeństwo.

Uwaga: Wszystkie omówione w tym rozdziale ustawienia powinny być wpisane do pliku /etc/conf.d/net, chyba, że zaznaczymy inaczej.

Listing 1.1: Ustawienia modułów

# iproute2 ważniejsze niż ifconfig
modules=( "iproute2" )

# Można również określić inne moduły dla interfejsu.
# W tym przypadku pump jest ważniejsze niż dhcpcd
modules_eth0=( "pump" )

# Możliwe jest również określenie których modułów nie używać wcale -
# przykładowo może być używana kliencka lub kontrolowana przez linux-wlan-ng
# konfiguracja wifi, jednakże zachodzi potrzeba skonfigurowania własnych
# ustawień sieciowych dla każdego ESSID-a z którym sieć jest powiązana osobno.

modules=( "!iwconfig" )

1.  Kontrolery sieciowe

Dostępne są dwa pakiety służące do kontrolowania interfejsów sieciowych: ifconfig oraz iproute2. Potrzebne jest jedno z tych dwóch, aby cokolwiek skonfigurować na urządzeniu sieciowym.

Domyślnie w Gentoo używane jest ifconfig i jest dostępny w profilu systemowym. iproute2 jest potężniejszy i elastyczniejszy, ale nie jest załączany domyślnie.

Listing 1.1: Aby zainstalować iproute2

# emerge sys-apps/iproute2

# Aby iproute2 miało wyższy priorytet niż ifconfig, w przypadku gdy
obydwa są zainstalowane
modules=( "iproute2" )

Jako że ifconfig oraz iproute2 są podobne w działaniu, można pozwolić, aby ich podstawowa konfiguracja współpracowała ze sobą. Dla przykładu, poniższe linijki współpracują z obydwoma programami.

Listing 1.1: Przykłady dla ifconfig oraz iproute2

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# Można również zdefiniować adres broadcast
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

1.  DHCP

DHCP to pobieranie informacji o sieci (adres IP, serwery DNS, bramka, etc.). Oznacza to, że jeżeli jest serwer DHCP w sieci, należy wskazać komputerom klienckim, aby używały serwera DHCP, dzięki czemu sieć zostanie skonfigurowana automatycznie. Oczywiście, samodzielnie trzeba będzie skonfigurować takie rzeczy jak sieć bezprzewodowa, PPP czy inne, które są wymagane, zanim będzie można skorzystać z DHCP.

Z DHCP można skorzystać za pomocą dhcpcd, dhclient, pump lub udhcpc. Każdy z nich posiada swoje zalety i wady. Oto krótkie wprowadzenie.

Moduł DHCP Pakiet Zalety Wady
dhclient net-misc/dhcp Stworzone przez ISC, te same osoby które stworzyły BIND DNS Bardzo konfigurowalne. Konfiguracja jest bardzo skomplikowana, oprogramowanie jest dość duże, nie można otrzymać serwerów NTP z DHCP i domyślnie nie jest wysyłana nazwa hosta.
dhcpcd net-misc/dhcpcd Przez długi czas jako domyślny w Gentoo, nie związany z zewnętrznymi narzędziami, aktywnie rozwijany przez Gentoo Bywa powolny, nie zawsze potrafi przejść w tryb demona
pump net-misc/pump Niewielkie rozmiary, nie związany z zewnętrznymi narzędziami Brak wsparcia ze strony twórców, źle działa przy połączeniach modemowych, nie można otrzymać serwerów NIS z DHCP
udhcpc net-misc/udhcp Niewielkie rozmiary - najmniejszy dostępny klient dhcpd, stworzony dla systemów wbudowanych Żadna dystrybucja nie używa go jako domyślnego, nie można ustawić czasu wygaśnięcia dłuższego niż 3 sekundy

Jeżeli jest zainstalowanych więcej niż jeden klient DHCP, należy określić który ma być używany. W innym przypadku zostanie użyty dhcpcd, jeżeli jest dostępny.

W celu wysłania określonych opcji do modułu dhcp, należy użyć module_eth0="..." (należy zmienić module na nazwę modułu dhcp, który jest używany, np. dhcpcd_eth0).

Dokładamy starań, aby DHCP było możliwie agnostyczne - wspieramy wobec tego następujące polecenia używając zmiennej dhcp_eth0. Domyślnie żadna z tych zmiennych nie jest ustawiona.

  • release - uwalnia adres IP do ponownego użytku
  • nodns - nie nadpisuje /etc/resolv.conf
  • nontp - nie nadpisuje /etc/ntp.conf
  • nonis - nie nadpisuje /etc/yp.conf

Listing 1.1: Przykładowa konfiguracja DHCP w /etc/conf.d/net

# Potrzebne tylko wtedy, gdy jest więcej niż jeden moduł DHCP
modules=( "dhcpcd" )

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # Wygaśnięcie po 10 sekundach
dhcp_eth0="release nodns nontp nonis" # Zdobywa jedynie adres

Uwaga: dhcpcd, udhcpc oraz pump domyślnie wysyłają aktualną nazwę hosta do serwera DHCP wobec czego nie trzeba tego definiować.

1.  ADSL z PPPoE/PPPoA

Na początek należy zainstalować oprogramowanie do ADSL-a.

Listing 1.1: Instalacja pakietu ppp

# emerge net-dialup/ppp

Uwaga: Jeżeli potrzebujemy PPPoA należy się upewnić, że używamy >=baselayout-1.12.x.

Następnie, tworzymy skrypt internetowy PPP oraz skrypt dla interfejsu sieciowego, który będzie używał PPP.

Listing 1.1: Tworzenie skryptu PPP oraz sieciowego

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Należy się upewnić, że posiadamy ustawioną zmienną RC_NET_STRICT_CHECKING="yes" w pliku /etc/conf.d/rc.

Następnie odpowiednio uzupełniamy plik /etc/conf.d/net.

Listing 1.1: Podstawowa konfiguracja PPPoE

config_eth0=( null ) (Używamy nazwy własnego interfejsu sieciowego)
config_ppp0=( "ppp" )
link_ppp0="eth0" (Używamy nazwy własnego interfejsu sieciowego)
plugins_ppp0=( "pppoe" )
username_ppp0='user'
password_ppp0='password'
pppd_ppp0=(
   "noauth"
   "defaultroute"
   "usepeerdns"
   "holdoff 3"
   "child-timeout 60"
   "lcp-echo-interval 15"
   "lcp-echo-failure 3"
   noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)

depend_ppp0() {
  need net.eth0
}

Hasło możemy również przechowywać w pliku /etc/ppp/pap-secrets.

Listing 1.1: Przykładowy plik /etc/ppp/pap-secrets

# * jest bardzo ważna
"username"  *  "password"

Jeżeli używamy PPPoE z modemem USB musimy zainstalować br2684ctl. Aby poprawnie go skonfigurować należy przeczytać /usr/portage/net-dialup/speedtouch-usb/files/README.

Ważne: Powinniśmy uważnie przeczytać sekcje dotyczące ADSL i PPP znajdujące się w pliku /etc/conf.d/net.example. Zawarte są tam bardziej szczegółowe wyjaśnienia opcji PPP, których zapewne będziemy potrzebować.

1.  APIPA {Automatyczne prywatne adresowanie IP (ang. Automatic Private IP Addressing)}

APIPA stara sie znaleźć wolny adres w zakresie 169.254.0.0-169.254.255.255 poprzez losowe odpytywanie sieci za pomocą danego interfejsu. Jeżeli nie ma żadnej odpowiedzi, taki adres jest przypisywany do interfejsu.

Przydaje się tylko w sieciach LAN gdzie nie ma serwera DHCP, które nie mają połączenia z Internetem i gdzie wszystkie komputery używają APIPA.

Aby było wsparcie dla APIPA, należy zainstalować net-misc/iputils lub net-analyzer/arping.

Listing 1.1: Konfiguracja APIPA w /etc/conf.d/net

# Najpierw próbujemy skonfigurować poprzez DHCP - jeżeli to się nie powiedzie, próbujemy APIPA
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# Należy użyć jedynie APIPA
config_eth0=( "apipa" )

1.  Wiązanie urządzeń sieciowych

Aby mieć możliwość łączenia urządzeń sieciowych, należy zainstalować net-misc/ifenslave.

Łączenie urządzeń sieciowych stosuje się w celu zwiększenia przepustowości sieci. Jeżeli w komputerze są do dyspozycji dwie karty sieciowe znajdujące się w tej samej sieci, można je połączyć tak, żeby aplikacje w rzeczywistości używały obu urządzeń jednocześnie.

Listing 1.1: Konfiguracja łączenia w /etc/conf.d/net

Aby połączyć urządzenia razem
slaves_bond0="eth0 eth1 eth2"

# Jeżeli nie trzeba przypisywać adresu IP do interfejsu
config_bond0=( "null" )

# Zależne od eth0, eth1 oraz eth2 jako, że mogą wymagać dodatkowej konfiguracji
depend_bond0() {
  need net.eth0 net.eth1 net.eth2
}

1.  Mostkowanie (wsparcie dla 802.1d)

Aby mieć możliwość mostkowania, należy zainstalować net-misc/bridge-utils.

Mostkowanie jest używane do łączenia w całość dużych sieci. Dla przykładu można mieć serwer, który łączy się z internetem przy pomocy ADSL oraz ma połączenie z bezprzewodową kartą sieciową by umożliwić innym komputerom łączenie się z internetem przy pomocy modemu ADSL. Można stworzyć mostek do połączenia obydwu interfejsów.

Listing 1.1: Konfiguracja mostka w /etc/conf.d/net

# Konfiguracja mostka - "man brctl", aby uzyskać szczegółowe informacje
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# Aby dodać porty do mostka br0
bridge_br0="eth0 eth1"

# Należy skonfigurować porty jako wartość null tak aby dhcp nie uruchomiło się
config_eth0=( "null" )
config_eth1=( "null" )

# Na koniec należy nadać mostkowi adres - można również użyć DHCP
config_br0=( "192.168.0.1/24" )

# Należy zależeć od eth0 oraz eth1 jako że mogą wymagać dodatkowej konfiguracji
depend_br0() {
  need net.eth0 net.eth1
}

Ważne: Aby korzystać z niektórych ustawień mostków, warto zajrzeć do dokumentacji opisującej (nazwy zmiennych).

1.  Adresy MAC

W celu zmiany adresów MAC interfejsów sieciowych wystarczy posiadać zainstalowany sys-apps/baselayout-1.11.14 lub nowszy. Jeżeli zachodzi potrzeba zamiany adresu na losowy lub baselayout jest starszy od wyżej wymienionej wersji, należy zainstalować net-analyzer/macchanger.

Listing 1.1: Przykład zmiany adresu MAC

# Aby przypisać adres MAC konkretnemu urządzeniu
mac_eth0="00:11:22:33:44:55"

# Aby tylko ostatnie trzy bajty były losowe
mac_eth0="random-ending"

# Aby wybierać losowo pomiędzy tym samym fizycznym połączeniem (np.
# światłowód, miedź lub bezprzewodowo), wszyscy producenci
mac_eth0="random-samekind"

# Aby wybierać losowo pomiędzy różnymi fizycznymi połączeniami (np.
światłowód, miedź lub bezprzewodowo), wszyscy producenci
mac_eth0="random-anykind"

# Pełna losowość - UWAGA: niektóre adresy MAC wygenerowane w ten sposób
mogą zachowywać się inaczej niż powinny
mac_eth0="random-full"

1.  Tunelowanie

Nie trzeba niczego instalować, aby korzystać z tunelowania, gdyż kontroler sieciowy posiada już tę możliwość.

Listing 1.1: Konfiguracja tunelowania w /etc/conf.d/net

# Dla tuneli GRE
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# Dla tuneli IPIP
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# Aby skonfigurować interfejs
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )

1.  VLAN (wsparcie dla 802.1q)

Aby posiadać wsparcie dla VLAN, należy zainstalować net-misc/vconfig.

VLAN to grupa urządzeń sieciowych które zachowują się tak, jakby były podłączone do jednego segmentu sieciowego - nawet jeśli tak nie jest. Członkowie VLAN-u mogą jedynie widzieć innych członków VLAN-u, nawet jeśli współdzielą sieć z innymi urządzeniami.

Listing 1.1: Konfiguracja VLAN w /etc/conf.d/net

# Wyznaczanie numerów VLAN dla urządzeń
# Należy być pewnym, że ID VLAN-u NIE składają się z zera
vlans_eth0="1 2"

# Można również skonfigurować sam VLAN
# wystarczy zajrzeć do manuala vconfig, aby uzyskać szczegółowe
#informacje
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# Konfiguracja interfejsu w tradycyjny sposób
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Ważne: Aby używać niektórych ustawień VLAN, może zajść potrzeba zajrzenia do dokumentacji opisującej (nazwy zmiennych).

Zaktualizowano 12 lutego 2009

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 23 października 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: Gentoo zapewnia wiele różnych rozwiązań sieciowych, w tym rozdziale omawiamy konfigurację różnych klientów DHCP, bonding, bridging oraz sieci VLAN.

Donate to support our development efforts.

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