Podstawy konfiguracji sieci

Wpisany przez crash środa, 12 października 2005 00:15

Początkującym w systemach operacyjnych Unix - takim jak FreeBSD, często stoji na przeszkodzie konfiguracja sieci. Pewnie, proces instalacyjny mógł ustawić kartę sieciową za ciebie, ale co zrobisz w momencie chęci przeglądnięcia tych ustawień i co zrobisz jak twoja karta sieciowa przestanie pracować? Od kąd sieć jest częścią komputera, ten artykuł zademonstruje jak zweryfikować, ustawić i zoptymalizować twoje ustawienia karty sieciowej.

Weryfikacja konfiguracji interfejsu

Jeżeli migrujesz ze środowiska Microsoft, prawdopodobnie używałeś winicfg lub ipconfig /all z lini poleceń, aby zweryfikować ustwienie twojej karty sieciowej. W Unix'ie jest podobne narzedzie - ' ifconfig ' - nazwa pochodzi z języka angielkiego ' interface config '. Poprzez wprowadzenie tej komendy, zobaczysz wszystkie interfejsy sieciowe w systemie wraz z konfiguracją.

Niektóre wersje ' ifconfig ' wymagaja podania parametru ' -a ' lub ' all '.

 % ifconfig
rl0: flags=8802 mtu 1500
    options=8
    ether 00:05:5d:d2:19:b7
    media: Ethernet autoselect (10baseT/UTP)
    status: no carrier
rl1: flags=8802 mtu 1500
    options=8
    ether 00:05:5d:d1:ff:9d
    media: Ethernet autoselect (10baseT/UTP)
    status: no carrier
ed0: flags=8843 mtu 1500
    inet 192.168.2.12 netmask 0xffffff00 broadcast 192.168.2.255
    ether 00:50:ba:de:36:33
lo0: flags=8049 mtu 16384
    inet 127.0.0.1 netmask 0xff000000

To co się wyświetli będzie się trochę różniło od tego co widzisz wyżej.
System ten nie ma domyślnie skonfigurowanego jądra, usunełam domyślne IPv6, gif oraz urządzenie faith z kernela, tak wiec ich nie widać wyżej.

System ten zawiera trzy fizyczne interfejsy (rl0, rl1, ed0) oraz wirtualny interfejs loopback (lo0). Różne wersje UNIX'a różnią sie w nazewenictwie interfejsów. Na przykład, Linux używa 'eth' dla kart Ethernet'owych, tak wiec pokazywał by takie nazwy jak eth0, eth1 oraz eth2. BSD używa nazw sterowników dla każdej karty NIC, pozwalając Ci odróżnić różne chipset'y i możliwości dostępne dla każdego ze sterowników. Aby zobaczyć dekomentacje dla twojego sterownika, przeczytaj 4 sekcje z manuala. Zwróć uwagę na to że nie podajesz numeru interfejsu a jedynie jego nazwe, tak wiec nie używasz ' rl0 ' tylko 'rl'.

% man 4 rl
rl -- RealTek 8129/8139 Fast Ethernet device driver

% man 4 ed
ed -- ethernet device driver

System posiada trzy karty, tylko ed0 jest czynna. Dwie karty RealTek nie maja podłączonego kabla, tak jak pokazuje status: '  no carrier lines '. Zatem, tylko ' ed0 ' posiada adres IP (192.168.2.12), maske podsieci (0xffffff00), i adres broadcast'owy ( 192.168.2.255 ).
Maska podsieci jest przedstawiona w wrotości HEX, jak przedstawia początkowe ' 0x '. Ta szczególna maska nie jest za trudna do przetlumaczenia do postaci decymalnej, jak pamietasz każda para znaków ' f ' (ff) jest równa 255. Tak więc, maska podsieci jest równa 255.255.255.0. Jeżeli nie znajdziesz pary numerów HEX - ff (255) lub 00 (0), użyj komendy ' bc ' lub wbudowanego kalkulatora aby przetlumaczyc te pary hexamedalne do decymedalnych. Na przyklad, jeżeli twoja maska jest taka: 0xffffe000.

 % bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
base=16
<b>E0</b>
224
<Ctrl d>

Pamietaj do konwersji jakichkolwiek liter zmień na <b>DUŻĄ</b> literę, albo nie dostaniesz poprawnej odpowiedzi. Wartość decymalna e0 jest 254, w tym przykładzie maska bedzie 255.255.224.0.

Weryfikacja domyślnej bramki.

Zauważ ze ifconfig podaje przydatny status, MTU, adres IP, maska podsieci, broadcast, MAC adres dla każdego interfejsu. Jednak nie podaje domyślnego adresu bramki lub serwerów DNS.

Aby zobaczyć adres bramki domyślnej należy użyć polecenia <b>netstat</b>, lub netstat z przełącznikiem ' -r ' (routing) oraz ' -n ' aby nie wyłączał tranzakcji IP-nazwa:

% netstat -rn
Routing tables

Internet:
Destination      Gateway                    Flags    Refs    Use       Netif  Expire
default              192.168.2.100          UGS      0         72664   ed0
127.0.0.1          127.0.0.1                  UH       1         46          lo0
192.168.2          link#3                        UC       0         0           ed0
192.168.2.12    127.0.0.1                  UGHS   0         0            lo0
192.168.2.100   00:48:54:1e:2c:76  UHLW  1         0            ed0   1172

Uwaga: Użytkownicy Linux'a mogą również użyć komendy ' route ' aby uzyskać podobny wynik. Komenda ' route ' w systemach BSD działa trochę inaczej, wiecej szczegółów poleam ' man route ', ' netstat -rn ' działa na wszystkich systemach operacyjnych, włączając Linux'y i systemy Microsoft'u.

W swoim wyniku, zwróć uwagę na pierwszą linię zaczynającą sie od słowa ' default '. Połączenie z adresem IP jest twoją bramką domyślną. Zwróć uwagę na flagi początkowe. Literka ' U ' od Up, oraz G od Gateway. Pokazuje to ze możesz komunikować się ze swoją bramką. Jeżeli liczba w polu ' Use ' nie jest równa 0, ukazuje liczbę pakietów wysłanych do bramki.

Podsumowując, ostatnia linijka z wyniku pokazuje adres MAC twojej bramki.

Sprawdzenie ustawien DNS

W pliku /etc/resolv.conf zamieszczone są ustawienia DNS.

 % more resolv.conf
nameserver 209.226.175.236
nameserver 204.101.251.1
nameserver 204.101.251.2

System ten zawiera adresy IP trzech serwerów DNS. Dobrze mieć conamjmniej 2 serwery DNS, w przypadku gdy podstawowy przestanie działać w tym momencie drugi bedzie odpowiadał.

Aby znaleść adres IP twojego serwera DNS, użyj polecenia ' dig ':

 % dig ns sympatico.ca

; <<>> DiG 8.3 <<>> ns sympatico.ca
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44589
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 4
;; QUERY SECTION:
;;    sympatico.ca, type = NS, class = IN

;; ANSWER SECTION:
sympatico.ca.         6h12m33s IN NS  ns5.bellnexxia.net.
sympatico.ca.         6h12m33s IN NS  ns6.bellnexxia.net.
sympatico.ca.         6h12m33s IN NS  dns1.sympatico.ca.
sympatico.ca.         6h12m33s IN NS  dns2.sympatico.ca.

;; ADDITIONAL SECTION:
ns5.bellnexxia.net.   9m36s IN A      209.226.175.236
ns6.bellnexxia.net.   9m37s IN A      209.226.175.237
dns1.sympatico.ca.    14m7s IN A      204.101.251.1
dns2.sympatico.ca.    3m56s IN A      204.101.251.2

;; Total query time: 46 msec
;; FROM: dru.domain.org to SERVER: 209.226.175.236
;; WHEN: Sun Apr 11 14:30:14 2004
;; MSG SIZE  sent: 30  rcvd: 182

Wynik twój jest podzielony na kilka sekcji ( SECTION ). Teraz skoncentruj sie na sekcji ' ANSWER SECTION ', która zawiera odpowiedź na twoje zapytanie. Mój ISP używa czterech serwerów DNS, jak widać w odpowiedzi. Każdy z nich używa rekordów IN (IPv4) i rezolucje NS. Jednakże, odpowiedź pokazuje nazwy serwerów nazw ( DNS ). Nie musisz używać nazw, potrzebujesz jedynie adresów IP serwerów DNS.
Znajdziesz je w sekcji ADDITIONAL SECTION.




' dig ' jest również pomocny, jeżeli zapomnisz nazwe, adres IP, serwer mailowy.
Tak wygląda sekcja ANSWER SECTION dla przypisów mx:

 % dig mx sympatico.ca
(snip)
;; ANSWER SECTION:
sympatico.ca.         20m34s IN MX    5 mta2.sympatico.ca.
sympatico.ca.         20m34s IN MX    5 mta3.sympatico.ca.
sympatico.ca.         20m34s IN MX    5 mta1.sympatico.ca.
(snip)

Mój ISP posiada trzy serwery SMTP. Zobacz na numery pomiedzy rekordem MX oraz nazwa mail serwera. Te liczby przedstawiają priorytety. Moje serwery mailowe maja taki sam priorytet, jednak niektórzy dostawcy internetowi posluguja sie różnymi priorytetami. Jeżeli w twoim tak jest, wybierz serwer który posiada najniższy priorytet.

Weryfikacja DHCP

Jeżeli ustawienia twojego IPS przypisują IP poprzez serwer DHCP, powinieneś zobaczyć wszystkie swoje ustawienia związane z tym.
Sama dzierżawa jest zawarta w nawiasy klamrowe. Jeśli masz kilka dzierżaw, pierwszy jest najbardziej znaczący.

% more /var/db/dhclient.leases
lease {
  interface "ed0";
  fixed-address 192.168.2.12;
  option subnet-mask 255.255.255.0;
  option time-offset -18000;
  option dhcp-lease-time 345600;
  option routers 192.168.2.100;
  option dhcp-message-type 5;
  option dhcp-server-identifier 192.168.2.100;
  option domain-name-servers 209.226.175.236,204.101.251.1,204.101.251.2;
  renew 2 2004/4/13 02:13:03;
  rebind 3 2004/4/14 23:34:37;
  expire 4 2004/4/15 11:34:37;
}

Dodawanie interfejsu

Ok, wiesz jak wyświetlić konfigurację twojego interfejsu, ale co zrobić, jeśli potrzebujesz skonfigurować interfejs? Powiedzmy, że właśnie dodałeś następną kartę do twojego systemu. Twoja maszyna przeładowała się, będziesz chciał zweryfikować, czy nowa karta została rozpoznana. Możesz użyć ifconfig i szukać dodatkowego interfejsu. Mógłbyś też przeszukać informacje z logów które zapisywane są przy inicjowaniu, dla adresów sieci Ethernet. Pamiętaj aby przeszukiwać przez duża literą 'E':

% grep Ethernet /var/run/dmesg.boot
rl0: Ethernet address: 00:05:5d:d2:19:b7
rl1: Ethernet address: 00:05:5d:d1:ff:9d
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0x9800-0x981f irq 10 at
device 11.0 on pci0

Jeśli twója nowa karta jest wylistowana -- jest gotowa aby ją skonfigurować -- ale co, jeśli nowa karta nie została znaleziona ? Pierwsze pytanie należy zadać sobie, "Czy wprowadzałem jakieś zmiany do konfiguracji jądra?". Jeżeli tak, sprawdź swoją kofiguracyję jądra; mogłeś usunąć sterownik wymagany przez nową kartę.

Jeśli to nie pomoże, musisz przeładować komputer i sprawdzić swoje ustawiania CMOS. Możliwe że wyłączyłeś jakieś IRQ?
Lub włączyłeś urządzenia zintegrowane z płytą, których nie używasz? I one marnują IRQ, co idzie za tym że nie przydzieli żadnego IRQ dla twojej kraty. Jeśli zdecydujesz się zmienić ustawiania CMOS, zapisz sobie na kartce co zmieniłeś. Zmieniaj po jednej opcji i sprawdzaj czy coś pomogło.

Jeżeli twoja karta jest na PCI, sprawdź w CMOS'ie ustawiania <strong>PnP OS</strong> . Czasami zmieniając miejsce w slocie PCI powoduje znalezienie karty. Ostatecznie, możesz określić, czy to jest problem IRQ poprzez usuwanie wszystkich kart oprócz nowej karty i twojej karty graficznej. Jeśli karta zostanie rozpoznana, wiesz, że kart jest wiecej niż IRQ.

Konfiguracja Addresu IP

W momencie gdy karta zostaje rozpoznana, zdecyduj się, czy ustawić informacje o adresie IP ręcznie czy skorzystasz z DHCP. Którakolwiek metoda wymaga zmiany w /etc/rc.conf. Jeśli wolisz, możesz użyć /stand/sysinstall, to narzędzie zmodyfikuje ten plik za ciebie. To jest ten sam program który użyłeś przy instalacji FreeBSD. Kiedy uruchomisz narzedzie, wybierz Configure, potem Networking i użyj spacji do wybrania Interfejsu.

W innym przypadku, zmodyfikuj /etc/rc.conf bezpośrednio używajac swój ulubiony edytor. Na przykład, te linie statycznie przypisują adres IP oraz maskę do interfejsu rl0, oraz ustawiają domyślną bramkę.

ifconfig_rl0="inet 192.168.2.25 netmask 255.255.255.0" \
  defaultrouter="192.168.2.100"

Jeżeli używasz statycznego adresowania, nie zapomnij dodać adresów IP twoich serwerów DNS do /etc/resolv.conf.

Jeżeli natomiast używasz serweru DHCP do uzyskania adresu IP, potrzebujesz jedynie dodać jedną linijkę do /etc/rc.conf:

 ifconfig_rl0="DHCP"

Nie potrzebujesz dodawać ani bramki ani serwerów DNS, w momencie przypisania adresu przez DHCP zostanie to zrobione automatycznie

Jeżeli zapisałeś informacje w /etc/rc.conf, zatwierdź to poprzez wykonanie skryptu:

# /etc/netstart 

Uwaga: Jeżeli potrzebujesz pobrania ponownego adresu IP z serwera DHCP, użyj komendy ( w tym przypadku rl0  ) :

# dhclient -r rl0 

Optymalizacja konfiguracji

Jeżeli nie masz bardzo starej karty sieciowej, albo nabyłeś kartę 100Mbps, twója karta jest będzie działać z szybkościa 10/100 Mbps. To znaczy że karta może działać z szybkością 10 oraz 100 Mbps. Najprawdopodobniej może negocjować albo half-duplex ( nie może słać i odbierać równocześnie ) albo full-duplex (może słać i odbierać równocześnie). Ten proces negocjacji zdarza się między kartami sieciowymi i hub'ami albo switch'ami.

Oczywiście, 100Mbps full-duplex jest lepszy niż 10Mbps half-duplex. Czynnikami ograniczającymi będą hub'y albo switch'e które bedą kontrolowały szybkość i rodzaj rozkazu. Jeżeli hub lub switch nie obsluguje 100Mbps, twoja karta nie wymusi szybkości i bedzie działała wolniej.

Jednakże, powinieneś też być świadomy nawet jeśli hub albo switch wspiera 100Mbps i tryb full-duplex, karta i huby albo switch nadal negocjują te wartości. Jeśli twója karta zawsze jest podłączona do tych samych hub'ów albo switch'ów, to jest sens, by ustawić te wartości, zapobiegając ciągłym negocjacją.

W mojej przykładowej sieci, będzie lepiej wyłączyć z sieci ed0 i zamiast tego użyć jednego z interfejsów RealTek'a. Dlaczego? W man 4 ed pisze, że ten szczególny sterownik wspiera tylko 10Mbps w trybie half-duplex (IEEE 802.3 CSMA). Natomiast w man 4 rl pisze, że sterownik ten może zostać skonfigurowany tak aby użyć 100Mbps i tryb full-duplex.

Tutaj jest przykład z /etc/rc.conf:

ifconfig_rl0="DHCP"
ifconfig_rl0="100baseTX mediaopt full-duplex"

Jest pare uwag o których można napisać. Jedna z nich, ' man ' ukazuje które opcje są dostępne i jak je skonfigurować. Druga, nie dodawaj ustawień do karty jeżeli sterownik tego nie wspiera, tylko te które są w manualu. Trzecia, Nie zmieniaj prędkości i trybu pracy sieciówki jeżeli twój hub lub switch nie wspierają tego !

% ifconfig rl0
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=8<VLAN_MTU>
    inet 192.168.2.87 netmask 0xffffff00 broadcast 192.168.2.255
    ether 00:05:5d:d2:19:b7
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active

Success!

Ten artykuł omawia większość scenariuszy doboru kart sieciowych Ethernet. Powinieneś też przyjrzeć się sekcji " Setting Up Network Interface Cards " handbook'a.

W kilku następnych artykułach, chciałbym skoncentrować się na druku.

--
Tekst ten jest tłumaczeniem artykułu Dru Lavigne - "FreeBSD Networking Basics", który ukazał się na stronie O'Reilly. Jeżeli pojawiły się jakiekolwiek niezgodności proszę o kontakt.