Gentoo Logo

Otthoni router útmutató

Tartalom:

1.  Bevezető

Elavult, öreg cuccokból történő saját router építesének megvannak a maga előnyei olyan előrecsomagolt gyári verziókkal szemben, mint például amilyeneket a Linksys gyárt. Az egyik legnagyobb előnye, hogy behatásod van a kapcsolat felett. A többi előny a fantáziádra van bízva; közel bármit meg tudsz csinálni ezzel a leírással, csak attól függ, hogy mire van szükséged.

Ebben az útmutatóban szó lesz arról, hogyan állíthatod be a hálózati címfordítást (NAT - Network Address Translation) a routeren (kernel és iptables használatával), hogyan adj hozzá és állíts üzembe gyakori szolgáltatásokat (DNS - dnsmasq, dhcp - dhcpcd, ADSL - ppp), és végezetül néhány bonyolultabb finomságot (port forwarding, traffic shaping, proxies/caching, stb...).

Mielött belevágnál, néhány alap követelménnyel rendelkezned kell. Elöször is szükséged lesz egy számítógépre legalább két hálózati kártyával (NIC - Network Interface Card). Majd szükséged lesz az internet kapcsolatod beállításához szükséges adatokra (olyanok mint IP/DNS/Gateway/felhasználónév/jelszó). Végezetül szükséged lesz némi szabadidőre és némi Gentoo szeretetre.

Az útmutatóban használt konvenciók a következőek:

  • eth0 - az a hálózati kártya, amely a helyi hálózathoz kapcsolódik (LAN)
  • eth1 - az a hálózati kártya, amely a \"külső\" hálózathoz kapcsolódik, pl. internethez (WAN)
  • LAN, amely a 192.168.0.xxx privát IP tartományt használja
  • A router IP címe a szabvány 192.168.0.1 cím legyen
  • router, amely 2.4 vagy 2.6 Linuxot futtat; a 2.0/2.2-as kerneleket nem tárgyalja ez az útmutató

Fontos: Biztonsági megfontolások miatt erősen ajánlott, hogy állíts le minden nélkülözhető szolgáltatást a routeren, amíg be nem állítjuk és elindítjuk a tűzfalat. Az jelenleg futó szolgáltatások megtekintéséhez futtasd le az rc-status parancsot.

2.  Kernel beállítása (ismerd meg önmagad szekció)

A kerneledben mindkettő hálózati kártyád driverére szükség lesz. Használd az ifconfig parancsot, hogy megállapítsd a kártyáid rendben mennek-e? A kimeneted kissé különbözhet az alábbi példától, de ez így van rendjén. Az a lényeges, hogy minkét hálózati interfészt látható legyen.

Kódlista 2.1: Hálózati kártyák ellenőrzése

# 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 

Ha nem látod a két hálózati kártyádat és nem vagy biztos benne, hogy milyen hálózati kártyákkal is rendelkezel, próbál lefuttatni az lspci | grep Ethernet parancsot. Ha nincs lspci, akkor a emerge pciutils eredményeképpen már biztos lesz. Miután megszerezted a szükséges információkat, add hozzá a megfelelő driverek támogatását a kerneledhez.

A következő dolog amire szükséged lesz, az iptables és a NAT támogatása (és packet shaping ha szükséged van rá). A következő lista a következő jelöléseket használja: (*) mindenkinek szükséges, (a) adsl használóknak PPPoE-n keresztül, (x) mindenkinek ajánlott, (s) csak sharper használóknak. Nem számít, hogy a funkciókat belefordítod-e a kerneledbe vagy csak modulba rakod őket, amíg a szükséges modulok be vannak töltve (a modulok betöltésének mikéntjét az olvasóra bízom, mint vidám felfedezendő témát).

Kódlista 2.2: Hálózati Beállítások

Networking options  --->
   [*] TCP/IP networking
      [*] IP: advanced router
   [*] Network packet filtering (replaces ipchains)
Ha 2.4.x kernelt használsz, akkor a DHCP érdekében engedélyezd a 
következőt:
   [*] 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

Megjegyzés: Néhány dolog különbözik a 2.4 vs 2.6 kernel között, de szerintem ezekre rájösz magadtól is :).

3.  Nézzük a WAN részt (vagyis AZ Internetet)

Bevezető

Több módszer is létezik, amivel az internethez kapcsolódhatsz, így csak azt fogom részletezni, amellyeket jól ismerek. Ez nemmás, mint az ADSL (PPPoE) és a kábel modemek (statikus/dinamikus). Ha ismersz más módszereket is, akkor ne habozz és írj egy kis ismertetőt róla és küldd el emailben nekem. Továbbá nyugodtan hagyd ki azokat a fejezeteket, amelyek nem vonatkoznak rád. Ez a fejezet azt taglalja, hogyan kapcsoljuk a routert az internetre az eth1 interfészen keresztül.

ADSL és PPPoE

Az összes gusztusos PPPoE szoftver egy kis csomagba lett egybegyúrva, amit manapság rp-pppoe-nak hívnak (Roaring Penguin), és bele lett integrálva a standard PPP csomagba. Egyszerűen telepítsd fel az emerge ppp paranccsal és már léphetsz is tovább. Emlékszel, említettem, hogy szükséged lesz a felhasználónév/jelszó párosra? Nos mivel nem tréfáltam, remélem mostanra a kezed ügyében van! Töltsd be a /etc/conf.d/net fájlt a kedvenc szövegszerkesztődbe és állítsd be a szükséges adatokat.

Megjegyzés: Hogy a következő beállítások működjenek, ahhoz a baselayout-1.12.9 vagy frissebb verziójának kell telepítve lennie.

Kódlista 3.1: Az eth1 beállítása

(Cseréld le a 'felhasználó'-t a felhasználónevedre és a 'jelszó'-t a 
jelszavadra)

# nano /etc/ppp/pap-secrets
# client    server  secret
"vla9h924" * "password"
# nano /etc/conf.d/net
Mondjuk meg a baselayout-nak, hogy az adsl-hez használja az eth1 
interfészt a ppp0-n keresztül:
config_ppp0=( "ppp" )
link_ppp0="eth1"
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
        "defaultroute"
        "usepeerdns"
Ha kíváncsi vagy egyéb beállítási lehetőségekre is, akkor nézd meg a 
/etc/conf.d/net.example fájlt, amely további példákat tartalmaz.
)
username_ppp0="felhasználó"
password_ppp0="jelszó"

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

Figyelmeztetés: Amikor a DSL interfész feléled, létrejön a ppp0 nevű interfészt. Habár a hálózati kártyádat eth1-nek hívják, az IP címet mégis a ppp0 fogja megkapni. Így mostantól, ha a példákban 'eth1'-et látsz, akkor cseréld le 'ppp0'-ra.

Figyelmeztetés: Változtasd meg úgy a /etc/conf.d/net jogosultságát, hogy csak a root tudja írni/olvasni, hiszen éppen most tettünk bele felhasználónevünket és jelszavunkat.

Figyelmeztetés: Az rp-ppoe csomagról váltóknak és azoknak akik furcsa kapcsolatszakadásokatt tapasztalnak, ellenőrizzék a Hibaelhárítás részben az MTU szekciót.

Kábel és/vagy dinamikus/statikus IP

Ha statikus IP címmel rendelkezel, akkor valamivel több beállítani valód van mintha dinamikusan kapnád a címet. Statikus címet használóknak be kell állítaniuk az IP címet fixre, illetve a gateway-t és a DNS szervereket is.

Kódlista 3.2: Az eth1 beállítása

Dinamikus IP felhasználóknak:
# emerge dhcpcd
# nano /etc/conf.d/net
A következő bejegyzésre lesz szükséged:
config_eth1=( "dhcp" )

Statikus IP felhasználóknak:
# nano /etc/conf.d/net
A következő bejegyzésre lesz szükséged:
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
Minden DNS szerver külön sorba kerül:
nameserver 123.123.123.123

Dinamikus és statikus beállításokhoz:
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

Mostanra minden szükséges dolog be lett állítva.

4.  Nézzük a LAN részt

Ez a lépés gyerekjáték lesz az előző fejezethez képest.

Kódlista 4.1: Az eth0 interfész beállítása

# nano /etc/conf.d/net
A következő sort adjuk hozzá:
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.  LAN Szolgáltatások (mert kedves emberek vagyunk)

DHCP Szerver

Lemerném fogadni, hogy jó lenne, ha bárki az otthonodban csak rádugná a gépét a hálózatra és minden elsőre működne. Nem kell emlékezni a beállítás számszerű adataira, nem kevernénk össze a beállításokat! Az élet ilyen kegyes lenne? Bemutatkozik a DHCP (Dynamic Host Configuration Protocol) és, hogy miért is kell majd foglalkoznod vele.

DHCP pontosan azt csinálja amit a neve jelent. Egy protokoll, amely lehetővé teszi, hogy dinamikusan és automatikusan bekonfiguráljuk a hálózatra dugott gépeket. A DHCP szervert magán a routeren fogjuk futtatni, megadva minden információt a hálózatunkról (érvényes IP címek, DNS szerverek, gateway-ek, stb...), így amikor a gépek bekapcsolnak, lefuttatnak egy DHCP klienst, amelyek segítségével a gépek automatikusan beállítják magukat. Semmi összevisszaság! A DHCP-ről bővebb információkat találhatsz a Wikipédiában.

Mi a dnsmasq nevű csomagot fogjuk használni, amely mind DHCP, mind DNS szolgáltatást biztosít. De most még csak a DHCP-re fókuszáljunk. Amennyiben más DHCP szervert szeretnél futtatni, akkor másmilyen példákat is találhatsz a 'Kedves Dolgok' fejezetben.Valamint, ha inkább magad ácsolnád össze a DHCP szerver beállításait, akkor olvasd el a /etc/dnsmasq.conf megjegyzéseit. Az összes alapértelmezett értéknek működnie kell.

Kódlista 5.1: A DHCP szerver beállítása

# emerge dnsmasq
# nano /etc/dnsmasq.conf
A következő sor engedélyezi a dhcp-t:
dhcp-range=192.168.0.100,192.168.0.250,72h
dnsmasq lekorlátozása csak a LAN interfészre
interface=eth0

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

Mostanra a kis routered egy tiszteséges, kis DHCP szerver lett! Dugd rá a gépeket a hálózatra és láss csodát, működnek! Windows rendszereken, menj be a TCP/IP Beállításokba és válaszd ki az 'IP cím automatikus kérése' és a 'DNS-kiszolgáló címének automatikus kérése' opciókat. Néha a beállítások nem hajtódnak végre rögtön, ha így lenne, akkor nyisd meg a parancssort és futtasd le az ipconfig /release és az ipconfig /renew parancsokat. Ennyi elég volt a Windowsból, térjünk vissza a kedvenc pingvinünkhöz.

DNS Szerver

Amikor az emberek internet oldalakat látogatnak, akkor a neveket jegyzik meg, nem pedig számsorozatokat. Egyszerű belátni ha belegondolunk, hogy melyiket könyebb megjegyezni, az ebay.com-ot vagy az 66.135.192.87 IP címet? Itt lép a képbe a DNS. DNS szerverek futnak szerte az interneten, így amikor valaki meg akarja látogatni az 'ebay.com'-ot, ezek a szerverek változtatják az 'ebay.com'-ot (amit mi megértünk) '66.135.192.87' címmé (amit a számítógépünk ért meg). Ha több információra vagy kiváncsi a DNS-ről, akkor nézz utánna a Wikipédiában.

Mióta a dnsmasq-ot használjuk DHCP szerverként, és mivel az tartalmaz egy DNS szervert is, ezért más tennivalónk nincs is! A kis routered már DNS-t is szolgáltat a DHCP klienseknek. Lemerném fogadni, hogy azt kívánod, bárcsak minden ilyen könnyű lenne ;).

Természetesen választhatsz más DNS szervert is, ha úgy tartja kedved, de a dnsmasq-ot pont azért választottuk, mert pontosan arra lett tervezve amire szükségünk van, semmi többre. Egy kis méretű DNS caching/forwarding szerverre a helyi hálózatunk számára. Nem olyat keresünk, amely DNS-t szolgáltat az egész saját domainünk számára, csak egyszerű DNS-t szolgáltasson minden gépnek a lanunkban.

NAT (vagyis IP-masquerading)

Ennél a pontnál, az emberek már beszélgethetnek egymással a hálózatodon, és a hosztneveket is kikereshetik a DNS-en keresztül, de még mindig nem tudnak kapcsolódni az internethez. Amíg neked jó hír (nagyobb sávszélesség jut neked), addig mások tuti, hogy nem ennyire boldogak az ötlettől.

Itt lép képbe a hálózati címfordítás (NAT = Network Address Translation). A NAT egy módszer arra, hogy egy privát hálózat (LAN) gépeit az internetre köthesd, arra az esetre ha csak limitált számú publikus IP címed van. Tipikusan amikor 1db publikus IP címet kapsz az internet szolgáltatódtól, de te szeretnéd, hogy az egész lakás kapcsolódhasson az internetre. A NAT az ami ezt lehetővé teszi számunkra. Bővebb információkat találhatsz a NAT-ról a Wikipédiában.

Megjegyzés: Mielőtt belevágnánk, győződj meg arról, hogy a rendszeredre telepítve van az iptables. Bár automatikusan települ a legtöbb rendszeren, előfordulhat, hogy mégsem rendelkezel vele. Amennyiben így jártál, akkor egyszerűen telepítsd a következő paranccsal: emerge iptables.

Kódlista 5.2: Az iptables beállítása

Elöször is kitöröljük az aktuális szabályainkat
# iptables -F
# iptables -t nat -F

Alapértelmezett eljárások beállítása, a nem illeszkedő forgalmakra

# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP

Másold ki és illeszd be ezeket a példákat ...
# export LAN=eth0
# export WAN=eth1

Blokkoljuk a szolgáltatásainkat, így csak a LAN-on belül működnek

# 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

(Opcionális) Engedélyezzük az ssh szerverünkhöz való hozzáférést a 
WAN felől
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

Privilegizált portokra érkező TCP / UDP csomagok eldobása
# 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

Végezetül beállítjuk a NAT-hoz szükséges szabályokat
# 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
Mondjuk meg a kernelnek, hogy az ip forwardingot használja
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

És a gép tegyen így minden boot során, hogy ne kelljen kézzel mindig 
megadnunk
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
adjuk hozzá/kommentezzük ki a következő sorokat:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

Ha van dinamikus internet-címed, és elérhetővé szeretnéd tenni, 
akkor engedélyezheted:
net.ipv4.ip_dynaddr = 1

Miután mindezt megcsináltad, a hálózatod gépei képesek lesznek úgy kapcsolódni az internethez, mintha közvetlenül lennének rákapcsolva az internetre.

Az ip_dynaddr akkor hasznos, ha dial-on-demand rendszerről van szó, vagy az ISP-d kívülre ad dinamikus címet. Ez a probléma általában az internet teljes beállítása után szokott előfordulni, miután megkezték a hálózaton a munkát. Valójában ezzel a routrered mögött lévő tapasztalt felhasználók számára tudod elsimítani az utat.

6.  Kedves Dolgok (esős napokra)

Bevezető

Hiszed vagy nem, kész vagy mindennel :). Innentől kezdve olyan témaköröket fogok tárgyalni, amelyek esetleg érdekelhetnek téged. Minden dolog ebben a fejeztben teljesen opcionális.

Port Továbbítás (Port Forwarding)

Előfordulhat, hogy szeretnél szolgáltatásokat futtatni egy olyan gépen amelyik a router mögött van, vagy csak szeretnéd az életed könyebbé tenni, amikor távolról (például a WAN felől) kapcsolódsz a géphez. Talán szeretnél FTP, HTTP, SSH, vagy VNC szervert futtatni az egyik, vagy több gépen is a router mögött. Az egyetlen akadálya mindennek, hogy csak egyetlen szolgáltatás/gép kombináció használható portonként. Például, nem létezik olyan praktikus módszer, amivel három FTP szervert állíthatnál be a routered mögött, és mindegyikhez a 21-es porton keresztül csatlakoznál; csak egy lehet a 21-es porton, míg a többinek máson kell lennie, mondjuk a 123-as és az 567-es porton.

Az összes port továbbítási szabály megfelel a következő sablonnak iptables -t nat -A PREROUTING [-p protocol] --dport [external port on router] -i ${WAN} -j DNAT --to [ip/port to forward to]. Sajnos az iptables, nem fogadja el a hosztnév alapján történő azonosítást port továbbításkor. Amikor egy külső portot továbbítasz egy belső gépen lévő, ugyanazon portra, akkor elhagyhatod a cél port részt (destination port). Bővebb információkért lásd az iptables(8) man oldalát.

Kódlista 6.1: Az iptables parancs futtatása

Másold ki és illeszd be ezeket a példákat ...
# export LAN=eth0
# export WAN=eth1

2-es port továbbítása egy belső gép ssh szolgáltatásának 22-es 
portjára
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22

FTP továbbítása egy belső gépre
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56

HTTP továbbítása egy belső gépre
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56

VNC továbbítása belső gépekre
# 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
Ha VNC-zni szeretnél a 192.168.0.3 gépre, akkor csak add a router 
hosznevéhez a ':1' szótagot

SAMBA forwarding to an internal host (excess ports to cover 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

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

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

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

Playstation 2 Online támogatás
# 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

Megjegyzés: Ha van más közérdekű / király példád, akkor küldd el emailben nekem (angolul).

Identd (IRC részére)

A Internet Relay Chat, röviden IRC, az ident szolgáltatást meglehetősen gyakran használja. Most mivel az IRC kliensek router mögött vannak, muszály lesz valahogy biztosítani az ident-et mind a router, mind a kliensek számára. Erre a célra való a midentd szerver.

Kódlista 6.2: ident beállítása

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

Van még néhány, másfajta ident szerver is a portage-ban. Az igényeidtől függően ajánlom, hogy nézz utánna következőknek: oidentd és az fakeidentd.

Idő szerver

Egy egészséges rendszer számára létfontosságú, hogy az időt pontosan mutassa. Az egyik általános módszer ezen cél elérése érdekében az NTP (Network Time Protocol) használata és az ntp csomag (amely mind szerver, mind kliens részt biztosít számunkra).

Rengeteg ember futtat ntp klienst a számítógépükön. Nyílvánvaló, hogy minél több kliens működik a világon, az ntp szerverek terheltsége annál nagyobb lesz. Olyan környezetekben, mint egy otthoni hálózat, segíthetünk a terhelség alacsonyan tartásán, miközben továbbra is pontos időt nyújtunk az összes kliensnek. Nem mellékes, hogy a klienseink számára nyújtott frissítések sokkal gyorabbak is lesznek! Amit tennük kell nemmás, mint egy saját ntp szerver beállítása a routerünkön, amely szinkronizálja magát egy publikus szerverrel, és ezt az értéket maga szolgáltatja a klienseknek. Kezdésnek emergeld az ntp csomagot a routeren: emerge ntp.

Kódlista 6.3: NTP szerver beállítása

# nano /etc/conf.d/ntp-client
Testreszabhatod, ha úgy kívánod, de az alapértelmezett is megteszi

# rc-update add ntp-client default

# nano /etc/ntp.conf
A következő sorokat add hozzá:
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
Ezzel azt érhetjük el, hogy csak a 192.168.0.xxx IP tartományban 
lévő kliensek használhatják az ntp szerverünket
# nano /etc/conf.d/ntpd
Testreszabhatod, ha úgy kívánod, de az alapértelmezett is megteszi

# rc-update add ntpd default

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

Megjegyzés: Győződj meg arról, hogy engedélyezve van a ki- és bemenő kommunikáció az ntp portján (123/udp) miközben beállítjuk a szervert. A kliensek számára csak kimenő kommunikáció szükséges a 123-as udp porton.

Most, a klienseiden is telepítsd az ntp csomagot: emerge ntp. Mivel itt csak az ntp klienseket fogjuk használni, így a beállítása is egyszerűbb.

Kódlista 6.4: NTP kliens beállítása

# nano /etc/conf.d/ntp-client
Változtasd meg 'pool.ntp.org' szervert 
a NTPCLIENT_OPTS változóban '192.168.0.1'-re
# rc-update add ntp-client default
# /etc/init.d/ntp-client start

Rsync Szerver

Azoknak akiknek több Gentoo-s gépe is van az otthoni hálózatában, hasznos lehet ha nem kell mindegyik gépen külön kiadni az emerge sync-et. Egy saját rsync szerver felállításával, spórolhatunk a saját, illetve a Gentoo rsync szervereinek a sávszélességén. Meglehetősen könnyű mindezt megcsinálni.

Megjegyzés: Egy sokkal részletesebb útmutatóért látogasd meg a hivatalos rsync útmutatót.

Mivel minden Gentoo-s gépen szükséges az rsync, ezért emergelni se kell, mert alapból telepítve van. Szerkesszük át az alapértelmezett /etc/rsyncd.conf konfig fájlt, szedd ki a komment jelet a [gentoo-portage] szekció elől, és győződj meg arról, hogy hozzáadd az address opciót. Az összes többi alapértelmezett érték jó lesz nekünk.

Kódlista 6.5: Rsync szerver beállítása

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

Ezekután el kell indítani a szolgáltatást (emlékeztető: az alapértelmezett értékek jók).

Kódlista 6.6: Rsync szerver elindítása

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

Egy dolog maradt hátra, megmondani a klienseknek, hogy mostantól a routerrel szinkronozálják magukat.

Kódlista 6.7: Kliensek SYNC beállítása a make.conf fájlban

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

Mail Szerver

Néha igazán hasznos lehet, ha a saját SMTP (Simple Mail Transfer Protocol) szervert futtatsz a routereden. Meglehet a saját indokod, hogy miért akarod, én azért használom, mert így a leveleket a felhasználók már a küldéskor láthajták, valamint így a válasz/útválasztás feladata a levelező szerverre hárul. Néhány internetszolgáltató nem engedélyezi a levéltovábbítást, azoknak a fiókoknak, amelyek nem tartoznak a saját hálózatukba (pl. Verizon). Továbbá, könyen felgyorsíthatod a levél kézbesítési folyamatot, mivel a nagyméretű csatolmányok nem fogják meg a kapcsolatodat fél órára.

Kódlista 6.8: SMTP beállítása

# emerge netqmail
győződj meg róla, hogy a `hostname` kimenete helyes legyen
# 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

Az engedélyező részhez add hozzá a következő sort:
192.168.0.:allow,RELAYCLIENT=""

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

Lelkes rajongója vagyok a qmail-nek, de nyugodtan használhatsz más levélküldőt is :). Amikor a gépeken állítod be az e-mail küldést, SMTP szervernek a routert add meg (192.168.0.1) így minden flottul fog menni. Bővebb dokumentációt a qmail-ről a netqmail honlapján találhatsz.

Teljes DHCP Szerver

Korábban már használtuk a dnsmasq-ot, hogy a klienseink számára DHCP-t szolgáltasson. A legtöbb embernek, kisméretű lanokhoz ez bőven elegendő is. De lehet, hogy olyanra lenne szükséged, amely több funkcióval rendelkezik. Ezért áttérünk egy fullos DHCP szerverre amelyet, a ISC scrácok csináltak.

Kódlista 6.9: A dhcpd beállítása

# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
(Itt a minta konfigurációs fájl:)
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
(Állítsd be: IFACE="eth0")
# rc-update add dhcpd default
# /etc/init.d/dhcpd start

Ez eddig minimális beállítás, amellyel lecserélhetjük a dnsmasq funkcióit, amelyeket korábban használtuk. Persze biztosan eszedbe jutott, hogy le kell tiltatni a dnsmasq DHCP szolgáltatását, nemde? Ha nem akkor itt az idő (csak kommentezd a dhcp-range beállítást a /etc/dnsmasq.conf fájlban és indítsd újra a szolgáltatást).

Kapcsolódás egy másik LAN-hoz (vagy kettőhöz vagy háromhoz vagy ...)

Előfordulhat, hogy a routeredet szeretnéd egy másik lanhoz is hozzákapcsolni. Lehet, hogy ideiglenesen szeretnéd a haverokat összekötni, vagy csak alapos vagy és szeretnéd a gépeket valami alapján csoportokba osztani, vagy csak igazán unatkozol. Bármilyen indokod is van, a routered kiterjesztése egy másik lanhoz elég egyszerű dolog. A következő példában feltételezem, hogy ez a hálózat a harmadi ethernet kártyán keresztül csatlakozik a routerhez, amelyre eth2 névvel hivatkozhatunk.

Elöször is be kell állítani az interfészt. A szükséges lépéseket lásd a 4.1 code listing fejezetben és cseréld le az eth0-t eth2-re és a 192.168.0 tartományt a 192.168.1 tartományra.

Ezekután a dnsmasq szolgáltatását kell kiterjeszteni erre az interfészre. Ehhez szerkesszük át a /etc/conf.d/dnsmasq fájlt újra és adjuk hozzá az -i eth2 részt a 'DNSMASQ_OPTS'-hoz; az -i többszöri használata megengedett. Azután szerkesszük a /etc/dnsmasq.conf fájlt és adjunk hozzá mégegy dhcp-range sort, ahogy a 5.1 code listing fejezetben tettük, illetve cseréljük le a 192.168.0-t a következőre 192.168.1. Több dhcp-range sor használata szintén megengedett.

Végezetül nézzük át a 5.2 code listing fejezetben lévő szabályokat, és duplázzuk meg azokat a szabályokat, amelyekben szerepel a -i ${LAN} kifejezés. természetesen, létrehozhatsz mégegy változót, mondjuk LAN2 névvel, hogy átláthatóbb legyen az egész.

7.  Hibakeresés

Hasznos eszközök

Ha problémákba ütközöl a gépeiddel történő kommunikációban, próbáld ki a következő eszközöket (az összes a net-analyzer portage kategóriában található meg):

Segédprogram Leírás
wireshark GUI eszköz, amellyel a nyers hálózati adatokat nézhetjük át a szűrőknek megfelelően
tcpdump konzolos eszköz, amellyel a nyers hálózati adatokat nézhetjük át a szűrőknek megfelelően
iptraf ncurses alapú IP LAN monitor
ettercap ncurses alapú hálózat monitor/kontrol

A DHCP nem indul el

Amikor először futtatjuk a dhcp init.d szkriptjét, előfordulhat, hogy nem indul el és nem ad semmi használató információt sem a hibáról.

Kódlista 7.1: Példa DHCP indulási hibára

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

A trükk abban van, hogy tudni kell, hova küldi a dhcpd a kimenetét. Egyszerűen nézd át a /var/log könyvtárat és olvasd át a naplófájlokat. Mivel a pontos naplófájl függ attól, hogy milyen syslog csomagot használsz, ezért próbáld a grep -Rl dhcpd /var/log paranccsal szűrni a lehetséges bejegyzéseket. A legnagyobb az esély arra, hogy elgépeltél valamit a konfig fájlokban. Továbbá kipróbálhatod a dhcpd-t előtérben futtatni és bekapcsolt debug kimenettel, így ni: dhcpd -d -f.

Érvénytelen MTU Érték

Ha furcsa hibákba ütközöl (mint például néhány oldal nem töltődik be, míg mások igen), előfordulhat, hogy MTU útvonal felderítési problémába ütköztél. A leggyorsabb módszer, ha a következő iptables paranccsal leteszteljük:

Kódlista 7.2: Vizsgáljuk meg az MTU hiba lehetőségét

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

Ez az összes új kapcsolatra érvényes lesz, így egyszerűen csak frissítsd a problémás weboldalt, hogy teszteld ez okozza-e a problémát? Abban az esetben ha ez segít, a szabvány MTU érték a 100mbit-es ethernet kapcsolatokhoz 1500> szintén ennyi PPPoA kapcsolathoz, míg PPPoE kapcsolatokhoz 1492. Bővebb információkért olvasd el a Linux Advanced Routing & Traffic Control HOGYAN 15. fejezetét.

8.  Megjegyzések

Nincs más hozzáfűznivalóm, mint ha bármely problémád adódik az útmutatóval, akkor vedd fel velem a kapcsolatot, vagy küldd el a hibát a Gentoo Hibakeresés Weboldala oldalra. Ha olyan ötleteid lennének, amelyekkel javítani lehetne ezt az útmutatót, küldd el nekem bármi is legyen és beleteszem az útmutatóba.

Megjegyzés a magyar fordításhoz: Igyekeztem megtartani a legtöbb szakmai kifejezést, bár van ahol keverve használtam az angol/magyar kifejezést a jobb érthetőség érdekében (pl. forwarding/továbbítás). Amennyiben valamilyen fordítási hibát találsz, vagy elgépelést, úgy kérlek jelezd felém.



Nyomtatás

Frissítve 2007. április 6.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2011. október 30.

Összefoglaló: Ez a dokumentum arról szól, hogyan változtasd a kivénhedt, otthoni Gentoo-s gépedet routerré, hogy az otthoni hálózatod az internetre köthesd vele.

Mike Frysinger
Szerző

Németh Balázs
Fordító

Lónyai Gergely
Lektor

Donate to support our development efforts.

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