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.
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.
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.
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)
.
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)
.
Dla interfejsów Wi-Fi wraz z ifconfig
lub ip
używany
jest program iwconfig
z pakietu wireless-tools
.
Zobacz iwconfig(8)
.
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
.
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
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".
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.
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.
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.
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]
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.
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
.
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
.
bind
Możesz również użyć bind9
lub bind
a 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
.
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 named
a: 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
.
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:
dhcp3-client
(wersja 3, Internet Software Consortium)
dhcpcd
(Yoichi Hariguchi i Sergei Viznyuk)
pump
(Redhat)
pump
jest prosty i popularny. dhcp3-client
jest
bardziej skomplikowany, ale również ma większe możliwości konfiguracyjne. [49]
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)
.
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.
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.
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
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/
.
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.
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.
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.
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.
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:
ifup
nie podano nazwy logicznego interfejsu,
nazwa fizycznego zostanie użyta jako wstępna nazwa.
/etc/network/interfaces
, to fizyczny interfejs jest podnoszony
jako logiczny. W przeciwnym wypadku ifup
wyświetla komunikat
"Ignoring unknown interface" i kończy swoje działanie.
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.
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.
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.
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
.
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.
# update-rc.d -f foo remove
ifupdown
dodając w
/etc/network/interfaces
przy interfejsie eth0 opcje
up i down, które będą wywoływać skrypt inicjalizujący
foo:
iface eth0 inet dhcp up /etc/init.d/foo start down /etc/init.d/foo stop
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
.
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
.
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
.
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.
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
.
Typowa konfiguracja usług sieciowych na komputerze/serwerze domowym zawiera:
/etc/inetd.conf
ssh
: OpenSSH bezpieczna powłoka, zobacz SSH, Rozdział 9.5.
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: agent transportu poczty, zobacz Nazwa
pocztowa (mailname), Rozdział 10.3.2.
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: daemon do pobierania wiadomości e-mail z konta POP3,
zobacz Pobieranie poczty –
Fetchmail, Rozdział 9.6.2.
/etc/fetchmailrc
procmail
: lokalna dystrybucja wiadomości e-mail oraz program
filtrujący, zobacz Przetwarzanie poczty
– Procmail, Rozdział 9.6.3.
~/.procmailrc
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(przeedytuj)
/etc/bind/db.lan
(dodaj dla komputerów z sieci lokalnej)
/etc/bind/db.192.168.0
(dodaj dla komputerów z sieci
lokalnej, zwrotny DNS)
/etc/dhcp3/dhclient.conf
(DHCP klient)
/etc/default/dhcp3-server
(DHCP serwer)
/etc/dhcp3/dhcpd.conf
(DHCP serwer)
cvs
: zobacz Concurrent Versions
System (CVS), Rozdział 12.1.
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: sieciowy system plików, zobacz Konfiguracja NFS, Rozdział 3.4. (dla
systemów uniksowych)
/etc/exports
samba
: współdzielenie plików i drukarek w sieciach Windows, zobacz
Konfiguracja Samby, Rozdział 3.5 i Samba, Rozdział 8.6.37.
/etc/samba/smb.conf
/etc/printcap
(dla lpr)
apache
i apache2
: serwer WWW.
/etc/apache/*
/etc/apache2/*
squid
: serwer pośredniczący WWW.
/etc/squid/*
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.
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ń.
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.
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
Pakiety są przetwarzane w każdym łańcuchu w poszczególnych tablicach.
Reguły ściany ogniowej mają wiele celów (miejsc przeznaczenia):
--to-source ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
--to-destination ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
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
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
.
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/
.
[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:
[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 :)
Debian Reference
CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTCosamu@debian.org
fenio@o2.pl