<< Back to man.lupaworld.com


[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]

Debian Reference
Część 10 - Konfiguracja sieci


Ten rozdział skupia się na administracji siecią w sytemie Debian. Ogólne wprowadzenie do sieci w GNU/Linuksie możesz przeczytać w Net-HOWTO.

By system Debian mógł korzystać z internetu, jego interfejsy sieciowe muszą być obsługiwane przez jądro oraz poprawnie skonfigurowane.

Pierwszym wymaganiem jest obsługa przez jądro urządzenia sieciowego takiego jak karta sieciowa, karta Wi-Fi czy modem. By uzyskać tę obsługę, możliwe, że będziesz musiał przekompilować jądro lub załadować moduły tak jak to opisano w Jądro systemu Linux w Debianie, Część 7.

Konfiguracja sieciowych urządzeń jest opisana poniżej. Informacje z tego rozdziału zostały zaktualizowane dla Sarge. Spora część nie dotyczy wcześniejszych wersji.


10.1 Podstawy sieciowe

Komputer z systemem Debian może posiadać wiele interfejsów, każdy z innym adresem IP. Interfejsy mogą być różnego typu, włączając:

Istnieje jeszcze wiele innych urządzeń sieciowych, włączając SLIP, PLIP (szeregowa i równoległa linia IP), urządzenia "shaper" służące do kontroli przepustowości na innych interfejsach, frame relay, AX.25, X.25, ARCnet, i LocalTalk.

Każdy interfejs sieciowy podłączony bezpośrednio do internetu (albo sieci bazującej na IP) jest identyfikowany za pomocą unikalnego 32 bitowego adresu IP. [43] Adres IP może być podzielony na część, która określa sieć oraz część określająca komputer. Jeśli weźmiesz adres IP, ustawisz na 1 wszystkie bity, które są częścią adresu sieci i na 0 wszystkie bity, które są częścią adresu komputera, to otrzymasz maskę sieciową danej sieci.

Dawniej, sieci IP były pogrupowane w klasy, których część sieciowa adresu była długa na 8, 16 lub 24 bity. [44]

               Adresy IP                      maska sieci     długość
     Klasa A   1.0.0.0     - 126.255.255.255  255.0.0.0     =  /8
     Klasa B   128.0.0.0   - 191.255.255.255  255.255.0.0   = /16
     Klasa C   192.0.0.0   - 223.255.255.255  255.255.255.0 = /24

Adresy IP spoza tych zakresów są używane do specjalnych celów.

W każdej klasie istnieją zakresy adresów zarezerwowanych do użycia w sieciach lokalnych (LAN). Istnieje gwarancja, że te adresy nie będą w konflikcie z innymi adresami w internecie. (Z tego samego powodu, jeśli jeden z takich adresów jest przydzielony do komputera, ten komputer nie może mieć bezpośredniego dostępu do internetu, a tylko poprzez bramkę, która pracuje jako serwer pośredniczący dla usług lub wykonuje translację adresów (NAT)). W poniższej tabeli są wyszczególnione te zakresy adresów wraz z ich liczbą w każdej klasie.

               adres sieci                  długość  ile
     Klasa A   10.x.x.x                     /8       1
     Klasa B   172.16.x.x -  172.31.x.x     /16      16
     Klasa C   192.168.0.x - 192.168.255.x  /24      256

Pierwszy adres w każdej sieci jest równocześnie adresem tej sieci. Ostatni adres jest adresem rozgłoszeniowym sieci (broadcast). [45] Wszystkie inne adresy mogą być przydzielane komputerom w sieci. Najczęściej pierwszy lub ostatni adres jest przydzielany bramce internetowej danej sieci.

Tablica routingu zawiera informacje jądra na temat tego jak przesyłać pakiety na ich miejsce przeznaczenia. Poniżej znajduje się przykładowa tablica routingu z komputera znajdującego się w sieci lokalnej o adresie 192.168.50.x/24. Komputer 192.168.50.1 (również w tej sieci) jest routerem dla sieci korporacyjnej 172.20.x.x/16, a komputer 192.168.50.254 (również w tej sieci) jest routerem dla internetu.

     # route
     Kernel IP routing table
     Destination   Gateway        Genmask       Flags Metric Ref Use Iface
     127.0.0.0     *              255.0.0.0     U     0      0     2 lo
     192.168.50.0  *              255.255.255.0 U     0      0   137 eth0
     172.20.0.0    192.168.50.1   255.255.0.0   UG    1      0     7 eth0
     default       192.168.50.254 0.0.0.0       UG    1      0    36 eth0

Adresy IP w tablicy mogą pojawia się również jako nazwy, które są pobierane z pliku /etc/networks lub poprzez mechanizm rozwiązujący nazwy (C Library resolver).

Dodatkowo, oprócz routingu, jądro może wykonywać translację adresów, ograniczanie przepustowości czy filtrowanie.

Zobacz Net-HOWTO i other networking HOWTOs po więcej informacji.


10.2 Zaawansowana konfiguracja sieci

Tradycyjne zaawansowane narzędzia do konfiguracji sieci w GNU/Linuksie to programy ifconfig i route znajdujące się w pakiecie net-tools. Te narzędzia zostały oficjalnie zastąpione przez ip z pakietu iproute. Program ip działa z Linuksem 2.2 lub nowszymi i jest bardziej dostosowany. Jednakże, stare narzędzia nadal działają i są znane większości użytkowników.


10.2.1 Zaawansowana konfiguracja sieci – ifconfig i route

Poniżej ilustracja jak zmienić adres IP interfejsu eth0 z 192.168.0.3 na 192.168.0.111 oraz ustawić eth0 by przesyłane były przez niego dane do sieci 10.0.0.0 poprzez 192.168.0.1. Zaczynamy od uruchomienia ifconfig i route bez żadnych argumentów by wyświetlić aktualny stan wszystkich interfejsów oraz routing.

     # ifconfig
     eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
          inet addr:192.168.0.3  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:13479541 (12.8 MiB)  TX bytes:20262643 (19.3 MiB)
          Interrupt:9
     
     lo   Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:22685256 (21.6 MiB)  TX bytes:22685256 (21.6 MiB)
     # route
     Kernel IP routing table
     Destination  Gateway      Genmask          Flags Metric Ref Use Iface
     192.168.0.0  *            255.255.0.0      U     0      0     0 eth0
     default      192.168.0.1  255.255.255.255  UG    0      0     0 eth0

Na początek wyłączamy interfejs.

     # ifconfig eth0 inet down
     # ifconfig
     lo   Link encap:Local Loopback
       ... (brak pozycji eth0)
     # route
       ... (brak wpisów w tabeli routingu)

Następnie przywracamy go z powrotem z nowym adresem IP i nowym routingiem.

     # ifconfig eth0 inet up 192.168.0.111 \
                netmask 255.255.0.0 broadcast 192.168.255.255
     # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0

Rezultat:

     # ifconfig
     eth0 Link encap:Ethernet  HWaddr 08:00:46:7A:02:B0
          inet addr:192.168.0.111  Bcast:192.168.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ...
     
     lo   Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          ...
     # route
     Kernel IP routing table
     Destination  Gateway      Genmask      Flags Metric Ref Use Iface
     192.168.0.0  *            255.255.0.0  U     0      0     0 eth0
     10.0.0.0     192.168.0.1  255.0.0.0    UG    0      0     0 eth0

Więcej informacji uzyskasz w ifconfig(8) i route(8).


10.2.2 Zaawansowana konfiguracja sieci – ip

Odpowiedniki poprzednich poleceń z wykorzystaniem ip zamiast ifconfig i route są:

Program ip wyświetla składnię swoich poleceń gdy jest uruchamiany z argumentem help. Przykładowo ip link help wyświetli:

     Usage: ip link set DEVICE { up | down | arp { on | off } |
                                  dynamic { on | off } |
                                  multicast { on | off } | txqueuelen PACKETS |
                                  name NEWNAME |
                                  address LLADDR | broadcast LLADDR |
                                  mtu MTU }
            ip link show [ DEVICE ]

Zobacz również ip(8).


10.2.3 Konfiguracja interfejsu Wi-Fi

Dla interfejsów Wi-Fi wraz z ifconfig lub ip używany jest program iwconfig z pakietu wireless-tools.

Zobacz iwconfig(8).


10.2.4 Konfiguracja interfejsu PPP

Jeśli korzystasz z internetu poprzez modem podpięty do wdzwanianej linii telefonicznej wtedy połączenie jest negocjowane przy pomocy protokołu Point-to-Point (PPP). Takie połączenia są dostępne jako interfejsy sieciowe ppp0, ppp1 i tak dalej.

Interfejs PPP jest zarządzany przez demona PPP pppd z pakietu ppp. Z tego powodu dla użytkownika, konfigurować interfejs PPP znaczy konfigurację pppd.


10.2.4.1 Ręczna konfiguracja pppd

By zestawić połączenie sieciowe, port komunikacyjny (zazwyczaj port szeregowy) musi zostać otwarty, polecenia muszą zostać przesłane do urządzenia łączącego się (zazwyczaj modemu), numer telefoniczny musi zostać wybrany, tożsamość musi zostać zweryfikowana przez odległy demon PPP, interfejs PPP musi zostać utworzony i wtedy tablice routingu muszą zostać odpowiednio zmodyfikowane by ruch był wysyłany przez to połączenie. pppd może wykonać to wszystko, a w związku z tym posiada bardzo długą listę dostępnych opcji. Opcje te zostały opisane w pppd(8).

W systemie Debian globalne opcje ustawia się w pliku /etc/ppp/options. Opcje specyficzne dla użytkownika można ustawić w ~/.ppprc. Opcje zależne od portu komunikacyjnego są przechowywane w /etc/ppp/options.nazwa_portu. Przykładowo, załóżmy, że masz dwa modemy — wbudowany modem Lucent LT dostępny przez /dev/LT-modem i zewnętrzny modem dostępny przez /dev/ttyS0. Stwórz dwa poniższe pliki z opcjami.

     # cat > /etc/ppp/options.LT-modem <<EOF
     115200
     init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem"
     EOF
     # cat > /etc/ppp/options.ttyS0 <<EOF
     115200
     init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0"
     EOF

To odnosi się do następujących skryptów chat. Najpierw /etc/chatscripts/setup-LT-modem.

     ABORT ERROR
     '' ATZ
     OK 'ATW2X2 S7=70 S11=55'
     OK AT

A teraz /etc/chatscripts/setup-ttyS0.

     ABORT ERROR
     '' ATZ
     OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0'
     OK AT

Zawartość tych plików oczywiście zależy od Twojego sprzętu.

Opcje mogą również zostać przekazane do pppd jako argumenty.

W systemie Debian pppd jest zazwyczaj uruchamiany używając polecenia pon. Kiedy pon zostaje użyty, jego pierwszym argumentem jest nazwa pliku z opcjami znajdującego się w /etc/ppp/peers/, który będzie odczytany przez pppd. [46] To miejsce gdzie ustawiasz opcje specyficzne na przykład dla konkretnego połączenia — konkretnego dostawcy internetu (ISP).

Załóżmy przykłado że dojeżdżasz pomiędzy Amsterdamem i Den Haag. W każdym mieście masz dostęp do dwóch dostawców internetu — Planet i KPN. Najpierw utwórz podstawowy plik z opcjami dla każdego dostawcy.

     # cat > /etc/ppp/peers/KPN <<EOF
     remotename KPN
     noauth
     user kpn
     noipdefault
     ipparam KPN
     EOF
     # cat > /etc/ppp/peers/Planet <<EOF
     remotename Planet
     auth
     user user3579@planet.nl
     noipdefault
     mru 1000
     mtu 1000
     ipparam Planet
     EOF

Te pliki ustawiają różne opcje pomiędzy dostawcami. Wspólne opcje mogą być umieszczone w /etc/ppp/options lub w jednym z plików związanym z konkretnym interfejsem.

Teraz stwórz pliki z opcjami dla każdego dostawcy w każdym mieście. W naszym przykładzie jedyną różnicą w połączeniach do dostawców w różnych lokalizacjach będzie wymagany skrypt chat. (Skrypt chat jest różny ponieważ lokalny dostęp do numeru telefonicznego jest inny.)

     # cat > /etc/ppp/peers/KPN-Amsterdam <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam"
     file /etc/ppp/peers/KPN
     EOF
     # cat > /etc/ppp/peers/KPN-DenHaag <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag"
     file /etc/ppp/peers/KPN
     EOF
     # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam"
     file /etc/ppp/peers/Planet
     EOF
     # cat > /etc/ppp/peers/Planet-DenHaag <<EOF
     connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag"
     file /etc/ppp/peers/Planet
     EOF

Każda dyrektywa file załącza jeden z plików z opcjami pokazanych wcześniej. Dyrektywa connect określa polecenie z którego skorzysta pppd do nawiązania połączenia. Zazwyczaj używa się programu chat do tego odpowiednio dostosowując skrypt chat do dostawcy. Poniżej skrypt chat dla Den Haag; skrypt dla Amsterdamu może być podobny z wyjątkiem numeru telefonu lub może się znacznie różnić jeśli tam dostawca oferuje usługi poprzez inną firmę.

     # cat > /etc/chatscripts/KPN-DenHaag <<EOF
     ABORT BUSY
     ABORT 'NO CARRIER'
     ABORT VOICE
     ABORT 'NO DIALTONE'
     ABORT 'NO DIAL TONE'
     ABORT 'NO ANSWER'
     ABORT ERROR
     OK-AT-OK ATDT 0676012321
     CONNECT 
     EOF
     # cat > /etc/chatscripts/Planet-DenHaag <<EOF
     ABORT BUSY
     ABORT 'NO CARRIER'
     ABORT VOICE
     ABORT 'NO DIALTONE'
     ABORT 'NO DIAL TONE'
     ABORT 'NO ANSWER'
     ABORT ERROR
     OK-AT-OK ATDT 0676002505
     CONNECT 
     EOF

By móc połączyć się z tymi dostawcami potrzebujesz nazwę klienta oraz hasło któe pppd może wykorzystać przy połączeniu. Te informacje przechowywane są albo w /etc/ppp/pap-secrets (jeśli używany jest protokół PAP) albo w /etc/ppp/chap-secrets (jeśli używany jest protokół CHAP). Mimo, że CHAP jest bardziej bezpieczny to PAP jest częściej używany. Ponieważ te pliki zawierają poufne informacje, grupa oraz inni nie powinni mieć uprawnień do czytania czy zapisywania ich. Format tych plików opisany jest w pppd(8). Hasło (trzecie pole) jest wybierane na podstawie nazwy klienta (pierwsze pole) i/lub nazwy serwera (drugie pole). Podczas łączenia się z dostawcami generalnie nie jest znana nazwa serwera więc przesyłana jest w zamian nazwa klienta; jest to wykonywane w powyższych plikach w liniach user w peers/KPN i peers/Planet.

     # nazwa klienta     nazwa serwera  hasło
     kpn                 *              kpn
     user3579@planet.nl  *              myfavoritepet

10.2.4.2 Konfiguracja pppd używając pppconfig

Szybkim sposobem na konfigurację pppd jest użycie programu pppconfig z pakietu o tej samej nazwie. pppconfig ustawia powyższe pliki po zadaniu użytkownikowi pytań w przyjaznym interfejsie.

Jeśli zamierzasz używać resolvconf upewnij się, że wybrałeś "None" na ekranie "Configure Nameservers".


10.2.4.3 Konfiguracja interfejsu PPP używając wvdial

Innym sposobem na używanie pppd jest uruchamianie go z wvdial który znajduje się w pakiecie wvdial. Zamiast uruchamiać pppd wraz z chat do negocjacji i nawiązania połączenia, wvdial sam wdzwania się i negocjuje połączenie a następnie uruchamia pppd do reszty zadań. Podając tylko numer telefonu, nazwę użytkownika i hasło wvdial radzi sobie z nawiązaniem połączenia w większości przypadków.


10.3 Przydzielanie nazwy komputerowi


10.3.1 Nazwa komputera

System Debian czasem potrzebuje identyfikacji poprzez nazwę. Do tych celów hostname jest zarządzany przez jądro.

Skrypt startowy /etc/init.d/hostname.sh ustawia nazwę komputera podczas uruchamiania systemu (używając polecenia hostname) i przetrzymuje ją w /etc/hostname. Ten plik powinien zawierać tylko nazwę komputera, a nie jego pełną nazwę domenową.

By wyświetlić aktualną nazwę komputera uruchom hostname bez argumentów.


10.3.2 Nazwa pocztowa (mailname)

mailname danego komputera jest nazwą, której programy związane z pocztą elektroniczną używają do identyfikacji komputera. Plik /etc/mailname zawiera tę nazwę zakończoną nową linią. Nazwa pocztowa jest zazwyczaj jedną z pełnych domenowych nazw komputera (fully qualified domain name). Zobacz mailname(5).

To co odbiorca wiadomości email wysłanej przez Twój system Debian widzi przy nagłówku From: zależy od tego jak serwer oraz klient pocztowy są skonfigurowane. Załóżmy, że lokalny użytkownik foo wysyła wiadomość z komputera o nazwie pocztowej mojkomputer.dom. W nagłówku From: wiadomości wychodzącej będzie:

Nawet jeśli klient ma ustawiony nagłówek From:, serwer może dodać nagłówek "Sender:foo@herman.dom" tak by zaznaczyć prawdziwe źródło pochodzenia.

Oczywiście jeśli serwer podejmie próbę podmienienia adresu tak jak zostało to omówione w Wyłapywanie poczty dla nieistniejących adresów w Eximie, Rozdział 9.6.1.3 i Zamiana adresów dla poczty wychodzącej poczty w Eximie, Rozdział 9.6.1.4, adres email widoczny dla odbiorcy może być zmieniony na cokolwiek.


10.4 Usługa nazw (DNS)

Komputery rozpoznawane są przez domenę tak samo jak przez adresy IP. DNS jest systemem typu klient-serwer, który zamienia nazwy na podstawie danych z serwerów nazw tak by nazwa była powiązana z adresem IP i innymi właściwościami komputera. Biblioteka GNU C resolver(3) może również poszukiwać adresów IP w plikach lub odwoływać się do Network Information Services (NIS).

By zobaczyć jaka nazwa domeny jest powiązana z lokalnym komputerem, użyj polecenia hostname --fqdn. Spowoduje to wyświetlenie pierwszej pełnej nazwy domenowej znalezionej dla lokalnego komputera przez program rozwiązujący nazwy. [47]


10.4.1 Resolver

Odszukiwaniem informacji o tym jaki adres IP jest powiązany z konkretną nazwą domeny zajmuje się resolver. Najczęściej używanym resolverem jest zbiór funkcji o tej nazwie (resolver(3)) w bibliotece GNU C. Innym jest FireDNS resolver z pakietu libfiredns.

To w jaki sposób resolver LIBC rozwiązuje nazwy jest zdefiniowane w lini hosts pliku konfiguracyjnego /etc/nsswitch.conf. Ta linia zawiera usługi, które powinny być użyte do rozwiązania nazwy: np. dns, files, nis, nisplus. [48] Zobacz nsswitch.conf(5). Dopóki używana jest usługa files, zachowanie resolvera definiuje również plik konfiguracyjny /etc/hosts. Zobacz hosts(5).

Wszystkie wymienione pliki są statyczne i mogą być edytowane przy pomocy ulubionego edytora.

Dopóiki używana jest usługa dns, zachowanie resolvera definiuje również plik konfiguracyjny /etc/resolv.conf. Zobacz resolv.conf(5). Jedną z najważniejszych funkcji resolv.conf jest lista adresów IP serwerów nazw z którymi będzie nawiązywany kontakt w celu rozwiązania nazwy. Ta lista często zależy od środowiska sieciowego, a ono może się zmieniać od czasu do czasu gdy komputer jest uruchomiony. Takie programy jak pppd i dhclient mają możliwość manipulowania plikiem resolv.conf, poprzez dodawanie i usuwanie linii, ale te funkcje nie zawsze działają poprawnie i konfliktują ze sobą. Pakiet resolvconf radzi sobie z tym problemem lepiej poprzez standard aktualizowania tego pliku. Zobacz Zarządzanie informacjami o serwerach nazw – resolvconf, Rozdział 10.4.2.


10.4.2 Zarządzanie informacjami o serwerach nazw – resolvconf

Pakiet resolvconf dostarcza standard do dynamicznego zarządzania informacją o dostępnych serwerach nazw. Rozwiązuje dawny problem zarządzania dynamiczną listą serwerów nazw dla resolvera i buforu DNS. Resolvconf ustawia się jako pośrednik między programami, które kontrolują interfejsy sieciowe i dostarczają informacji o serwerach nazw, a programami, które tych informacji potrzebują.

resolvconf jest zaprojektowany by działać, bez potrzeby jakiejkolwiek ręcznej konfiguracji. Jednakże pakiet ten jest raczej nowy i może wymagać ręcznej interwencji by działał poprawnie. To będzie z pewnością wymagane jeśli kiedykolwiek instalowałeś własne pakiety, które aktualizują /etc/resolv.conf: wtedy będziesz musiał wyłączyć te aktualizacje.

Szczegóły w /usr/share/doc/resolvconf/README.gz.


10.4.3 Buforowanie rozwiązanych nazw – dnsmasq

Jeżeli Twój serwer nazw nie musi być autorytatywnym dla domeny to lepiej włączyć buforowanie rozwiązywania nazw na przykład przy pomocy dnsmasq. Współpracuje dobrze z resolvconf.


10.4.4 Buforowanie rozwiązanych nazw – bind

Możesz również użyć bind9 lub binda jako lokalny bufor rozwiązanych nazw. Również dobrze współpracuje z resolvconf, ale w momencie pisania tego (październik 2003), trzeba ustawiać go ręcznie. Instrukcje w /usr/share/doc/resolvconf/README.gz.


10.4.5 Udostępnianie DNS – bind

Jeśli musisz udostępniać autorytatywnych informacji o nazwach dla domeny, potrzebujesz pełnego serwera nazw, takiego jak named, który znajduje się albo w pakiecie bind9 albo bind. Dla nowych instalacji zalecany jest bind9.

By zainstalować bind9, zainstaluj te podstawowe pakiety: bind9; dnsutils. Jeśli chcesz, możesz doinstalować również te pakiety z narzędziami: bind9-host; dns-browse; dnscvsutil; nslint. Jeśli chcesz, możesz doinstalować również pakiet z dokumentacją: bind9-doc. Jeśli chcesz, możesz doinstalować również pakiety deweloperskie: libbind-dev; libnet-dns-perl. Jeśli konfigurujesz interfejsy przy użyciu DHCP, to przydatn może okazać się pakiet: dhcp-dns.

Zainstaluj bind9 lub przekonfiguruj go przy pomocy dpkg-reconfigure by dokonać podstawowych ustawień. Konfiguracja dokonuje się poprzez edycję pliku named.conf. W systemie Debian ten plik znajduje się w /etc/bind/ i jest używany głównie do definicji podstawowych stref DNS; zawiera dwa inne pliki: named.conf.local, używany do definicji lokalnych stref, oraz named.conf.options, używany do ustawień opcji. Ten drugi jest przetwarzany przez resolvconf by utworzyć /var/run/bind/named.options, który jest identyczny z oryginalnym poza opcją forwarders, która zawiera listę aktualnie dostępnych nielokalnych serwerów nazw. By z niego skorzystać, zmień linię include w named.conf tak by zawierała /var/run/bind/named.options. Zobacz Zarządzanie informacjami o serwerach nazw – resolvconf, Rozdział 10.4.2.)

Pliki z danymi wprowadzone w named.conf* bez pełnej ścieżki będą przetrzymywane w /var/cache/bind/. To prawidłowe miejsce na przetrzymywanie plików generowanych przez nameda: na przykład, plików z danymi dla stref dla których jest serwerem podrzędnym. Statyczne pliki z danymi w /etc/bind/ są i muszą być wpisane w named.conf wraz z pełnymi ścieżkami. Szczegóły w /usr/share/doc/bind9/README.Debian.gz.


10.5 Konfiguracja interfejsów sieciowych z wykorzystaniem DHCP

Zaawansowana konfiguracja interfejsów sieciowych może być zautomatyzowana przez Dynamic Host Configuration Protocol (DHCP). Twój firewall lub router lub dostawca internetu może udostępniać adresy IP i inne parametry w ten sposób.

By skorzystać z tych usług musisz zainstalować jeden z następujących pakietów:

pump jest prosty i popularny. dhcp3-client jest bardziej skomplikowany, ale również ma większe możliwości konfiguracyjne. [49]


10.6 Konfiguracja sieci wyższego poziomu w systemie Debian

W celu ułatwienia konfiguracji sieci, system Debian dostarcza standardowe narzędzia konfiguracyjne wyższego poziomu, na które składają się programy ifup i ifdown oraz plik /etc/network/interfaces. [50] Jeśli zdecydujesz się na użycie ifupdown do zarządzania konfiguracją swojej sieci, nie powinieneś jednocześnie używać poleceń niższego poziomu. [51] Ifupdown został napisany z myślą, że będzie używany samodzielnie do konfiguracji i dekonfiguracji interfejsów sieciowych.

By zaktualizować konfigurację interfejsów:

     # ifdown eth0
     # editor /etc/network/interfaces  # dostosuj według potrzeb
     # ifup eth0

Więcej informacji uzyskasz w interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz i ifup(8).


10.6.1 Konfiguracja interfejsu ze statycznym adresem IP

Załóżmy, że chcesz skonfigurować interfejs Ethernet tak by miał adres 192.168.0.123. Ten adres zaczyna się od 192.168.0, tak więc musi znajdować się w sieci lokalnej (LAN). Załóżmy dodatkowo, że 192.168.0.1 jest adresem bramki sieciowej. Przeedytuj /etc/network/interfaces tak by zawierał linie podobne do poniższych:

     iface eth0 inet static
             address 192.168.0.123
             netmask 255.255.255.0
             gateway 192.168.0.1

Jeśli posiadasz zainstalowany resolvconf możesz dodać linie określające informacje DNS. Przykłado:

     iface eth0 inet static
             address 192.168.0.123
             netmask 255.255.255.0
             gateway 192.168.0.1
             dns-search extradomena.org
             dns-nameservers 195.238.2.21 195.238.2.22

Po podniesieniu interfejsu, argumenty opcji dns-search i dns-nameservers są dostępna dla resolvconf, by mógł je włączyć do resolv.conf. Argument extradomena.org opcji dns-search odpowiada argumentowi opcji search w resolv.conf(5). Argumenty 195.238.2.21 i 195.238.2.22 opcji dns-nameservers odpowiadają argumentom opcji nameserver w resolv.conf(5). Inne rozpoznawane opcje to dns-domain i dns-sortlist. Zobacz Zarządzanie informacjami o serwerach nazw – resolvconf, Rozdział 10.4.2.


10.6.2 Konfiguracja interfejsu z użyciem DHCP

By skonfigurować interfejs z użyciem DHCP przeedytuj /etc/network/interfaces tak by zawierał linijkę podobną do:

     iface eth0 inet dhcp

Aby to zadziałało musisz mieć zainstalowany jeden z klientów DHCP wspomnianych w Konfiguracja interfejsów sieciowych z wykorzystaniem DHCP, Rozdział 10.5.


10.6.3 Konfiguracja interfejsu bezprzewodowego Wi-Fi

Pakiet wireless-tools zawiera skrypt /etc/network/if-pre-up.d/wireless-tools, który pozwala na konfigurowanie sprzętu Wi-Fi (802.11a/b/g) zanim interfejs zostanie podniesiony. Konfiguracji dokonuje się używając programu iwconfig; zobacz iwconfig(8). Dla każdego możliwego parametru polecenia iwconfig możesz dołączyć opcję o takiej samej nazwie w /etc/network/interfaces poprzedzając ją przedrostkiem "wireless-". Przykładowo by ustawić ESSID dla eth0 na myessid i klucz szyfrujący na 123456789e przed podniesieniem interfejsu eth0 używając DHCP, przeedytuj /etc/network/interfaces tak by zawierał poniższe linie:

     iface eth0 inet dhcp
             wireless-essid myessid
             wireless-key 123456789e

10.6.4 Konfiguracja interfejsu PPP

Programy ifup i ifdown używają pon i poff do dodawania i usuwania interfejsów PPP więc najpierw przeczytaj Konfiguracja interfejsu PPP, Rozdział 10.2.4.

Załóżmy, że ustawiłeś PPP by działało z połączeniem mojisp. Przeedytuj /etc/network/interfaces tak by zawierał poniższe linie:

     iface ppp0 inet ppp
             provider mojisp

Z takim ustawieniem ifup ppp0 uruchomi

     pon mojisp

Niestety nie ma w tej chwili możliwości by przekazać dodatkowe opcje dla pppd w liniach dotyczących ppp znajdujących się /etc/network/interfaces. [52]

Nie jest w tej chwili możliwe użycie ifupdown do przeprowadzenia pomocniczej konfiguracji interfejsów PPP. Ponieważ pon istnieje zanim pppd skończy nawiązywanie połączenia, ifup uruchamia skrypty up zanim interfejs PPP jest gotowy do użycia. Dopóki ten błąd [53] nie zostanie poprawiony, wymagane jest konfigurowanie przez edycję plików /etc/ppp/ip-up lub /etc/ppp/ip-up.d/.


10.6.5 Konfiguracja interfejsu PPPoE

Wiele dostawców internetu (ISP) używa PPP do negocjacji połączenia nawet w momencie gdy maszyna klienta podłączona jest poprzez Ethernet lub/i sieć ATM. Realizuje się to używając PPP ponad Ethernetem (PPPoE), który jest techniką pakowaia strumieni PPP w ramkach Ethernetu. Załóżmy, że Twój dostawca nazywa się mojisp. Najpierw skonfigurujemy PPP i PPPoE do połączenia mojisp. Najprostszym sposobem osiągnięcia tego jest instalacja pakietu pppoeconf i uruchomienie w konsoli pppoeconf. Następnie przeedytuj /etc/network/interfaces tak by zawierało poniższe linie:

     iface eth0 inet ppp
             provider mojisp

Czasami występują problemy z Maksymalną Jednostką Transmisji (MTU) w połączeniu z PPPoE przez Digital Subscriber Line (DSL). Szczegóły znajdziesz w DSL-HOWTO.

Zauważ, że jeśli Twój modem zawiera router, wtedy modem/router obsługuje połączenie PPPoE samodzielnie i pojawia się w sieci jako zwykła bramka Ethernetowa.


10.6.6 Konfiguracja wielu interfejsów Ethernet

Załóżmy, że interfejs eth0 jest podłączony do Internetu z adresem pobieranym poprzez DHCP, a eth1 jest podłączony do sieci lokalnej ze statycznym adresem 192.168.1.1. Zmodyfikuj /etc/network/interfaces by zawierało poniższe wpisy:

      	 
     iface eth0 inet dhcp
     
     iface eth1 inet static
     	address 192.168.1.1
     	netmask 255.255.255.0

Jeśli na tym komputerze uaktywnisz NAT, tak jak to opisano w Budowanie bramy sieciowej, Rozdział 10.12, będziesz mógł współdzielić połączenie internetowe ze wszystkimi komputerami z sieci.


10.6.7 Konfigurowanie interfejsów wirtualnych

Używając interfejsów wirtualnych możesz skonfigurować jedną kartę Ethernet by była interfejsem do wielu podsieci. Załóżmy, że Twój komputer jest w sieci 192.168.0.x/24. Teraz chcemy podłączyć go do Internetu używając tej samej karty i adresu publicznego dostarczanego przez DHCP. Zmodyfikuj /etc/network/interfaces tak by zawierał poniższe linie:

     iface eth0 inet static
     	address 192.168.0.1
     	netmask 255.255.255.0
     	network 192.168.0.0
     	broadcast 192.168.0.255
     
     iface eth0:0 inet dhcp

Interfejs eth0:0 jest interfejsem wirtualnym. Jego rodzicem jest eth0.


10.7 Rekonfiguracja sieci

W poniższych rozważaniach ważne jest by czytelnik rozumiał różnicę pomiędzy fizycznym, a logicznym interfejsem. [54] Interfejs fizyczny jest tym co do tej pory nazywaliśmy "interfejsem", a więc rzeczy określane jako eth0, ppp1 i podobnie. Logiczny interfejs to zbiór wartości, które mogą być przydzielone do zmienny parametrów interfejsu fizycznego. Jeśli jest to dla Ciebie niezrozumiałe, zamieniaj podczas czytania wyrażenie "skonfigurowany jako interfejs logiczny X" na "skonfigurowany z profilem interfejsu X".

Definicje iface w /etc/network/interfaces są definicjami logicznych interfejsów, a nie fizycznych. [55] Jeśli nie zamierzasz nigdy rekonfigurować interfejsów, to możesz zignorować ten fakt, bo fizyczny interfejs X domyślnie będzie skonfigurowany jako logiczny interfejs X.

Załóżmy jednakże, że Twój komputer to laptop, którego przewozisz między pracą i domem. Gdy podłączasz go do sieci korporacyjnej lub do sieci domowej, musisz odpowiedni skonfigurować eth0.

Najpierw zdefiniuj dwa logiczne interfejsy dom i praca (zamiast jednego eth0 jak to robiliśmy wcześniej), które opisują jak interfejsy powinny być skonfigurowane dla odpowiednich sieci.

     iface dom inet static
     	address 192.168.0.123
     	netmask 255.255.255.0
     	gateway 192.168.0.1
       	 
     iface praca inet static
     	address 81.201.3.123
     	netmask 255.255.0.0
     	gateway 81.201.1.1

Wtedy fizyczny interfejs eth0 może zostać podniesiony dla sieci domowej z użyciem odpowiedniej konfiguracji, używając w linii poleceń:

     # ifup eth0=dom

By przekonfigurować eth0 do użycia w pracy, wprowadź polecenia:

     # ifdown eth0
     # ifup eth0=praca

Zauważ, że przy tak napisanym pliku interfaces nie ma możliwości podniesienia eth0 wpisując samo ifup eth0. Powodem jest fakt, że ifup domyślnie używa fizycznej nazwy interfejsu jako logicznej, a w tym momencie nie ma zdefiniowanych żadnego interfejsu logicznego eth0.


10.8 Magiczna rekonfiguracja sieci

Nazwy logicznych interfejsów mogą być "zmapowane" na inne nazwy podczas uruchamiania ifup. To jak nazwy będą mapowane może być uzależnione od różnych warunków. Zatem ifup może być tak skonfigurowany, że będzie podnosił dany interfejs fizyczny jako odpowiedni interfejs logiczny wybrany z predefiniowanych alternatyw.

Mapowanie nazw logicznych interfejsów odbywa się następująco:

Składnia części mapping wygląda następująco:

     mapping wzorzec
     	script nazwa-skryptu
     	[map dane skryptu]

Skrypt określony w części mapping jest uruchamiany z nazwą fizycznego interfejsu jako jego argument oraz z zawartością wszystkich następujących linii "map" podanych na wejście standardowe skryptu. Skrypt wypisuje rezultat mapowania na swoim standardowym wyjściu tuż przed zakończeniem.

Przykładowo poniższy wpis mapping sprawi, że ifup podniesie interfejs eth0 jako interfejs logiczny dom.

     mapping eth0
     	script /usr/local/sbin/echo-home

gdzie /usr/local/sbin/echo-home jest:

     #!/bin/sh
     echo home

Ponieważ mapowanie odbywa się w skrypcie, istnieje możliwość wyboru logicznego interfejsu na podstawie różnych testów. Zacznijmy od przykładu. Załóżmy, że masz inne karty sieciowe w domu i w pracy. Katalog /usr/share/doc/ifupdown/examples/ zawiera skrypt mapujący, który może być wykorzystany do wyboru logicznego interfejsu na podstawie adresu MAC. Najpierw zainstaluj skrypt w odpowiednim katalogu.

     # install -m770 /usr/share/doc/ifupdown/examples/match-mac-address.sh \
     /usr/local/sbin/

Następnie dodaj poniższy wpis do /etc/network/interfaces:

     mapping eth0
     	script /usr/local/sbin/match-mac-address.sh
     	map 02:23:45:3C:45:3C dom
     	map 00:A3:03:63:26:93 praca

Bardziej skomplikowane programy mapujące są opisane poniżej w guessnet, Rozdział 10.8.1, ifupdown-roam, Rozdział 10.8.2 i laptop-net, Rozdział 10.8.3.


10.8.1 guessnet

Zainstaluj guessnet i dodaj poniższy wpis do /etc/network/interfaces:

     mapping eth0
     	script guessnet-ifupdown
     	map dom
     	map praca

Teraz przy wpisaniu ifup eth0 guessnet sprawdzi czy eth0 może być podniesiony jako dom czy jako praca. By to osiągnąć guessnet używa informacji przechowywanej w definicjach logicznych interfejsów. Korzysta z żądań ARP by wykryć bramę sieciową albo z komputera opisanego w linii test-peer.

guessnet jest w ciągłym rozwoju.


10.8.2 ifupdown-roam

Pakiet ifupdown-roam zawiera program ifscout, którego możliwości mapowania są rozszerzeniem guessnet. ifscout wywołuje guessnet by odszukać komputery w bezprzewodowej sieci Ethernet, ale potrafi również wykryć serwery DHCP i bezprzewodowe punkty dostępu. ifscout jest skryptem powłoki więc może być dostosowany do Twoich potrzeb.

Aktualnie (październik 2003) ifupdown-roam nie jest częścią Debiana. Możliwe, że w chwili gdy to czytasz jest już w archiwach Debiana; w przeciwnym razie możesz go pobrać z jego gdzie znajdziesz również informacje na temat instalacji i użytkowania.


10.8.3 laptop-net

Pakiet laptop-net stosuje inne podejście do automatycznej rekonfiguracji sieci. Nie korzysta z logicznych interfejsów ifupdown, a zamiast tego ma swój system "schematów" i "profili". Mimo to laptop-net nadal używa ifupdown do konfiguracji fizycznych interfejsów. Więcej informacji znajdziesz w przystępnie napisanej dokumentacji z pakietu laptop-net-doc.


10.9 Wywoływanie rekonfiguracji sieci

Widzieliśmy już jak można przekonfigurować interfejsy. Rekonfiguracja musi się odbywać w odpowiednim momencie.

Tradycyjnie sieć jest konfigurowana podczas sekwencji uruchomieniowej przez skrypt inicjalizacyjny /etc/rcS.d/S40networking i jest rzadko zmieniana. Usługi wykorzystujące sieć są uruchamiane później. Podczas wyłączania systemu skrypty inicjalizujące są uruchamiane w odwrotnej kolejności.

Jednakże aktualnie można zauważyć trend w którym GNU i Linux zmierza do obsługi sprzętu i wyjątków, które zmieniają się dynamicznie. Na początku dodano obsługę dla wymienialnych kart PCMCIA; później został zaimplementowany mechanizm hotplug, który umożliwia wymianę większej ilości sprzętu podczas pracy komputera. Zawiera się w tym również sprzęt sieciowy. Zauważ, że usługi, które zależą od wymienialnego podczas pracy sprzętu muszą być uruchamiane po włożeniu owego sprzętu, a zatrzymywane po jego wyjęciu. To oznacza, że te usługi muszą być usunięte spod kontroli systemu inicjalizującego System V i obsługiwane przez ifupdown.

Załóżmy przykładowo, że usługa foo obsługiwana przez skrypt inicjalizacyjny /etc/init.d/foo zależy od dynamicznie rekonfigurowanego interfejsu sieciowego eth0.


10.9.1 Wywoływanie konfiguracji sieci podczas uruchamiania

Podczas uruchamiania systemu skrypt inicjalizujący /etc/rcS.d/S40networking uruchamia polecenie ifup -a. Podnosi to wszystkie fizyczne interfejsy wymienione w /etc/network/iterfaces z opcją auto.

Na dzień dzisiejszy w wielu przypadkach lepiej jest zarządzać konfiguracją sieci w sposób dynamiczny. W momencie gdy mechanizmy obsługujące dynamicznie zmieniający się sprzęt są uruchomione, można dużo łatwiej traktować sprzęt statyczny jakby był również dynamiczny. Uruchamianie można wtedy postrzegać jako kolejne zdarzenie hotplug (zmiany sprzętu). (Zobacz Wywoływanie konfiguracji sieci – hotplug, Rozdział 10.9.2.)

Jednakże w większości przypadków będziesz chciał podnosić podczas uruchamiania przynajmniej interfejs zwrotny lo. W związku z tym upewnij się, że /etc/network/interfaces zawiera następujący wpis:

     auto lo
     face lo inet loopback

Możesz dopisać inne fizyczne interfejsy jeśli chcesz by również były podnoszone podczas uruchamiania systemu. Nigdy nie wpisuj interfejsów PCMCIA w części auto. cardmgr PCMCIA jest uruchamiany po uruchomieniu /etc/rcS.d/S40networking.


10.9.2 Wywoływanie konfiguracji sieci – hotplug

By otrzymać obsługę hotplug (urządzenia, które mogą być dokładane/usuwane podczas pracy komputera), zainstaluj pakiet hotplug.

Sprzęt sieciowy może być dołożony albo podczas uruchamiania albo już po nim gdy karta (np. karta PCMCIA) jest włożona do komputera albo narzędzie discover zostaje uruchomione i ładuje odpowiednie moduły sterowników. [56]

Kiedy jądro wykrywa nowe urządzenie, inicjalizuje sterownik, a następnie uruchamia program hotplug by je skonfigurować. Później gdy sprzęt jest usuwany, jądro uruchamia hotplug ponownie, ale z innymi zmiennymi środowiskowymi. W systemie Debian, podczas gdy wywoływany jest hotplug, uruchamia on skrypty z /etc/hotplug/ i /etc/hotplug.d/. Szczegóły znajdziesz w hotplug(8).

Nowo włożony sprzęt sieciowy jest konfigurowany przez skrypt /etc/hotplug/net.agent. [57] Załóżmy, że Twoja karta sieciowa PCMCIA została włożona, a co za tym idzie interfejs eth0 jest dostępny do wykorzystania. /etc/hotplug/net.agent wykonuje następujące polecenie:

     ifup eth0=hotplug

Jeśli nie dodasz definicji interfejsu logicznego lub mapowania o nazwie hotplug w /etc/network/interfaces to to polecenie nic nie zdziała. By sprawić, aby to polecenie skonfigurowało eth0, dodaj następujący wpis do /etc/network/interfaces:

     mapping hotplug
     	script echo

Tak jak wyjaśniono to w Rekonfiguracja sieci, Rozdział 10.7 taki wpis zmapuje pokazane polecenie, więc odpowiada następującemu:

     ifup eth0=eth0

(Nie używaj tego typu wpisów mapowania jeśli do kontroli interfejsu używasz ifplugd uruchamionego przez hotplug, tak jak to opisano w Wywoływanie konfiguracji sieci – ifplugd, Rozdział 10.9.3.)

Jeśli chcesz jedynie by eth0 zostało podniesione, użyj grep zamiast echo jak w przykładzie poniżej:

     mapping hotplug
     	script grep
     	map eth0

Więcej wskazówek znajdziesz w Magiczna rekonfiguracja sieci, Rozdział 10.8 i /usr/share/doc/hotplug/README.Debian.


10.9.3 Wywoływanie konfiguracji sieci – ifplugd

ifplugd podnosi interfejs w zależności od tego czy sprzęt jest podłączony do sieci czy nie. Może on wykryć podłączenie kabla Ethernet lub punkt dostępowy związany z interfejsem Wi-Fi. Gdy ifplugd zauważy, że stan połączenia się zmienił, uruchamia pośredni skrypt, który domyślnie uruchamia ifup lub ifdown dla danego interfejsu.

ifplugd dobrze współpracuje z hotplug. Po włożeniu karty, które powoduje możliwością skorzystania z interfejsu, /etc/hotplug.d/net/ifplugd.hotplug uruchamia instancję ifplugd dla tego interfejsu. Gdy ifplugd wykryje, że karta jest podłączona do sieci podnosi interfejs korzystając z ifup.


10.9.4 Wywoływanie konfiguracji sieci – waproamd

By powiązać punkt dostępowy z kartą Wi-Fi możliwe, że zaistnieje konieczność zaprogramowania jej z odpowiednim kluczem szyfrującym WEP. Jeśli do kontrolowania ifup korzystasz z ifplugd tak jak to opisano w Wywoływanie konfiguracji sieci – ifplugd, Rozdział 10.9.3 to oczywiste jest, że nie możesz ustawić klucza szyfrującego, bo ifup odpalany jest już po fakcie. Jednym z możliwych rozwiązań jest zaprogramowanie wszystkich wymaganych kluczy w nienaruszalnej pamięci karty Wi-Fi. Jeśli jednak przemieszczasz się pomiędzy wieloma sieciami, to Twoja karta Wi-Fi prawdopodobnie nie będzie w stanie przechowywać tak wiele kluczy.

Innym rozwiązaniem jest skorzystanie z waproamd, który ustawia klucz szyfrujący WEP w zależności od tego jaki punkt dostępowy zostanie wyszukany.

waproamd dobrze współpracuje z hotplug. Gdy karta zostanie włożona, przez co uzyskamy możliwość wykorzystania interfejsu, /etc/hotplug.d/net/waproamd.hotplug uruchamia instancję waproamd dla tego interfejsu. waproamd dobrze współpracuje również z ifplugd.

Sprawdź plik README z pakietu waproamd by dowiedzieć się więcej.


10.9.5 Konfiguracja sieci i PCMCIA

W poprzednich wydaniach systemu Debian standardowym sposobem konfiguracji kart sieciowych PCMCIA było wykorzystanie możliwości pakietu pcmcia-cs. Skrypty z /etc/pcmcia/ są wykonywane przez cardmgr, daemon, który zarządza 16-bitowymi kartami PCMCIA, po ich włożeniu lub wyjęciu. Niektórzy używają pcmcia-cs w jego domyślnej konfiguracji, w której /etc/pcmcia/network wywołuje ifup po dodaniu interfejsu i ifdown po jego usunięciu. Inni używają specjalnego systemu wywołań niskopoziomowych poleceń konfiguracyjnych, które są zaimplementowane w /etc/pcmcia/network i uaktywnione gdy w /etc/pcmcia/network.opts odpowiednie opcje ustawione są na y. Ten drugi sposób pociąga za sobą wiele problemów. Działa tylko z 16-bitowymi kartami PCMCIA oraz duplikuje funkcje ifupdown. Z kolei mechanizm pcmcia-cs konfiguracji sieci jest uważany za przestarzały na rzecz hotplug opisanego w Wywoływanie konfiguracji sieci – hotplug, Rozdział 10.9.2.

By wyłączyć wszystkie mechanizmy konfiguracji interfejsów sieciowych w pcmcia-cs, dodaj następującą linię:

     exit 0

na początku pliku /etc/pcmcia/network.

Zauważ, że nie ma nic złego w używaniu cardmgr. Po prostu nie chcemy by wywoływał programy konfiguracji sieci. Zobacz PCMCIA, Rozdział 7.2.1 i Linux PCMCIA HOWTO.


10.10 Konfiguracja usług sieciowych

Typowa konfiguracja usług sieciowych na komputerze/serwerze domowym zawiera:


10.11 Rozwiązywanie problemów związanych z siecią

Jeśli doświadczysz problemów z siecią, wyniki następujących poleceń to pierwsze co musisz sprawdzić:

     # ifconfig
     # cat /proc/pci
     # cat /proc/interrupts
     # dmesg | more

Zobacz również podrozdziały Podstawy testowania sieci, Rozdział 8.6.28.

Jeśli masz problemy z konkretnymi stronami, zobacz Dziwne kłopoty z dostępem do witryn WWW., Rozdział 3.7.5.


10.12 Budowanie bramy sieciowej

Komputer z systemem Debian może pełnić funkcję pełnej bramy sieciowej, która wykonuje zamianę adresów sieciowych (NAT, znany również jako maskarada), obsługuje pocztę, DHCP, buforowanie DNS, pośredniczenie HTTP, usługę CVS, udostępnianie NFS lub Samby. Zobacz w Nazwy hostów i adresy IP używane w sieci LAN, Rozdział 3.1.9 przykłady takich ustawień.


10.12.1 Konfiguracja netfiltra

Projekt netfilter/iptables jest podsystemem ściany ogniowej dla Linuksa 2.4 i nowszych. Udaj się na stronę Netfilter, gdzie opisano i wyjaśniono wiele zagadnień dotyczących konfiguracji sieciowej.


10.12.1.1 Netfilter - podstawy

Netfilter przetwarza pakiety przy użyciu pięciu wbudowanych łańcuchów: PREROUTING, INPUT, FORWARD, OUTPUT i POSTROUTING.

                     decyzja
                     routingu
     IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT
     interfejs  ROUTING  \       śledzenie    /       ROUTING     interfejs
                DNAT     |       połączeń     ^       SNAT
                REDIRECT |                    |      MASQUERADE
                         v                    |
                       INPUT                OUTPUT
                         | filtrowanie        ^ filtrowanie,DNAT
                         v                    |
                         \--> Lokalny Proces--/
                                 program przestrzeni użytkownika

10.12.1.2 Tablice Netfilter

Pakiety są przetwarzane w każdym łańcuchu w poszczególnych tablicach.


10.12.1.3 Cele Netfilter

Reguły ściany ogniowej mają wiele celów (miejsc przeznaczenia):


10.12.1.4 Polecenia Netfiltera

Podstawowe polecenia iptables:

     iptables -N łańcuch                   # tworzy łańcuch
     
     iptables -A łańcuch \                 # dodaje regułkę do łańcuch
              -t tablica \                 # w tablica (filter, nat, mangle)
              -p protokół \                # tcp, udp, icmp lub all
              -s adres-źródłowy[/maska] \
              --sport port[:port] \        # port źródłowy, jeśli -p jest tcp lub udp
              -d adres-docelowy[/maska] \
              --dport port[:port] \        # port docelowy, jeśli -p jest tcp lub udp
              -j cel \                     # co zrobić, jeśli regułka pasuje
              -i interfejs-wejściowy \     # dla INPUT,  FORWARD, PREROUTING
              -o interfejs-wyjściowy       # dla FORWARD, OUTPUT, POSTROUTING

10.12.1.5 Zamiana adresów sieciowych (NAT)

Komputery w sieci lokalnej mogą mieć dostęp do Internetu przez bramkę sieciową, która zamienia adresy sieci na adresy używane w Internecie.

     # apt-get install ipmasq

Zastosuj przykładowe reguły, by zwiększyć zabezpieczenia ipmasq. Przeczytaj /usr/share/doc/ipmasq/examples/stronger/README. W przypadku debianowego kernel-image-2.4 upewnij się, że załadowałeś odpowiednie moduły. Opis potrzebnej konfiguracji jest w Obsługa sieci, Rozdział 7.2.3.

W przypadku debianowego kernel-image-2.2, modyfikuj plik Z92timeouts.rul w katalogu /etc/masq/rules tak, jak pokazano poniżej, by zapewnić dłuższe połączenia ze zdalnymi serwerami (dobre dla dużych listów elektronicznych, itp.):

     # tcp, tcp-fin, udp
     # 2hr, 10 sec, 160 sec - domyślnie
     # 1 day, 10 min, 10 min - przykład dłuższego czasu życia
     $IPCHAINS -M -S 86400 600 600

Jeśli sieć jest osiągalna przez kartę PCMCIA, ipmasq musi być wystartowane z pliku /etc/pcmcia/network.opts. Przeczytaj /usr/share/doc/ipmasq/ipmasq.txt.gz.


10.12.1.6 Przekierowanie połączeń SMTP (2.4)

Załóżmy, że masz notebooka, który jest tak skonfigurowany, że używa różnych środowisk sieciowych i chcesz używać swojego agenta (serwer) poczty bez potrzeby ciągłej zmiany jego konfiguracji.

Dodając poniższą regułkę iptables na bramce sieciowej przekierujesz połączenia SMTP do komputera pełniącego funkcję bramki.

     # iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \
                -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open

Jeśli oczekujesz dokładniejszych zestawów regułek, rozważ zainstalowanie pakietu ipmasq i dodanie M30redirect.def do katalogu /etc/ipmasq/rules/.


10.12.2 Zarządzanie wieloma połączeniami z siecią

[FIXME] Routing rozszerzony (policy routing) (autor: Phil Brutsche pbrutsch@tux.creighton.edu): Zobacz iproute manual, jeśli interesują Cię szczegóły. Kształtowanie ruchu (tc, ang. Traffic control) może być równie interesujące.

Środowisko:

     eth0: 192.168.1.2/24; brama 192.168.1.1
     eth1: 10.0.0.2/24; brama 10.0.0.1
     Brak maskarady na tym komputerze.

Magiczne zaklęcia:

  1. ip rule add from 192.168.1.2 lookup 1
  2. ip rule add from 10.0.0.2 lookup 2
  3. ip route add to default via 10.0.0.1 metric 0
  4. ip route add to default via 192.168.1.1 metric 1
  5. ip route add table 1 to 192.168.1.0/24 via eth0
  6. ip route add table 1 to 10.0.0.2/24 via eth1
  7. ip route add table 1 to default via 192.168.1.1
  8. ip route add table 2 to 192.168.1.0/24 via eth0
  9. ip route add table 2 to 10.0.0.2/24 via eth1
  10. ip route add table 2 to default via 10.0.0.2

[FIXME] Nigdy tego nie robiłem. Jak ustawić połączenie wdzwaniane jako połączenie zapasowe szybkiego łącza, używając właściwości automatycznego łączenia na żądanie? Wyślij łatkę tutaj :)


[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]

Debian Reference

CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTC

Osamu Aoki osamu@debian.org
Koordynator tłumaczenia: Bartosz Feński aka fEnIo fenio@o2.pl
Autorzy, Rozdział A.1