Podstawy
W konfiguracji sieci nie ma nic bardziej podstawowego niż interfejs, którego system używa do przesyłania danych. Dwoma najczęściej używanymi interfejsami są: karta Ethernet oraz port szeregowy (zazwyczaj z dołączonym modemem lub terminalem SDI). W tym artykule opisana zostanie konfiguracja interfejsu karty Ethernetowej. Linuxowy interfejs składa się nie tylko z karty sieciowej lecz również (a może przede wszystkim) z programu obsługi tej karty. W większości serwerów sieciowych opartych na systemie Linux porgramu obsługi zawarte są w modułach dołączanych do jądra komendą 'insmod' lub 'modprobe', choć nic nie stoi na preszkodzie, aby moduł taki wkompilować na stałe do jądra systemu. I tu jedna uwaga: Ze względu na łatwość konfiguracji gorąco polecam używanie kart sieciowych PCI, gdzie nie jest konieczne prekazywanie parametrów konfiguracyjnych do programu obsługi. Nazewnictwo urządzeń jest bardzo proste: pierwsza karta sieciowa, która znajdzie system otrzymuje nazwę 'eth0 ', druga - 'eth1 ' itd.
Polecenie 'ifconfig'
Program ten znajduje się zazwyczaj w katalogu /sbin i służy do przypisania/odczytania parametrów konfiguracyjnych TCP/IP konkretnego interfejsu. Po kompletną listę parametrów polecenia odsyłam do systemowego manuala a tutaj przedstawię tylko kilka z nich. Podstawowa składnia polecenia w skryptach startowych wygląda następująco:
'/sbin/ifconfig interface xxx broadcast yyy netmask zzz', gdzie
interface - nazwa interfejsu sieciowego (np 'eth0')
xxx - adres IP, który chcemy przypisać
yyy - adres rozgłoszeniowy
zzz - maska podsieci
Adres rozgłoszeniowy tworzy się z adresu IP oraz maski podsieci. Wszystkie bity, które są ustawione w masce przepisuje się z adresu IP, a pozostałym przypisuje wartość "1", np.
adres IP : 192.168.1.22
maska : 255.255.255.0
rozgłoszenie: 192.168.1.255
Parametr ten nie jest konieczny do działania interfejsu, jednak niekiedy system ustawia niewłaściwą wartość uniemożliwiając działanie sieci. Ja zazwyczaj stosuję ten parametr. UWAGA: Podczas pisania własnych skryptów startowych należy pamiętać o skonfigurowaniu urządzenia 'loopback '. Służy do tego polecenie '/sbin/ifconfig lo 127.0.0.1'
Routing
Kolejną rzeczą, którą trzeba skonfigurować jest tzw. tabela routingu. Wszystko, co napisane jest w tym artykule dotyczy routingu statycznego. Gdy komputer otrzymuje pakiet z interfejsu sprawdza adres docelowy w nagłówku:
Jednak aby komputer mógł przekazać pakiet innemu hostowi musi mieć włączone przekazywanie pakietów IP (IP forwarding). Najprościej jest to zrealizować komendą 'echo "1" > /proc/sys/net/ipv4/ip_forward'.
Polecenie 'route'
Polecenie 'route' służy do wyznaczania/przeglądania statycznych tras routingu. Skrócona składnia tego polecenia:
'/sbin/route add -net xxx netmask yyy interface', gdzie
xxx - adres IP interfejsu
yyy - maska podsieci
interface - nazwa interfejsu (np 'eth0')
W takiej postaci, 'route' powoduje dodanie kolejnego wpisu do tabeli routingu. Opcja '-net' mówi, że dodajemy trasę sieciową. Inna możliwościa jest '-host' dla trasy hosta, ale opcja ta jest rzadko używana. Jeżeli mamy interfejs Ethernetowy, który pełni rolę "wyjścia na świat" to musimy dodać do tabeli domyślną bramę. Właśnie takie zadanie ma polecenie '/sbin/route add default gw address', w którym ciąg znaków 'address' zastępujemy IP danej karty sieciowej. Także tutaj należy pamiętać o interfejsie 'lo': '/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo'
Przykładowa konfiguracja
Czas na przykładowy skrypt wykorzystujący podane wiadomości. Załóżmy, że mamy w omputerze dwie karty sieciowe 'eth0' oraz 'eth1' dla podsieci 192.168.1.0/24 oraz 192.168.1.0/24. Chcemy na obu interfejsach ustawić adresy IP 192.168.X.1. Dodatkowo włożylismy trzecią kartę Ethernet, przez którą będziemy rozmawiać ze światem.
Dostalismy adres IP 213.77.134.195/24.
Oto gotowy skrypt '/etc/rc.d/rc.inet1' dla systemu Linux Slackware:
#! /bin/sh
#
# rc.inet1 This shell script boots up the base INET system.
# Tutaj definiujemy petle loopback
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
# Konfigurujemy kolejne interfejsy sieciowe
# Lokalne podsieci
/sbin/ifconfig eth0 192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0
/sbin/ifconfig eth1 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0
# Brama do internetu
/sbin/ifconfig eth2 213.77.134.195 broadcast 213.77.134.255 netmask 255.255.255.0
Powinniśmy teraz dopisać następujący kawałek pliku:
# Ustalamy tabele routingu
# Lokalne podsieci
/sbin/route add -net 192.168.0.0 netmask 255.255.255.0 eth0
/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 eth1
# Internet
/sbin/route add -net 213.77.134.0 netmask 255.255.255.0 eth2
Jednak kernele w wersji 2.2.X oraz 2.4.X same dopisują odpowiedni interfejs do tabeli routingu już w momencie definiowania adresu poprzez 'ifconfig'.
# Domyslna brama
/sbin/route add default gw 213.77.134.195
# End of rc.inet1
SDI
Należy tutaj wspomnieć, że przy konfigurowaniu komputera, który będzie współpracował z SDI nie ma potrzeby wpisywania do tabeli domyslnej bramy, o ile w skrypcie uruchamiajacym demona pppd wpiszemy ciag 'defaultroute'