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:
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:
Uwaga: Jeżeli potrzebujesz pobrania ponownego adresu IP z serwera DHCP, użyj komendy ( w tym przypadku 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.