Otthoni router útmutató
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)
[*] 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 |
# nano /etc/ppp/pap-secrets
"vla9h924" * "password"
# nano /etc/conf.d/net
config_ppp0=( "ppp" )
link_ppp0="eth1"
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
"defaultroute"
"usepeerdns"
)
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 |
# emerge dhcpcd
# nano /etc/conf.d/net
config_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
|
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
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
dhcp-range=192.168.0.100,192.168.0.250,72h
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 |
# 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
|
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 |
# 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
|
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
# 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
# nano /etc/conf.d/ntpd
# 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
# 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
# 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
|
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
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
|
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.
Ez a dokumentum a Creative Commons -
Attribution / Share Alike licensz védelme alatt áll.
|