Home Dokumentacje Konfiguracja routera
21 | 10 | 2019
Konfiguracja routera
Wpisany przez Mike Frysinger   

Konfiguracja routera

Spis treści:

1. Wprowadzenie

Budowa własnego routera ze starych niepotrzebnych części to spora oszczędność w porównaniu z kupnem gotowego rozwiązania, np. firmy Linksys. Największą zaletą takiej decyzji jest niemal całkowita kontrola nad połączeniem. Pozostałe możliwości są zależne tylko od naszej wyobraźni.

W tym tekście omówimy konfigurowanie translacji adresów (NAT) na routerze (jądro oraz iptables), dodawanie i konfigurację podstawowych usług (serwer nazw (DNS) przez dnsmasq, dhcp przez dhcpd, ADSL przez ppp), a zakończymy na bardziej wyszukanych i dających więcej satysfakcji usługach jak przekazywanie portów, kształtowanie ruchu, serwery proxy/cachowanie, itp.

Jest kilka podstawowych wymagań jakie trzeba poznać przed rozpoczęciem pracy. Po pierwsze potrzebny będzie komputer z co najmniej dwiema kartami sieciowymi. Do tego przyda się znajomość ustawień połączenia sieciowego (IP, DNS, adres bramy, nazwa użytkownika i hasło). Niezbędna jest również odrobina wolnego czasu i zamiłowanie do Gentoo.

Konwencje użyte w tekście:

  • eth0 - NIC podłączona do sieci lokalnej (LAN)
  • eth1 - NIC podłączona do sieci rozległej (WAN)
  • LAN korzysta z prywatnych adresów 192.168.0.xxx
  • Router ma przypisany adres 192.168.0.1
  • Router pracuje na jądrze Linux 2.4 lub 2.6. Jąder 2.0 i 2.2 nie wspieramy.

Ważne: W związku z zachowaniem środków ostrożności, zalecane jest wyłączenie wszystkich niepotrzebnych usług na routerze do czasu uruchomienia firewalla. Aby przejrzeć aktualnie uruchomione usługi, należy wykonać polecenie rc-status.

2. Konfiguracja jądra

Jądro powinno posiadać sterowniki dla wszystkich używanych kart sieciowych. W celu sprawdzenia czy odpowiednie sterowniki są włączone należy wykonać polecenie ifconfig. Jego wynik może nieco różnić się od tego podanego poniżej, nie jest to jednak wielkim problemem. Najważniejsze, że wyświetlą się interfejsy.

Listing 2.1: Sprawdzanie kart sieciowych

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:60:F5:07:07:B8
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x9800

eth1      Link encap:Ethernet  HWaddr 00:60:F5:07:07:B9
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 Base address:0x9400

Jeśli nie pojawią się interfejsy obu kart sieciowych i nie jest się pewnym jakie to są karty, warto uruchomić program lspci | grep Ethernet (instalowany poleceniem emerge pciutils). Potem należy przejść do konfiguracji jądra i dodać obsługę odpowiedniego sterownika.

Kolejne niezbędne moduły to obsługa iptables i NAT oraz - opcjonalnie - kształtowania ruchu. Na liście poniżej znajdują się opcje wymagane (*), zalecane (x) oraz dotyczące kształtowania ruchu (s). Bez znaczenia jest fakt, czy wbudujemy je na stałe czy też zbudujemy w postaci modułów. Jeśli jakiś moduł będzie potrzebny to powinien zostać załadowany automatycznie. Sprawdzanie czy wszystko co potrzebne się ładuje pozostawiamy jako rozrywkę dla czytelnika.

Listing 2.2: Opcje sieciowe

Networking options  --->
   [*] TCP/IP networking
      [*] IP: advanced router
   [*] Network packet filtering (replaces ipchains)
Używając jądra 2.4.x, musimy zaznaczyć poniższą opcję dla DHCP:
   [*] Socket Filtering

   IP: Netfilter Configuration  --->
      [*] Connection tracking (required for masq/NAT)
         [x] FTP protocol support
         [x] IRC protocol support
      [*] IP tables support (required for filtering/masq/NAT)
         [*] IP range match support
         [x] MAC address match support
         [*] Multiple port match support
         [*] Packet filtering
            [*] REJECT target support
            [x] REDIRECT target support
         [*] Full NAT
            [*] MASQUERADE target support
         [s] Packet mangling
            [s] MARK target support
         [x] LOG target support

   QoS and/or fair queueing  --->
      [s] QoS and/or fair queueing
         [s] HTB packet scheduler
         [s] Ingress Qdisc

   [a] PPP (point-to-point protocol) support
      [a] PPP filtering
      [a] PPP support for async serial ports
      [a] PPP support for sync tty ports
      [a] PPP Deflate compression
      [a] PPP BSD-Compress compression
      [a] PPP over Ethernet

Uwaga: Pomiędzy jądrami serii 2.4 i 2.6 mogą pojawić się nieznaczne różnice, wierzymy jednak, że czytelnicy poradzą sobie z nimi wszystkimi. Nawet pomiędzy poszczególnymi wydaniami jądra 2.6 niektóre z tych opcji są przemieszczane. Powodzenia!

3. WAN (czyli Internet)

Wstęp

Istnieje wiele różnych sposobów na łączenie się z Internetem, zajmiemy się jednak tylko tym, na którym znam się najlepiej, czyli ADSL (PPPoE). Jeśli ktoś posiada rozsądny opis związany z innymi typami połączeń może mi go podesłać. Niektóre akapity mogą nie dotyczyć określonej sytuacji, należy je wtedy po prostu pominąć. W tym rozdziale opowiemy o podłączaniu routera do Internetu poprzez interfejs eth1.

ADSL i PPPoE

Całe oprogramowanie dla PPPoE, które kiedyś znajdowało się w pakiecie rp-pppoe Roaring Penguin zostało zintegrowane do standardowego pakietu PPP. Jego instalacja w Gentoo odbywa się za pomocą polecenia emerge ppp. Na początku dokumentu wspominaliśmy o nazwie użytkownika i haśle, należy je umieścić w pliku /etc/conf.d/net.

Uwaga: Aby poniższe instrukcje zadziałały potrzebny będzie pakiet baselayout w wersji 1.12.9 lub nowszy.

Listing 3.1: Konfiguracja interfejsu eth1

(Zamieniamy 'vla9h924' na odpowiednią nazwę
użytkownika, a 'boogie' na odpowiednie hasło)

"vla9h924" * "boogie"
# nano /etc/conf.d/net
# Wpis przypisujący połączenie adsl poprzez eth1 do ppp0:
ifconfig_ppp0=( "ppp" )
link_ppp0=( "eth1" )
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
 "defaultroute"
 "usepeerdns"
  Inne interesujące ustawienia można znaleźć w pliku /etc/conf.d/net.example
)
username_ppp0="vla9h924"
password_ppp0="boogie"

# ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0 default
# /etc/init.d/net.ppp0 start

Ostrzeżenie: Przy podnoszeniu interfejsu DSL zostanie utworzone ppp0. Jest to dość mylące, gdyż karta sieciowa tego interfejsu nazywa się eth1. Od tej pory w przykładach utożsamiamy eth1 z ppp0.

Ostrzeżenie: Niezbędna jest zmiana praw dostępu do pliku /etc/conf.d/net tak, aby miał do niego dostęp tylko root, ponieważ znajdują się w nim nazwa użytkownika i hasło.

Ostrzeżenie: Osoby, które migrują ze starego pakietu rp-pppoe oraz osoby, które mają dziwne problemy związane z połączeniem, powinny przeczytać akapit dotyczący MTU na końcu tego dokumentu.

Modem kablowy i dynamiczne/statyczne IP

Posiadacze statycznych adresów IP potrzebują paru informacji więcej niż użytkownicy adresów przydzielanych dynamicznie. Będą im potrzebne następujące dane: adres IP, adres bramki i adresy serwerów DNS.

Listing 3.2: Konfiguracja interfejsu eth1

Użytkownicy posiadający adres IP przydzielany dynamicznie:
# emerge dhcpcd
# nano /etc/conf.d/net
Potrzebny będzie wpis:
ifconfig_eth1=( "dhcp" )

Użytkownicy posiadający statyczny adres IP:
# nano /etc/conf.d/net
Potrzebny będzie wpis:
config_eth1=( "66.92.78.102 broadcast 66.92.78.255 netmask 255.255.255.0" )
routes_eth1=( "default gw 66.92.78.1" )
# nano /etc/resolv.conf
Dodajemy jeden serwer na linię:
nameserver 123.123.123.123

Polecenia dla wszystkich:
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

I na tym kończą się nasze przygotowania.

4. LAN

Czynności opisane w tym akapicie w porównaniu z tymi z poprzedniej części są banalnie proste do przeprowadzenia.

Listing 4.1: Konfiguracja interfejsu eth0

# nano /etc/conf.d/net
Dodajemy tam:
config_eth0=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0" )
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start

5. Usługi w LAN-ie

Serwer DHCP

Byłoby miło gdyby użytkownicy sieci mieli wszystko automatycznie konfigurowane zaraz po włączeniu komputera bez potrzeby jakiejkolwiek ingerencji z ich strony. Nie musieliby pamiętać tych wszystkich liczb ani gubić się w zakręconych plikach konfiguracyjnych. Życie byłoby wtedy znacznie prostsze i piękniejsze. I właśnie taki stan powszechnej szczęśliwości może nam zapewnić serwer DHCP.

DHCP to protokół umożliwiający dynamiczną i w pełni automatyczną konfigurację innych komputerów. Wystarczy uruchomić na routerze serwer DHCP (dhcpd), podać mu wszystkie informacje o potencjalnych klientach (adresy IP, adresy serwerów DNS, bram sieciowych itp.), a komputer podłączony do serwera zostanie dobrze skonfigurowany już przy starcie systemu. Więcej informacji o DHCP znajduje się w Wikipedii.

Skorzystamy z pakietu o nazwie dnsmasq, który zawiera w sobie usługi DHCP i DNS. Teraz skupimy się na usłudze DHCP. Informacje o tym jak uruchomić inny serwer DHCP znajdują się w akapicie zatytułowanym "Zabawki". Lektura komentarzy z pliku /etc/dnsmasq.conf może pomóc w majstrowaniu przy serwerze DHCP, aby lepiej go dostosować do konkretnych potrzeb. Domyślna konfiguracja powinna zadowolić większość osób.

Listing 5.1: Konfiguracja dhcpd

# emerge dnsmasq
# nano /etc/dnsmasq.conf
Wystarczy dodanie jednej linii i DHCP będzie działać:
dhcp-range=192.168.0.100,192.168.0.250,72h
Udostępniamy dnsmasq tylko dla naszego LAN-u
interface=eth0
# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start

I tak nasz mały router stał się najprawdziwszym serwerem DHCP! Teraz wystarczy podłączyć komputery do sieci i sprawdzić czy wszystko działa jak należy. Jeśli chodzi o systemy Windows to musimy przejść do właściwości protokołu TCP/IP i zaznaczyć tam opcję 'Pobierz adresy serwerów DNS automatycznie'. Czasami zmiany nie są wczytywane automatycznie i natychmiastowo, dlatego konieczne może okazać się przejście do wiersza poleceń i wpisanie tam poleceń ipconfig /release oraz ipconfig /renew. To tyle o Windowsie - wracamy do Gentoo.

Serwer DNS

Ludzie nie lubią zapamiętywać liczb, znacznie lepiej przyswajają zwykłe nazwy, dlatego łatwiej zapamiętać adres ebay.com niż 66.135.192.8. W związku z tym istnieje zapotrzebowanie na coś takiego jak serwer DNS. Serwery DNS znajdują się w całym Internecie, a ich zadaniem jest zwracanie ciągu '66.135.192.87' za każdym razem gdy ktoś będzie chciał odwiedzić stronę ebay.com. Więcej informacji o DNS można znaleźć w Wikipedii.

W związku z tym, że korzystamy z dnsmasq jako serwera DHCP i zawiera on w sobie również DNS, nic nie musimy tu ustawiać. Nasz router już zapewnia obie usługi wszystkim połączonym z nim komputerom.

Oczywiście można wybrać inny serwer DNS jeśli ma się taką potrzebę.

NAT (maskarada IP)

W tym momencie użytkownicy naszej sieci mogą komunikować się między sobą oraz przeszukiwać bazę domen, ale wciąż tak naprawdę nie mogą swobodnie łączyć się z Internetem. Administrator może być z tego powodu zadowolony (bo ma nieobciążone łącze), ale użytkownicy na pewno zbyt długo takiego stanu rzeczy nie będą znosić.

W celu umożliwienia użytkownikom prywatnego LAN-u łączenia się z Internetem musimy skonfigurować NAT. Rozwiązanie to przydaje się zwłaszcza wtedy, gdy mamy do dyspozycji tylko jeden zewnętrzny adres IP (co jest bardzo częstym przypadkiem u wielu ISP), a chcemy podłączyć do Internetu komputery w całym domu. Więcej informacji o NAT można znaleźć w Wikipedii.

Uwaga: Zanim zaczniemy, należy się upewnić, że mamy zainstalowany pakiet iptables. W większości systemów jest instalowany automatycznie, ale może również się zdarzyć, że go brakuje. Jeśli go nie ma to instalujemy go za pomocą polecenia emerge iptables.

Listing 5.2: Konfiguracja iptables

Na początek czyścimy regułki:
# iptables -F
# iptables -t nat -F

Domyślne zasady dla pakietów nie pasujących do żadnej regułki
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP

Przykłady można przekleić
# export LAN=eth0
# export WAN=eth1

Potem blokujemy usługi tak, aby były dostępne tylko dla sieci LAN

# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

(Opcjonalnie) Pozwalamy na dostęp do naszego serwera SSH z Internetu
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

Upuszczamy pakiety TCP/UDP dla uprzywilejowanych portów
# iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

Ostatecznie dodajemy regułki dla NAT
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE

Informujemy jądro o chęci przekazywania IP
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

Poniższe polecenia sprawią, że przy każdym uruchomieniu routera
nie będziemy musieli wpisywać ręcznie wszystkich regułek
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
Dodajemy przez odkomentowanie następujące linijki:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
Osoby bez stałego dostępu do Internetu zapewną zechcą włączyć tę opcję:
net.ipv4.ip_dynaddr = 1

Po wykonaniu powyższych poleceń komputery z naszej małej sieci powinny mieć dostęp do Internetu równie swobodny, jak gdyby były podłączone do niego bezpośrednio.

Opcja ip_dynaddr jest potrzebna do wyboru systemu dial on demand, gdy provider nie zapewnia stałego adresu. Pozwala to na obejście problemu gdy połączenie jest inicjowane przed pełnym skonfigurowaniem interfejsu. Pozwala to na ułatwienie życia osobom korzystającym z sieci za pomocą routera.

6. Zabawki (coś na długie deszczowe dni)

Wstęp

Wierzycie czy nie - to już wszystko. Teraz zajmiemy się dodatkowymi gadżetami, które na pewno zainteresują wiele osób. Wszystkie są całkowicie opcjonalne.

Przekazywanie portów.

Czasem zachodzi potrzeba uruchomienia jakichś usług na komputerze znajdującym się za routerem lub też umożliwienie zdalnego do niego połączenia. Może chodzić np. o uruchomienie na jednym lub kilku komputerach za NAT-em serwera FTP, HTTP, SSH lub VNC. Jedynym ograniczeniem wtedy jest to, że można mieć tylko jedną taką usługę na każdym porcie naszego routera. Na przykład nie ma możliwości przekazywania połączeń na trzy serwery FTP za routerem i łączenia się przez nie poprzez port 21. Jeśli jednak to konieczne, zawsze można uruchomić pozostałe na innych portach - np. 123 czy 567.

Każda regułka dla przekazywania portów ma postać iptables -t nat -A PREROUTING [-p protokół] --dport [zewnętrzny port na routerze] -i ${WAN} -j DNAT -to [ip/port na które chcemy przekazywać]. Iptables nie akceptuje nazw stacji roboczych, nie trzeba też podawać portu docelowego na wewnętrznym komputerze. Zawsze jest to ten sam port co na komputerze przekierowującym. Więcej informacji na ten temat znajduje się w man iptables.

Listing 6.1: Przekazywanie portów

Przykłady można przekleić
# export LAN=eth0
# export WAN=eth1

Przekazywanie portu 2 dla ssh na wewnętrznej stacji roboczej
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22

Przekazywanie FTP na wewnętrzną stację roboczą
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56

Przekazywanie HTTP na wewnętrzną stację roboczą
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56

Przekazywanie VNC na wewnętrzną stację roboczą
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
Aby mieć VNC na 192.168.0.3, należy po prostu dodać ':1' do nazwy routera

Przekazywanie Samba na wewnętrzną stację roboczą (dodatkowe porty potrzebne są do obsługi systemu Windows)
# iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2

Przekazywanie Bittorrent
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2

Przekazywanie eDonkey/eMule
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55

Wsparcie dla Warp Pipe z Game Cube
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56

Interaktywna pomoc techniczna Playstation2
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11

Xbox Live
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69

Uwaga: Inne ciekawe przykłady przekazywania portów można przysyłać bezpośrednio do Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. , postaram się je zamieścić na tej stronie.

Identd (dla IRC)

Usługa ident jest bardzo silnie wykorzystywana przez IRC. Teraz, gdy użytkownicy sieci znaleźli się za routerem należy zapewnić identyfikację zarówno im jak i naszemu routerowi. Jednym z serwerów stworzonych w tym celu jest midentd.

Listing 6.2: Konfiguracja ident

# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start

W Portage znajduje się jeszcze kilka innych serwerów tego typu. Zależnie od potrzeb warto zwrócić uwagę na oidentd lub fakeidentd.

Serwer czasu

Prawidłowe ustawienie czasu na serwerze również może dać nam wiele korzyści. Jednym ze sposobów osiągnięcia tego może być sieciowy protokół czasu (NTP), z którego można zacząć korzystać po zainstalowaniu pakietu ntp, zawierającego zarówno serwer jak i program kliencki.

Większość ludzi uruchamia na swoich komputerach tylko program kliencki ntp. Oczywiście, im więcej klientów na świecie, tym większe obciążenie serwery ntp muszą wytrzymać. W warunkach domowych możemy trochę odciążyć publiczne serwery, samodzielnie dostarczając aktualny czas do wszystkich naszych komputerów. Dodatkową korzyścią może być również to, że aktualizacje czasu będą w tym przypadku znacznie szybsze. Wszystko co musimy zrobić to uruchomić na naszym routerze serwer czasu, który będzie się synchronizował z publicznymi serwerami w Internecie, jednocześnie dostarczając poprawny czas do reszty naszych komputerów. Pierwsze polecenie jakie należy wykonać to emerge ntp na routerze.

Listing 6.3: Konfigurowanie serwera NTP

# nano /etc/conf.d/ntp-client
Domyślne ustawienia powinny być dobre, ale można również dostosować je do indywidualnych potrzeb
# rc-update add ntp-client default

# nano /etc/ntp.conf
Dodajemy następujące linie:
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
To pozwoli na korzystanie z Twojego serwera ntp tylko klientom, którzy posiadają
adres IP z zakresu 192.168.0.xxx
# nano /etc/conf.d/ntpd
Domyślne ustawienia powinny być dobre, ale można również dostosować je do indywidualnych potrzeb:
# rc-update add ntpd default

# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start

Uwaga: Przy konfiguracji serwera należy się upewnić, że jest otwarta możliwość komunikacji do i z portu ntp (123/udp). Klient wymaga jedynie możliwości łączenia się z portu 123 udp.

Następnie na wszystkich komputerach należących do sieci należy wykonać polecenie emerge ntp. Ich konfiguracja będzie znacznie prostsza.

Listing 6.4: Konfiguracja klienta NTP

# nano /etc/conf.d/ntp-client
Należy dokonać zmiany NTPCLIENT_OPTS
z 'pool.ntp.org' na'192.168.0.1'
# rc-update add ntp-client default
# /etc/init.d/ntp-client start

Serwer Rsync

Osoby posiadające wiele komputerów z Gentoo w obrębie jednego LAN-u z pewnością wolą pobrać jeden obraz drzewa Portage z Internetu i później udostępnić go dla innych komputerów niż uruchamiać polecenie emerge sync osobno na każdym z nich. Pozwala to zmniejszyć zarówno obciążenie serwerów rsync Gentoo jak i lokalnych komputerów. Konfiguracja jest stosunkowo prosta.

Uwaga: Więcej szczegółów znajduje się w tekście zatytułowanym Zasady pracy serwerów rsync.

W związku z tym, że każdy komputer z Gentoo musi mieć zainstalowany program rsync, nie ma potrzeby go teraz instalować. Wystarczy wyedytować domyślny plik konfiguracyjny /etc/rsyncd.conf odkomentowując w nim część [gentoo-portage] i dodać opcję address. Pozostałe domyślne ustawienia nie wymagają poprawek.

Listing 6.5: Konfiguracja serwera Rsync

   pid file = /var/run/rsyncd.pid
   use chroot = yes
   read only = yes
   address = 192.168.0.1

   [gentoo-portage]
           path = /mnt/space/portage
           comment = Gentoo Linux Portage tree
           exclude = /distfiles /packages

Następnie należy uruchomić odpowiednią usługę (przypominamy, ustawienia domyślne są w porządku).

Listing 6.6: Uruchamianie serwera rsync

# /etc/init.d/rsyncd start
# rc-update add rsyncd default

Na koniec konfigurujemy pozostałe komputery tak, aby korzystały z naszego routera jako domyślnego serwera Rsync.

Listing 6.7: Ustawienie serwera Rsync w pliku make.conf na pozostałych komputerach

SYNC="rsync://192.168.0.1/gentoo-portage"

Serwer pocztowy

Czasami miło jest uruchomić na routerze własny prosty serwer poczty (SMTP). Ja go uruchomiłem, aby użytkownicy widzieli swoje maile jako wysłane natychmiastowo i aby cała praca nad ponownym przesyłaniem czy routowaniem została przeniesiona na serwer pocztowy. Warto zwrócić uwagę, że niektórzy usługodawcy Internetowi nie pozwalają na przekazywanie poczty dla kont, które nie są częścią ich sieci (np. Verizon). Wartościową opcją jest możliwość kontrolowania wielkości przesyłanych załączników tak, aby zbyt duże pliki nie blokowały łącza.

Listing 6.8: Konfiguracja SMTP

# emerge netqmail
Wynik polecenia `hostname` musi być poprawny
# emerge --config netqmail
# iptables -I INPUT -p tcp --dport smtp -i ! ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# cd /etc/tcprules.d
# nano tcp.qmail-smtp

Dodajemy następujący wpis do sekcji allow:
192.168.0.:allow,RELAYCLIENT=""

# make
# rc-update add svscan default
# /etc/init.d/svscan start

Osobiście jestem wielkim fanem programu qmail, ale jego wybór nie jest tu obowiązkowy i można swobodnie wybrać inny MTA. Podczas konfiguracji poczty należy ustawić jako serwer adres 192.168.1.0 i wszystko powinno działać prawidłowo. Więcej informacji na ten temat znajduje się na stronie domowej projektu netqmail.

Kompletny serwer DHCP

Wcześniej skorzystaliśmy z pakietu dnsmasq jako źródła usługi DHCP w naszej sieci. Dla ludzi, którzy opiekują się małymi LAN-ami jest to wystarczające rozwiązanie. Niektórzy jednak mogą być bardziej wymagający i zapragną bardziej wyszukanych możliwości. Takim osobom polecam serwer DHCP z krwi i kości, stworzony przez ISC.

Listing 6.9: Konfiguracja dhcpd

# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
(Przykładowy plik konfiguracyjny)
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
       range 192.168.0.100 192.168.0.250;
       default-lease-time 259200;
       max-lease-time 518400;
       option subnet-mask 255.255.255.0;
       option broadcast-address 192.168.0.255;
       option routers 192.168.0.1;
       option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
(Ustawiamy IFACE="eth0")
# rc-update add dhcpd default
# /etc/init.d/dhcpd start

Jest to minimalna konfiguracja spełniająca te same funkcje co przedstawiony wyżej dnsmasq. W związku z tym, że zmieniliśmy pakiet, który będzie spełniał funkcje serwera DHCP, musimy wyłączyć taką możliwość dla dnsmasq. W tym celu wystarczy zakomentować wpis dhcp-range w pliku /etc/dnsmasq.conf i ponownie uruchomić usługę.

Podłączanie drugiego LAN-u (lub nawet kilku))

Czasem pojawia się potrzeba podłączenia do routera drugiej sieci LAN. Przyczyny tego mogą być różne, a sama procedura jest dość prosta. W poniższym przykładzie zakładamy, że LAN zostanie podłączony za pomocą trzeciej karty sieciowej, eth2.

Przede wszystkim należy skonfigurować interfejs. Informacje na ten temat znajdują się w listingu 4.1, wystarczy zastąpić tam eth0 przez eth2, a zamiast 192.168.0 wpisać 192.168.1.

Następnie należy dokonfigurować dnsmasq, dodając do niego informacje o nowym interfejsie. W tym celu edytujemy plik /etc/conf.d/dnsmasq po raz kolejny i dodajemy linię -i eth2 do zmiennej DNSMASQ_OPTS - możliwe jest użycie kilku parametrów -i. Później edytujemy /etc/dnsmasq.conf i dodajemy kolejną linię z zakresem adresów IP, podobną do tej z listingu 5.1. Posiadanie kilku linii tego typu nie stanowi żadnego problemu.

Na koniec przeglądamy listing 5.2 i duplikujemy wpisy z -i ${LAN}. Można również zastosować do tego celu drugą zmienną, np. LAN2, żeby trochę uprościć konfigurację.

7. Problemy

Przydatne narzędzia

W przypadku problemów z komunikacją pomiędzy komputerami warto skorzystać z następujących, znajdujących się w kategorii net-analyzer drzewa Portage, narzędzi:

Program Opis
wireshark Narzędzie z interfejsem graficznym pozwalające na podglądanie danych przesyłanych w sieci w oparciu o zestaw filtrów.
tcpdump Konsolowy program do podglądania ruchu pakietów, również oparty o zestaw filtrów
iptraf Monitor sieci LAN oparty o biblioteki graficzne ncurses
ettercap Program do kontroli i monitorowania sieci, również oparty na ncurses

DHCP się nie uruchamia

Pierwsze uruchomienie skryptu startowego init.d dla dhcp może się nie udać, w dodatku nie informując co poszło nie tak.

Listing 7.1: Przykład błędu DHCP

# /etc/init.d/dhcp start
 * Setting ownership on dhcp.leases ...          [ ok ]
 * Starting dhcpd ...                            [ !! ]

Aby rozwiązać ten problem, wystarczy wiedzieć gdzie dhcpd wysyła komunikaty o błędach. Wystarczy przejść do /var/log i poczytać logi. W związku z tym, że nazwa pliku z logiem jest różna w zależności od programu logującego działającego na komputerze, radzimy uruchomić grep -Rl dhcpd /var/log, aby odnaleźć właściwą lokację. Błąd ten zwykle jest spowodowany literówką w pliku konfiguracyjnym. Można uruchomić dhcpd -d -f (debug, praca w tle) i sprawdzić na czym dokładnie usługa się psuje.

Niewłaściwy rozmiar MTU

W przypadku dziwnych błędów (np. gdy tylko niektóre strony się wczytują) warto sprawdzić czy nie wystąpił problem z wielkością MTU. Szybki sposób na sprawdzenie tego to wykonanie następującego polecenia:

Listing 7.2: Rozwiązywanie problemów z MTU

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS
--clamp-mss-to-pmtu

Będzie to miało wpływ tylko na nowe połączenia, dlatego należy odświeżyć strony, które wcześniej się nie ładowały w celu przetestowania nowych ustawień. W naprawie może pomóc informacja, że standardowa wartość MTU dla połączenia do 100 Mbit to 1492 Więcej informacji znajduje się w 15 rozdziale tekstu Linux Advanced Routing & Traffic Control HOWTO.

Jeśli polecenie to nie skutkuje w naszym przypaku, możemy dodać odpowiednią regułkę do tablicy mangle. Wystarczy dodać opcję -t mangle do powyższego polecenia.

Nie daje się połączyć dwóch komputerów bezpośrednio

Jeśli komputery mają być połączone bezpośrednio, czyli bez udziału huba lub switcha, zwykły kabel sieciowy nie zadziała jeśli nie ma się specjalnego urządzenia (Auto MDI/MDX), które samo wykrywa rodzaj kabla. Konieczne wtedy będzie skorzystanie ze specjalnego rodzaju skrętki nazywanej skrosowaną. Więcej informacji na jej temat znajduje się w Wikipedii.

8. Podsumowanie

Na koniec warto jeszcze wspomnieć, że wszystkie problemy z przeprowadzaniem czynności opisanych w tym tekście można zgłaszać bezpośrednio Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. lub do naszego systemu raportowania błędów, Gentoo Bugzilla. Należy również o wszelkie dodatkowe informacje i sugestie dotyczące tego tekstu.



Drukuj

Zaktualizowano 19 sierpnia 2008

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 18 września 2009. Jeśli chcesz pomóc w aktualizacji tego dokumentu do najnowszej wersji, skontaktuj się z Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. , koordynatorem polskiego projektu tłumaczeń dokumentacji Gentoo.

Podsumowanie: Krótki opis umożliwiający skonfigurowanie routera łączącego domową sieć z Internetem.

Mike Frysinger
Autor

Łukasz Damentko
Tłumaczenie

Donate to support our development efforts.

<p>Your browser does not support iframes.</p>

Copyright 2001-2011 Gentoo Foundation, Inc. Questions, Comments? Contact us.

 
Linki sponsorowane

W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

Akceptuję pliki cookies z tej witryny.