Gentoo Logo

Ghid pentru Router Personal

Conţinut:

1.  Introducere

Construirea propriului router din piese folosite are multe avantaje comparabil cu cumpărarea unui router nou, să zicem Linksys. Cel mai mare avantaj îl reprezintă controlul conexiunii. Restul avantajelor le las la imaginaţia voastră, aproape totul poate fi făcut în acest scenariu, depinde ce doriţi.

Acest ghid vă arată cum să setaţi NAT (Network Address Translation - Translatarea Adreselor de Reţea) pe router (kernel şi iptables), să adăugaţi şi să configuraţi servicii tipice (Domain Name System (DNS - Sistemul de Nume de Domeniu) prin intermediul dnsmasq, dhcp via dhcpd, ADSL via rp-pppoe), şi finalizând cu limitare de trafic (port forwarding, servere pentru proxy/pentru caching, etc...).

Înainte de a începe, sunt câteva lucruri pe care ar trebui să le ştiţi. Pentru început, aveţi nevoie de un calculator cu minim 2 plăci de reţea montate. Apoi, aveţi nevoie de configurările pentru conexiunea la internet (cum ar fi IP/DNS/Gateway/utilizator/parolă). Şi mai aveţi nevoie de ceva timp liber şi pasiune pentru Gentoo.

Convenţiile folosite în acest ghid sunt:

  • eth0 - Placa de reţea conectată la reţeaua locală (LAN)
  • eth1 - Placa de reţea conectată la reţeaua externă (WAN)
  • LAN utilizează adresele private 192.168.0.xxx
  • router-ul are adresa IP standard 192.168.0.1
  • router-ul utilizează kernelul 2.4 sau 2.6; sunteţi pe cont propriu cu 2.0/2.2

Important: Din motive de securitate, vă recomand să opriţi toate serviciile de care nu aveţi nevoie pe router până când firewall-ul este configurat şi pornit. Ca să vedeţi serviciile pornite rulaţi rc-status.

2.  Configurare kernel

Cele două plăci de reţea trebuie să fie activate din kernel. Ca să vedeţi dacă plăcile sunt activate, rulaţi ifconfig. Este posibil ca la dumneavoastră textul afişat să difere, nu este nici o problemă. Contează ca interfeţele de reţea să fie afişate.

Cod 2.1: Verificarea plăcilor

# 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 

Dacă nu vedeţi 2 plăci şi nu sunteţi sigur ce plăci deţineţi, rulaţi comanda lspci | grep Ethernet, care o puteţi obţine cu emerge pciutils. După ce aveţi aceste informaţii, adăugaţi în kernel driver-ele corespunzătoare.

Următorul lucru ce avem nevoie este suportul pentru iptables şi NAT (şi limitare de pachete dacă doriţi). Următoarea listă este împărţită în necesare (*), necesare doar pentru adsl prin PPoE (a), sugerate (x), îmbunătăţiri pentru limitare (s). Nu contează dacă le compilaţi în kernel sau ca modul pentru că atunci când este folosit sunt încărcate modulele corespunzătoare (cum procedaţi depinde de dumneavoastră).

Cod 2.2: Opţiuni la reţea

Networking options  --->
   [*] TCP/IP networking
      [*] IP: advanced router
   [*] Network packet filtering (replaces ipchains)
Dacă folosiţi 2.4.x, trebuie să activaţi următoarele pentr 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

Notă: În versiunea de kernel 2.6 este puţin diferit, dar vă veţi da seamă singuri cum să procedaţi.

3.  Bine aţi venit în WAN (a.k.a. Internetul)

Introducere

Sunt multe moduri de conectare la internet aşa că voi acoperi pe cele care le cunosc mai bine. Aşa că rămânem cu ADSL (PPPoE) şi dispozitive modem de cablu statice/dinamice. Dacă sunt şi alte metode, nu ezitaţi să mă contactaţi. Puteţi sări oricare din următoarele secţiuni în acest capitol, dacă este necesar. Acest capitol este numai despre conectarea router-ului la internet prin eth1.

ADSL şi PPPoE

Majoritatea aplicaţiilor pentru PPPoE este integrată într-un singur pachet numit Roaring Penguin. Daţi comanda emerge rp-pppoe ca să continuaţi. Vă aduceţi aminte când v-am zis că aveţi nevoie de informaţii despre user/parolă? Ei bine, nu v-am minţit şi sper că aveţi datele!Deschideţi editorul preferat şi editaţi /etc/ppp/pppoe.conf cu datele respective.

Notă: Ca să funcţioneze setările net, aveţi nevoie să fie instalat baselayout-1.11.14 sau mai nou.

Cod 3.1: Configurarea eth1

(Înlocuiţi 'vla9h924' respectiv 'password' cu utilizatorul şi parola dumneavoastră)

# nano /etc/ppp/pap-secrets
# client    server  secret
"vla9h924" * "password"
# nano /etc/conf.d/net
Specificaţi-i baselayout să utilizeze adsl pentru interfaţa eth1:
config_eth1=( "adsl" )
user_eth1=( "vla9h924" )
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

Atenţie: Când este pornită interfaţa DSL va crea ppp0. Cu toate că placa de reţea este numită eth1, IP-ul este, de fapt, asociat cu ppp0. De acum înainte, în exemplele care folosesc 'eth1' înlocuiţi-l cu 'ppp0'.

Adresele IP statice/dinamice

Dacă aveţi o adresă IP statică atunci veţi avea nevoie de câteva detalii în plus comparabil cu cazul în care aveaţi o adresă IP dinamică. Aceste detalii sunt IP, gateway, şi server-ele DNS.

Cod 3.2: Configurarea eth1

Utilizatorii cu adrese IP dinamice:
# emerge dhcpcd
# nano /etc/conf.d/net
Veţi avea nevoie de o setare asemănătoare:
config_eth1=( "dhcp" )

Utilizatorii cu adrese IP statice:
# nano /etc/conf.d/net
Va trebui să configuraţi asemănător:
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
Adăugaţi câte o intrare pentru fiecare server DNS:
nameserver 123.123.123.123

Atât pentru adrese IP Dinamice cât şi pentru cele Statice:
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

Ar trebui ca totul să meargă acum.

4.  Reţeaua LAN

Acest pas este mai uşor ca cel precedent.

Cod 4.1: Configurarea eth0

# nano /etc/conf.d/net
Configuraţi asemănător:
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.  Servicii de reţea

Server DHCP

Ar fi interesant ca restul persoanelor din casă să îşi poată conecta sistemul la reţea şi să funcţioneze instantaneu. Nu trebuie să vă aduceţi aminte de setări sau să le arătaţi ecrane de configurare! Viaţa ar fi mai uşoară, nu? Este posibil cu Protocolul de Configurare Dinamică a Gazdei (DHCP, Dynamic Host Configuration Protocol în engleză).

DHCP este exact ce sugerează numele. Este un protocol care vă permite să configuraţi dinamic alte gazde automat. Rulaţi un server DHCP pe router daţi-i toate informaţiile despre reţea (IP-uri valide, servere DNS, adrese de gateway, etc...), şi atunci când celelalte gazde vor porni, ei vor rula un client DHCP pentru care se configurează automat. Simplu, nu ? Pentru mai multe informaţii despre DHCP puteţi vizita Wikipedia

Vom utiliza un pachet denumit dnsmasq, ce oferă atât serviciul DHCP cât şi serviciul DNS. Pentru moment, sa ne concentrăm asupra aspectului despre DHCP. Aveţi în vedere faptul că, dacă rulaţi un server de DHCP diferit, puteţi găsi un alt exemplu, în capitolul despre lucruri amuzante. De asemenea, dacă doriţi să jonglaţi cu setările DHCP, trebuie să consultaţi comentariile din /etc/dnsmasq.conf. Toate setările implicite ar trebui să funcţioneze corect, totuşi.

Cod 5.1: Setarea unui server DHCP

# emerge dnsmasq
# nano /etc/dnsmasq.conf
Ar trebui să adăugaţi pentru a activa dhcp:
dhcp-range=192.168.0.100,192.168.0.250,72h
Restricţionaţi dnsmasq doar pentru interfaţa LAN
interface=eth0

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

Acum, router-ul nostru este un server DHCP! Conectaţi acele sisteme şi urmăriţi-le cum lucrează! Pe sistemele Windows ar trebui să setaţi de la proprietăţi TCP/IP şi selectaţi 'Obtain an IP address automatically' şi opţiunea 'Obtain DNS server address automatically'. Câteodată schimbările nu sunt instantanee, aşa că ar trebui să deschideţi linia de comandă şi să rulaţi ipconfig /release şi ipconfig /renew. Am vorbit destul despre Windows, să ne întoarcem la pinguin.

Server DNS

Când oamenii doresc să viziteze o locaţie pe internet, ei îşi aduc aminte de nume, nu de un şir de numere ciudate. Ce este mai uşor de ţinut minte, ebay.com sau 66.135.192.87? În această situaţie intervine DNS. Server-ele DNS rulează peste tot pe Internet, şi de fiecare dată când cineva doreşte să viziteze 'ebay.com', aceste servere transformă 'ebay.com' (ce înţelegem noi) în '66.135.192.87' (ce înţeleg calculatoarele). Pentru mai multe informaţii despre DNS, puteţi vizita Wikipedia.

Deoarece utilizăm dnsmasq ca server DHCP, şi acesta include un server DNS, nu mai aveţi nimic de făcut aici! Micul dvs. ruter oferă deja sevicii DNS clienţilor de DHCP. V-aţi fi dorit să fie totul aşa de uşor ;).

Sunteţi bineveniţi să alegeţi alte aplicaţii server DNS dacă sunteţi mai confortabil aşa, dar motivul pentru care dnsmasq este bun, este faptul că a fost proiectat să facă exact ce dorim, şi nu mai mult. Este un mic server de cache/forwarding pentru reţele locale. Nu căutăm să oferim DNS pentru propriul nostru domeniu, aici, ci doar să oferim servicii DNS pentru oricine altcineva din reţeaua noastră locală.

NAT (a.k.a. IP-masquerading)

În acest punct, cei de pe reţea pot vorbi între ei, dar nu se pot încă conecta la internet. Vă puteţi gândi că acest lucru nu e chiar rău (rată de transfer mai mare pentru dumneavoastră), pun pariu că ceilalţi nu vor fi aşa fericiţi ca dumneavoastră.

Aici intervine Translatarea Adreselor de Reţea (eng.: Network Address Translation - NAT). NAT este o modalitate de a conecta mai multe calculatoare dintr-o reţea locală la Internet şi când aveţi o listă mică de adrese IP. De obicei aveţi o singură adresă IP de la ISP, cu care puteţi conecta întreaga casă la Internet. NAT este magia care face acest lucru posibil. Pentru mai multe informaţii despre NAT consultaţi pagina Wikipedia.

Notă: Înainte să porniţi, asiguraţi-vă că este instalat iptables. Cu toate că este instalat automat în majoritatea sistemelor, este posibil să nu fie. Dacă nu este instalat atunci rulaţi emerge iptables.

Cod 5.2: Configurarea iptables

Prima dată curăţăm de regulile vechi
# iptables -F
# iptables -t nat -F

Setaţi politicile implicite pentru a manipula traficul care nu se potriveşte nici unei reguli
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP

Copiaţi aceste exemple ...
# export LAN=eth0
# export WAN=eth1

Apoi securizăm serviciile să funcţioneze numai pe reţeaua locală
# 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

(Opţional) Asigură acces la serverul ssh din WAN
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

Nu acceptăm pachete TCP/UDP la porturile privilegiate
# 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

În final adăugăm regulile pentru NAT
# iptables -I FORWARD -i ${ALN} -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
Comunicăm kernel-ului că operaţia de forward are loc
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

Asta ca să nu rulaţi de fiecare dată comanda la bootare
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
Adăugaţi/Decomentaţi următoarele linii:
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

După ce aţi rulat comenzile, restul reţelei ar trebui să poate folosi internetul ca şi cum ar fi conectaţi direct.

6.  Opţiuni Amuzante (pentru o zi ploioasă)

Introducere

Credeţi sau nu dar este gata. De aici încolo voi acoperi nişte subiecte care v-ar interesa. Totul din acesta capitol este opţional.

Transferul de Porturi

Câteodată doriţi sa puteţi avea servicii pe un calculator care se află în spatele unui router, sau să vă faceţi viaţa mai uşoară conectându-vă de la distanţă. Poate mai doriţi să rulaţi FTP, HTTP, SSH sau un server VNC la unul sau mai multe calculatoare din spatele router-ului. Singura problemă este că trebuie să aveţi câte un serviciu/maşină per port. De exemplu, nu este o metodă practică de a seta 3 servere ftp în spatele routerului şi după aia să vă puteţi la ele prin portul 21; numai unul poate fi pe portul 21 în timp ce restul va trebui să fie setate pe porturile 123 şi 567.

Toate regulile pentru transferul de porturi sunt de forma iptables -t nat -A PREROUTING [-p protocol] --dport [port extern pe router] -i ${WAN} -j DNAT --to [ip/port care trebuie transferat]. Din păcate, iptables nu acceptă nume de maşini gazdă când transferă porturile. Dacă transferaţi un port extern către acelaşi port folosit pe maşina curentă, puteţi omite portul destinaţie. Consultaţi pagina de manual iptables(8) pentru mai multe informaţii.

Cod 6.1: Rularea comenzilor iptables

Copiaţi aceste exemple ...
# export LAN=eth0
# export WAN=eth1

Transferă portul 2 către ssh pe un sistem gazdă intern
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22

Transferă portul FTP la un sistem gazdă intern
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56

Transferă portul HTTP la un sistem gazdă intern
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56

Transferă portul VNC pentru sisteme gazdă interne
# 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
Dacă doriţi ca să vă conectaţi prin VNC la 192.168.0.3, adăugaţi ':1' numelui router-ului

Transferă porturile Bittorrent
# 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

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

Suport pentru Playstation 2 Online
# 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

Notă: Dacă aveţi alte exemple interesante, vă rog să îmi scrieţi un mesaj.

Identd (pentru IRC)

Internet Relay Chat foloseşte serviciile ident foarte mult. Acum, deoarece clienţii irc sunt în spatele unui router, aveţi nevoie să găzduiţi ident pentru clienţi şi router. Un asemenea server este midentd.

Cod 6.2: Configurarea ident

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

Mai sunt câteva servere ident în portage. Depinde de nevoile dumneavoastră, vă recomand să mai încercaţi oidentd şi fakeidentd.

Server de Timp

Setând ora sistemului bine este esenţial în menţinerea corectă a unui sistem. Una dintre cele mai comune metode este să folosiţi Network Time Protocol (NTP) şi pachetul ntp (care implementează atât clientul cât şi serverul).

Multă lume rulează clienţi ntp pe calculatoare. Evident, cu cât folosesc mai mulţi serviciul, cu atât serverele ntp din lume sunt mai încărcate. În medii ca reţelele de acasă, puteţi ajuta încărcarea pe serverele publice configurând un server ntp pe router. Ca o facilitate în plus, actualizările private vor fi mai rapide şi pe client! Tot ce trebuie să faceţi este să configuraţi un server ntp pe router care să se sincronizeze cu serverele publice în timp ce serveşte clienţii de pe reţeaua locală. Pentru început, daţi comanda emerge ntp pe router.

Cod 6.3: Configurarea unui server NTP

# nano /etc/conf.d/ntp-client
Personalizaţi dacă doriţi, configurările implicite sunt suficiente
# rc-update add ntp-client default

# nano /etc/ntp.conf
Adăugaţi următoarele linii:
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
Acesta va permite ca numai cei cu adresele IP 192.168.0.xxx să poate 
folosi serverul ntp.
# nano /etc/conf.d/ntpd
Personalizaţi dacă doriţi, configurările implicite sunt suficiente
# rc-update add ntpd default

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

Notă: Ar trebui să vă asiguraţi că permiteţi comunicaţia spre şi dinspre router pentru portul ntp (123/udp) când setaţi server-ul. Clienţii vor avea nevoie doar de acces spre router pe portul 123 pe udp.

Acum, la clienţi, rulaţi tot emerge ntp. Veţi avea de setat numai clientul ntp.

Cod 6.4: Setarea unui client NTP

# nano /etc/conf.d/ntp-client
Schimbaţi server-ul 'pool.ntp.org' din variabila NTPCLIENT_OPTS în '192.168.0.1'
# rc-update add ntp-client default
# /etc/init.d/ntp-client start

Server de Rsync

Pentru cei ce rulează mai multe maşini Gentoo în aceeaşi reţea locală, este de dorit să nu efectuaţi pe fiecare maşină emerge sync cu server-e la distanţă. Prin setarea unui server de rsync local, salvaţi atât banda dvs., cât şi banda server-elor de rsync Gentoo. Este destul de simplă operaţiunea.

Notă: Pentru un ghid de rsync explicat mai în amănunt, vă rugăm să consultaţi ghidul rsync oficial.

Deoarece fiecare maşină Gentoo necesită rsync, nu mai este necesară instalarea acestuia. Editaţi fişierul implicit /etc/rsyncd.conf, decomentaţi secţiunea [gentoo-portage] şi asiguraţi-vă că adăugaţi o opţiune address. Toate celelalte opţiuni implicite, ar trebui să fie corecte.

Cod 6.5: Configurarea server-ului de 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

Apoi, trebuie să porniţi serviciul (din nou, opţiunile implicite sunt OK).

Cod 6.6: Pornirea server-ului de rsync

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

Singurul lucru rămas este să setaţi clienţii dvs. să efectueze sync de pe router.

Cod 6.7: Setări de client în make.conf

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

Server de mail

Câteodată ar fi interesant să rulaţi o aplicaţie server Simple Mail Transfer Protocol (SMTP) pe router. Clienţii vor trimite mesaje instantaneu, în timp ce munca reîncercărilor şi rutării este lăsată serverului de mail. Unele companii ISP nu permit rutarea mailului dacă utilizatorii nu fac parte din reţeaua lor (cum ar fi Verizon). De asemenea, puteţi manipula mai uşor mailurile cu ataşamente mari, reducând încărcarea traficului.

Cod 6.8: Setarea unui server SMTP

# emerge qmail
aveţi grijă `hostname` este setat corect
# ebuild /var/db/pkg/*-*/qmail-1.03-r*/*.ebuild config
# 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
# nano tcp.smtp
Adăugaţi o intrare asemănătoare în secţiunea allow:
192.168.0.:allow,RELAYCLIENT=""

# tcprules tcp.smtp.cdb rules.tmp < tcp.smtp
# rc-update add svscan default
# /etc/init.d/svscan start

Eu sunt un fan al qmail, dar puteţi folosi altă aplicaţie MTA. Când efectuaţi setările de mesagerie la gazde trebuie să le specificaţi că serverul SMTP este 192.168.0.1 şi totul ar trebui să funcţioneze. Puteţi consulta pagina oficială qmail pentru mai multe informaţii.

Server DHCP Complet

Mai devreme, am utilizat dnsmasq pentru a oferi servicii DHCP pentru toţi clienţii noştri. Pentru majoritatea utilizatorilor cu o reţea locală mică, acesta este binevenit. Dar, aţi putea avea nevoie de ceva cu mai multe funcţionalităţi. Astfel, ne transformăm într-un server DHCP cu toate funcţionalităţile, aşa cum este oferit de cei de la ISC.

Cod 6.9: Setarea dhcpd

# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
(Iată un fişier de configurare exemplu:)
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
(Setaţi IFACE="eth0")
# rc-update add dhcpd default
# /etc/init.d/dhcpd start

Aceasta este setarea minimală, necesară pentru a înlocui funcţionalitatea DHCP a dnsmasq utilizat anterior. Apropos, v-aţi amintit să dezactivaţi funcţionalităţile de DHCP din dnsmasq, nu-i aşa? Dacă nu, ar trebui să faceţi acest lucru (trebuie doar să comentaţi setarea dhcp-range din /etc/dnsmasq.conf şi să restartaţi serviciul).

Conectaţi O Altă Reţea LAN (sau două sau trei sau ...)

Uneori aveţi nevoie să conectaţi router-ul la altă reţea LAN. Poate că vreţi să vă legaţi cu un grup de prieteni temporar, sau sunteţi un ciudat şi doriţi să împărţiţi diferite grupuri de sisteme sau chiar vă plictisiţi. Oricare ar fi motivele, extinderea router-ului pentru alte reţele LAN ar trebui să fie simplă. În următoarele exemple vom presupune că această reţea nouă este conectată printr-o a treia placă de reţea, şi anume eth2.

Mai întâi trebuie să configuraţi reţeaua. Trebuie doar să urmaţi instrucţiunile din codul 4.1 şi să înlocuiţi eth0 cu eth2 şi 192.168.0 cu 192.168.1.

Apoi, trebuie să configuraţi dnsmasq să servească şi noua interfaţă. Trebuie doar să editaţi fişierul /etc/conf.d/dnsmasq din nou şi să adăugaţi -i eth2 directivei DNSMASQ_OPTS; utilizarea de mai multe ori a parametrului -i este corectă. Apoi, editaţi /etc/dnsmasq.conf şi adăugaţi o altă linie similară cu cea de dhcp-range din codul 5.1, înlocuind 192.168.0 cu 192.168.1. Prezenţa mai multor linii dhcp-range este corectă, de asemenea.

La sfârşit, consultaţi regulile din codul 5.2 şi duplicaţi regulile ce conţin -i ${LAN}. Aţi putea să creaţi o altă variabilă, să spunem LAN2, pentru a vă uşura munca.

7.  Probleme

Instrumente Utile

Dacă aveţi probleme în a vă face sistemele să comunice, puteţi încerca următoarele utilitare (toate dintre ele pot fi regăsite în categoria portage net-analyzer):

Utilitar Descriere
ethereal utilitar în mod grafic pentru a vizualiza toate datele din reţea în stare brută, în concordanţă cu unele filtre
tcpdump utilitar de consolă pentru a afişa toate datele de reţea în stare brută, în concordanţă cu unele filtre
iptraf aplicaţie de monitorizare a adreselor IP din reţeaua LAN bazată pe ncurses
ettercap aplicaţie de monitorizare/controlare a reţelei bazată pe ncurses

DHCP Nu Porneşte

Când porniţi script-ul init.d pentru dhcp pentru prima dată, este posibil să nu se încarce şi nu vă oferă nici o informaţie utilă.

Cod 7.1: Exemplu de Eroare pentru DHCP

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

Trucul constă în a cunoaşte unde îşi transmite dhcp textul afişat. Deoarece fişierul exact de log depinde de pachetul utilizat ca aplicaţie syslog, încercaţi să rulaţi grep -Rl dhcpd /var/log pentru a micşora posibilităţile. Şansele sunt ca dvs. să fi efectuat vreo greşeală în fişierul dvs. de configurare. Puteţi, de asemenea, să încercaţi să rulaţi dhcpd -d -f (prescurtarea de la modul depanare / fără rulare în fundal) şi să depanaţi eroarea pe baza textului afişat.

Valoare MTU Incorectă

Dacă întâlniţi erori ciudate (cum ar fi pentru unele pagini web, în timp ce altele se încarcă corect), este posibil să aveţi probleme cu Path MTU Discovery. Cea mai rapidă soluţie pentru a testa este rularea următoarei comenzi iptables:

Cod 7.2: Valori MTU incorecte

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

Aceasta va afecta toate conexiunile noi, deci trebuie doar să reîncărcaţi pagina de web pentru care aveţi probleme, pentru a testa. În cazul în care vă ajută, valoarea MTU standard pentru conexiunile ethernet de 100mbit este de 1500, in timp ce pentru conexiunile PPPoE aceasta este 1492. Pentru mai multe informaţii, ar trebui să consultaţi Capitolul 15 din Ghidul pentru Rutare Avansată şi Controlul Traficului în Linux.

8.  Note finale

Nu am note finale decât dacă aveţi probleme cu acest ghid nu ezitaţi să mă contactaţi pe adresa personală sau să raportaţi un bug la Site-ul pentru Urmărirea Bug-urilor al Gentoo. Dacă aveţi idei interesante despre cum aş putea îmbunătăţi acest ghid, contactaţi-mă pe adresa specificată anterior.



Imprimare

Actualizat la 9 Aprilie 2006

Versiunea originală a acestui document a fost actualizată ultima dată la 30 Octombrie 2011

Sumar: Acest document detaliază cum să transformaţi un calculator vechi într-un router care conectează reţeaua de acasă la internet.

Mike Frysinger
Autor

Spoială Cristian
Translator

Donate to support our development efforts.

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