Konfiguracja routera
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)
[*] 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 |
"vla9h924" * "boogie"
# nano /etc/conf.d/net
ifconfig_ppp0=( "ppp" )
link_ppp0=( "eth1" )
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
"defaultroute"
"usepeerdns"
)
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 |
# emerge dhcpcd
# nano /etc/conf.d/net
ifconfig_eth1=( "dhcp" )
# nano /etc/conf.d/net
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
nameserver 123.123.123.123
# 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
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
dhcp-range=192.168.0.100,192.168.0.250,72h
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 |
# iptables -F
# iptables -t nat -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP
# export LAN=eth0
# export WAN=eth1
# 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
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# 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
# 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
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
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 |
# export LAN=eth0
# export WAN=eth1
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
# 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
# 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
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
# 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
# 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
mnie, 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
# rc-update add ntp-client default
# nano /etc/ntp.conf
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
# 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
# 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
# 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
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
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
# 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.
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 do mnie lub do naszego systemu raportowania
błędów, Gentoo Bugzilla. Należy
również o wszelkie dodatkowe informacje i sugestie dotyczące tego tekstu.
Zawartość tego dokumentu jest rozpowszechniana na podstawie licencji Creative Commons -
Attribution / Share Alike.
|