Schimbați gateway-ul implicit freebsd. FreeBSD ca router sau cum să rutați pachetele FreeBSD de la o rețea la alta

Introducere == Aș dori să subliniez pe scurt un plan care ar trebui urmat, astfel încât cursul către Internet pentru birou să fie corect și nimeni să nu fie deturnat. Voi observa imediat că un gateway în Unix nu este un program, ci o duzină întreagă de programe, fiecare dintre ele efectuând propria acțiune și are propriile setări. Folosim: * FreeBSD 7 * natd * named, routed * ipfw * squid * squidGuard * apache * dhcpd Serverul meu de testare este deja în rețeaua locală, așa că cred că rețeaua mea externă este 192.168.0.0/24, iar cea internă - 172.16.0.0/16. Numerele, în cele din urmă, nu contează - este sensul care contează. Am instalat FreeBSD într-o configurație minimă și rc.conf-ul meu conține doar: hostname="vm=freepro.local" ifconfig_em0="DHCP" linux_enable="YES" sshd_enable="YES"== Configurarea NAT == Interfața mea externă - em0 - își primește în mod implicit adresa IP prin DHCP de la un router obișnuit cu adresa 192.168.1.1. Evident, același router acționează ca un server DNS. În prima etapă, fac NAT (întotdeauna pe interfața externă!) și modific fișierul /etc/rc.conf astfel: hostname="vm=freepro.local" defaultrouter="192.168.1.1" ifconfig_em0="inet 192.168.1.10 netmask 255.255.255.0" linux_enable="YES" sshd_enable="YES" # Internet gateway ifnetconfig.255.05.5.15.255.05 .0.0" gateway_enable="YES" natd_enable="YES" natd_interface="em0" #natd_flags="-f /etc/redirect.conf" firewall_enable="YES" firewall_type="open" #firewall_script="/etc/firewall . conf" router_enable="YES" router="/sbin/routed" router_flags="-q" Am reparat adresa externă și am stabilit-o pe cea internă. Acum să corectăm DNS-ul din fișierul /etc/resolv.conf: nameserver 192.168.1.1 Asta-i tot! Să începem serviciile: # /etc/rc.d/ipfw start # /etc/rc.d/natd start # /etc/rc.d/routed start # /etc/rc.d/named startȘi internetul funcționează! Desigur, scriem manual clientului: IP: 172.16.0.2 MASCA: 255.255.0.0 PORTA: 172.16.0.1 DNS1: 192.168.1.1 Desigur, aceasta este o poartă foarte proastă. În primul rând, nu este deloc protejat, în al doilea rând, nu este deloc în cache, în al treilea rând, redirecționează toate solicitările DNS „în amonte” și îi lipsește complet capacitatea de a obține orice statistică sau de a gestiona ceva. Dar aceasta este o poartă foarte ușoară și rapidă, iar cu ajustări ulterioare performanța sa va crește, nu va scădea. Apropo, rețineți că două rânduri sunt deja comentate în noul rc.conf. Primul comentariu mă va ajuta pe viitor să „redirecționez” unele porturi din exterior în interiorul rețelei. Acestea. de exemplu, dacă vreau să accesez computerul client 172.16.0.2 prin ssh, atunci va trebui să fac următorul fișier: # Fișier /etc/redirect.conf redirect_port tcp 172.16.0.2:22 2222 Aceasta înseamnă că atunci când mă conectez la server din exterior prin portul 2222, voi ajunge la mașină din rețeaua locală prin portul 22 (ssh). Al doilea comentariu este configurația mea personală de firewall, ascuțită și testată. == Configurarea ipfw == Configurația mea pentru ipfw în această etapă arată astfel: #!/bin/sh # Configurare IPFW pentru un server NAT simplu /etc/firewall.conf cmd="/sbin/ipfw -q" IfOut="em0" IpOut="192.168.1.10" NetOut="192.168.1.0/24 " IfIn="em1" IpIn="172.16.0.1" NetIn="172.16.0.0/16" ############################ ###################### # Clar ########################## ######################## $(cmd) -f la culoare $(cmd) tabel 0 la culoare $(cmd) tabel 1 la culoare #### # ########################################### # Lista albă / Lista neagră # ################################################ #$ (cmd) tabelul 0 adăugați 172.16.0.12 $(cmd) tabelul 1 adăugați 172.16.0.13 ############################# ##### ################## # Loopback ######################## ##### ##################### $(cmd) add allow ip from any to any via lo0 ########## ###### ################################ # Blocați lumea în privat ##### ###### ###################################### $(cmd) adăugați deny ip de la orice la 127.0 .0.0/8 $(cmd) adăugați deny ip de la 127.0.0.0/8 la orice #$(cmd) adăugați deny ip de la 172.16.0.0/16 la orice prin $(IfOut) #$( cmd) adăugați deny ip de la 192.168 .1.0/24 la orice prin $(IfOut) $(cmd) adăugați deny ip de la orice la 10.0.0.0/8 prin $(IfOut) #$(cmd) adăugați deny ip de la orice la 172.16 .0.0/12 prin $( IfOut) #$(cmd) adăugați deny ip de la orice la 192.168.0.0/16 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 0.0.0.0/8 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 169.254.0.0/16 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 192.0.2.0/24 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 224.0.0.0/4 prin $ (IfOut) $(cmd) adăugați deny ip de la oricare la 240.0.0.0/4 prin $(IfOut) #################### ####### ######################## # ICMP ################ ######### ######################## $(cmd) adăugați deny icmp de la orice la orice fragment $(cmd) adăugați deny log icmp de la orice la 255.255. 255.255 in prin $(IfOut) $(cmd) adăugați deny log icmp de la oricare la 255.255.255.255 out prin $(IfOut) ############## ######### ########################## # NAT ########### ########### ############################ $(cmd) add deviare 8668 ip de la $ (NetIn) la orice prin $(IfOut) $ (cmd) adăugați redirecționați 8668 ip de la orice la $(IpOut) prin $(IfOut) #$(cmd) adăugați redirecționați 8668 ip de la oricare la orice prin $(IfOut) ## ########### ##################################### # Bloc privat pentru lume ######## ######################################## #### $(cmd) adăugați deny ip de la 10.0.0.0/8 la orice prin $(IfOut) #$(cmd) adăugați deny ip de la 172.16.0.0/12 la orice prin $(IfOut) #$(cmd) adăugați deny ip de la 192.168.0.0/16 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 0.0.0.0/8 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 169.254.0.0/16 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 192. 0.2.0/24 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 224.0.0.0/4 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 240.0.0.0/4 la orice prin $( IfOut) ################################################################## # ## # Lista albă ############################################# # #### $(cmd) add allow all from "table(0)" to any $(cmd) add allow all from any to "table(0)" ############# # ################################## # Lista neagră ########## ### #################################### $(cmd) adaugă refuză toate din „ tabel (1 )" la orice ########################################## ### #### # Păstrați stabilit ######################################## ### ####### $(cmd) add allow tcp from any to me stabilit ############################ ### ################### # Principal ########################## ### ##################### $(cmd) add allow ip from any to any frag $(cmd) add allow icmp from any to $(IpOut) icmptypes 0, 8,11 # dns $(cmd) add allow tcp from any to $(IpOut) dst-port 53 setup $(cmd) add allow udp from any to $(IpOut) dst-port 53 $(cmd) add permiteți udp de la $(IpOut) 53 la orice $(cmd) adăugați permiteți udp de la $(IpOut) la orice port dst 53 stare de păstrare # dns-client $(cmd) adăugați permiteți tcp de la orice la $(NetIn) dst -port 53 setup $(cmd) adăugați permite udp de la orice la $(NetIn) dst-port 53 $(cmd) adăugați permiteți udp de la $(NetIn) 53 la orice $(cmd) adăugați permite udp de la $(NetIn) la orice dst-port 53 keep-state # time $(cmd) add allow udp de la $(IpOut) la orice dst-port 123 keep-state # time-client $(cmd) add allow udp de la $(NetIn) la orice dst -port 123 keep-state # ssh-in $(cmd) add allow tcp from any to $(IpOut) 22 $(cmd) add allow tcp from $(IpOut) 22 to any # ssh-out $(cmd) add allow tcp de la $ (IpOut) la orice 22 $(cmd) adăugați permite tcp de la orice 22 la $(IpOut) # http $(cmd) adăugați permiteți tcp de la $(IpOut) la orice port dst 80 # http-client $( cmd) adăugați permit tcp de la $(NetIn) la orice port dst 80 $(cmd) adăugați permiteți tcp de la orice 80 la $(NetIn) # smtp $(cmd) adăugați permiteți tcp de la oricare la $(IpOut) dst-port 25 setup # forward 8080 to 81 $(cmd) add allow tcp from any to $(IpOut) dst-port 8080 $(cmd) add allow tcp from $(IpOut) 8080 to any $(cmd) add allow tcp from any to $(NetIn ) dst-port 81 $(cmd) adăugare permite tcp de la $(NetIn) 81 la orice # ieșire $(cmd) adăugare refuză jurnalul tcp de la orice la orice în prin intermediul setării $(IfOut) #$(cmd) adăugare permiteți tcp de la orice la orice configurație ########################################### ### #### # Retea locala ######################################## ### ####### $(cmd) add permit to all from any the any via $(IfIn) ######################## #### ###################### # Respinge totul #################### ##### ########################### $(cmd) adaugă deny all from any to any Am comentat în mod special câteva linii care aduc pachete din rețelele locale 192, 172 la interfața externă, deoarece interfața mea externă este locală. În realitate, aceste linii sunt necesare. Sa trecem peste. == Configurarea squid == Acum am nevoie de squid - un server proxy de cache care poate distribui în mod inteligent internetul tuturor utilizatorilor conform regulilor stabilite de administratorul de sistem. pkg_add -r squid Notă: desigur, opțiunea mai corectă este să construim software din porturi proaspete și actualizate, dar economisim timp, așa că îl instalăm în pachete. Într-o zi vom face upgrade folosind porupgrade. Pentru squid facem cea mai simplă configurare - editați fișierul /usr/local/etc/squid/squid.conf # Configurație minimă SQUID acl all src 0.0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0.0/8 acl 1.0.0.0.0/8 acl local. acl SSL_ports port 443 acl CONNECT metoda CONNECT http_access permite manager localhost http_access permite localnet http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny all icp_access permit toate http_port 3128 transparent hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY cache_dir ufs /usr/local/squid/cache 100 16 256 access_log /usr/local/squid/logs/access.log squid cache_log /usr/local/squid/logs/cache.log cache_store_log /usr/local/squid /logs/store.log refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl apache rep_header Server ^Apache broken_vary_encoding allow apache cache_effective_user squid cache_effective_group squid visible_hostname vm-freepro.local icp_port 0 error_directory /usr/local/etc/squid/dirsquid/errorslocal Am eliminat în mod intenționat comentariile din fișierul de configurare, pentru că nu sunt multe, ci multe. Nu uitați să editați /etc/rc.conf adăugând linia: squid_enable="YES" Apoi, reconstruiți memoria cache și porniți squid: # squid -z # /usr/local/etc/rc.d/squid start Primul lucru pe care îl facem după instalarea squid este să interzicem utilizatorilor locali să acceseze Internetul prin portul 80. Redirecționăm portul 80 la 3128 - adică. obligăm toți utilizatorii să treacă doar prin calmari. Există o mare captură aici. Această operațiune se poate face doar prin introducerea suportului IPFW în nucleu, altfel redirecționarea nu funcționează. Da, asta înseamnă că acum va trebui să ne asamblam miezul! Nu este o sarcină ușoară, dar este utilă - după asamblarea nucleului, viteza acestuia ar trebui să crească, iar volumul ar trebui să scadă considerabil. Mai întâi, utilizați sysinstall pentru a instala sursele nucleului: # sysinstall Accesați /Configure/Distributions Mark în interiorul secțiunii src [X] base [X] sys Acum avem sursele kernelului în folderul /usr/src. Apoi, copiați configurația GENERICĂ în „dvs.” MYKERNEL și editați MYKERNEL: # cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL # mcedit MYKERNEL Când editați configurația, trebuie să specificați următoarele opțiuni: # Activarea firewall-ului în opțiunile de kernel IPFIREWALL # Activarea mecanismului de înregistrare a opțiunilor „jurnal” IPFIREWALL_VERBOSE # Limitarea jurnalelor - protecție împotriva opțiunilor de depășire IPFIREWALL_VERBOSE_LIMIT=50 # Activarea opțiunilor mecanismului de redirecționare a pachetelor IPFIREWALL_FORWARD # Activarea mecanismului de traducere a adresei NAT # Activarea opțiunilor de traducere a adresei NAT opțiunile mecanismului de limitare a vitezei canalului DUMMYNETȘi, de asemenea, eliminați tot hardware-ul inutil pe care nu îl aveți de fapt. Acum să construim nucleul. Această operație poate dura puțin mai mult și poate eșua cu o eroare, necesitând instalarea de surse suplimentare din sysinstall, în funcție de ceea ce ați scris în configurație. Sperăm să nu fie nimic de prisos acolo. # cd /usr/src # make buildkernel KERNCONF=MYKERNEL # make installkernel KERNCONF=MYKERNEL Acum trebuie să reporniți, dar înainte de a reporni, asigurați-vă că citiți manualul în cazul în care nu puteți reporni. Mi-aș dori, desigur, să nu se întâmple asta. Deci, repornim și edităm /etc/firewall.conf din nou. #!/bin/sh # Configurare IPFW pentru serverul NAT și proxy SQUID cmd="/sbin/ipfw -q" IfOut="em0" IpOut="192.168.1.10" NetOut="192.168.1.0/24" IfIn= "em1 " IpIn="172.16.0.1" NetIn="172.16.0.0/16" ############################## ## ################# # Clar ############################# ## ################### $(cmd) -f la culoare $(cmd) tabel 0 la culoare $(cmd) tabel 1 la culoare ######## # ######################################## # Lista albă / Lista neagră #### ############################################$(cmd) tabelul 0 adăugați 172.16.0.2 $(cmd) adăugați tabelul 1 172.16.0.13 ################################## ################ # Loopback ################################ ################## $(cmd) add allow ip from any to any via lo0 ################## # ############################## # Blocați lumea în privat ############# # ################################### $(cmd) adăugați deny ip de la oricare la 127.0. 0.0/ 8 $(cmd) adăugați deny ip de la 127.0.0.0/8 la orice #$(cmd) adăugați deny ip de la 172.16.0.0/16 la orice prin $(IfOut) #$(cmd) adăugați deny ip de la 192.168. 1.0/ 24 la orice prin $(IfOut) $(cmd) adăugați deny ip de la orice la 10.0.0.0/8 prin $(IfOut) #$(cmd) adăugați deny ip de la orice la 172.16.0.0/12 prin $(IfOut ) # $(cmd) adăugați deny ip de la orice la 192.168.0.0/16 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 0.0.0.0/8 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 169.254.0.0/16 prin $(IfOut) $(cmd) adăugați deny ip de la oricare la 192.0.2.0/24 prin $(IfOut) $(cmd) adăugați deny ip de la orice la 224.0.0.0/4 prin $( IfOut) $(cmd) adaugă deny ip de la oricare la 240.0.0.0/4 prin $(IfOut) ############################ ##### ################### # ICMP ####################### ##### ##################### $(cmd) adaugă deny icmp de la orice la orice frag $(cmd) adaugă deny log icmp de la orice la 255.255.255.255 prin $(IfOut) $(cmd) adăugați deny log icmp de la oricare la 255.255.255.255 out prin $(IfOut) ###################### ##### ######################## # NAT ################## ####### ########################### $(cmd) adaugă deviază 8668 ip de la $(NetIn) către orice prin $(IfOut) $(cmd) adăugați redirecționați 8668 ip de la orice la $(IpOut) prin $(IfOut) #$(cmd) adăugați redirecționați 8668 ip de la orice către orice prin $(IfOut) ####### ######### ################################# # Blocați privat pentru lume ## ######### ######################################$ (cmd) adăugați deny ip de la 10.0.0.0 /8 la orice prin $(IfOut) #$(cmd) adăugați deny ip de la 172.16.0.0/12 la orice prin $(IfOut) #$(cmd) adăugați deny ip de la 192.168 .0.0/16 la orice prin $(IfOut ) $(cmd) adăugați deny ip de la 0.0.0.0/8 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 169.254.0.0/16 la orice prin $(IfOut ) $(cmd) add deny ip din 192 . 0.2.0/24 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 224.0.0.0/4 la orice prin $(IfOut) $(cmd) adăugați deny ip de la 240.0.0.0/4 la orice prin $( IfOut) ################################################################## # ## # Lista albă ############################################# # #### $(cmd) add allow all from "table(0)" to any $(cmd) add allow all from any to "table(0)" ############# # ################################## # Lista neagră ########## ### #################################### $(cmd) adaugă refuză toate din „ tabel (1 )" la orice ########################################## ### #### # Păstrați stabilit ######################################## ### ####### $(cmd) add allow tcp from any to me stabilit ############################ ### ################### # Principal ########################## ### ##################### $(cmd) add allow ip from any to any frag $(cmd) add allow icmp from any to $(IpOut) icmptypes 0, 8,11 # dns $(cmd) add allow tcp from any to $(IpOut) dst-port 53 setup $(cmd) add allow udp from any to $(IpOut) dst-port 53 $(cmd) add permiteți udp de la $(IpOut) 53 la orice $(cmd) adăugați permiteți udp de la $(IpOut) la orice port dst 53 stare de păstrare # dns-client $(cmd) adăugați permiteți tcp de la orice la $(NetIn) dst -port 53 setup $(cmd) adăugați permite udp de la orice la $(NetIn) dst-port 53 $(cmd) adăugați permiteți udp de la $(NetIn) 53 la orice $(cmd) adăugați permite udp de la $(NetIn) la orice dst-port 53 keep-state # time $(cmd) add allow udp de la $(IpOut) la orice dst-port 123 keep-state # time-client $(cmd) add allow udp de la $(NetIn) la orice dst -port 123 keep-state # ssh-in $(cmd) add allow tcp from any to $(IpOut) 22 $(cmd) add allow tcp from $(IpOut) 22 to any # ssh-out $(cmd) add allow tcp de la $ (IpOut) la orice 22 $(cmd) adăugați permite tcp de la orice 22 la $(IpOut) # http $(cmd) adăugați permiteți tcp de la $(IpOut) la orice port dst 80 # http-client #$ (cmd) adăugați permit tcp de la $(NetIn) la orice port dst 80 #$(cmd) adăugați permiteți tcp de la orice 80 la $(NetIn) # squid $(cmd) adăugați permiteți tot de la $(NetIn) la $( IpIn) 3128 prin $(IfIn) $(cmd) adăugați fwd $(IpIn), 3128 tcp de la $(NetIn) la orice 80 # smtp $(cmd) adăugați permiteți tcp de la oricare la $(IpOut) dst-port 25 setup # out $ (cmd) adăugați interzice jurnalul tcp de la orice la orice prin intermediul setării $(IfOut) #$(cmd) adăugați permiteți tcp de la orice la orice configurare ################ ### ############################### # Retea locala ############# ### ################################# $(cmd) adăugare permite tuturor de la orice la orice prin $ (Dacă intra) ############################################### ### # Respinge totul ############################################# ##### ### $(cmd) adaugă deny all from any to any Repornim serviciile și verificăm - totul funcționează, iar clienții trec prin sistemul de control neobservați de ei înșiși. Să lăsăm deoparte configurarea controlului accesului pentru moment și să rezolvăm o altă problemă importantă: obținerea DNS. == Configurarea DNS == În prezent, clienții noștri au adresa DNS 192.168.1.1 înregistrată - externă rețelei interne 172.16.0.0/16. Putem spune că clienții urcă deasupra serverului de mii de ori pe zi în căutarea adreselor. Să îmbunătățim sistemul - configurați un server DNS de cache, care ne-ar permite să evităm conexiunile end-to-end către exterior, să ne economisim trafic și să ne grăbim munca. Înainte de a face acest lucru, nu uitați să refuzați accesul extern prin portul 53 pentru toți clienții. În fișierul /etc/namedb/named.conf edităm parametrii listen-on, forwarders: opțiuni (directorul „/etc/namedb”; fișierul pid „/var/run/named/pid”; fișierul dump „/var/dump/named_dump.db”; fișierul statistici „/var/stats/named.stats "; ascultare ( 127.0.0.1; 172.16.0.1; ); dezactivare-zonă-vide "255.255.255.255.IN-ADDR.ARPA"; dezactivare-zonă-vide "0.0.0.0.0.0.0.0.0.0.0... .0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; dezactivare-zona-vide "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. 0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; expeditori ( 192.168.1.1; ); // adresa sursă de interogare * portul 53; );În fișierul /etc/resolv.conf, faceți mai întâi DNS-ul local: server de nume 127.0.0.1 server de nume 192.168.1.1În /etc/firewall.conf interzicem clienților să folosească DNS extern (edităm secțiuni cu comentariul dns-client) # dns-client # Dezactivează DNS extern #$(cmd) add allow tcp from any to $(NetIn) dst-port 53 setup #$(cmd) add allow udp from any to $(NetIn) dst-port 53 #$( cmd) adăugați permit udp de la $(NetIn) 53 la orice #$(cmd) adăugați permiteți udp de la $(NetIn) la orice dst-port 53 keep-state # Permite numai DNS local $(cmd) add allow tcp de la $( NetIn) la $(IpIn) dst-port 53 setup $(cmd) add allow udp from $(NetIn) to $(IpIn) dst-port 53 Să reluăm: # /etc/rc.d/named restart # /etc/rc.d/ipfw restart Acum să revenim la problema controlului accesului la Internet. Există două soluții deodată. Mai întâi, configurați politicile acl în squid. În al doilea rând, instalați și configurați squidGuard - o aplicație specială pentru controlul accesului. Să începem în ordine. == Configurarea squid acl == acl sunt reguli în configurația squid care vă permit destul de eficient să limitați fluxul de informații care trece prin serverul proxy. Pe scurt, cu acl poți ucide rapid orice stânga care interferează cu munca ta. Toate setările acl sunt scrise implicit în fișierul squid.conf, dar pot fi mutate și în fișiere externe. De exemplu, aici este o parte din configurație: # Interzicem depozitarea fișierelor pentru toată lumea acl shares dstdomain .rapidshare.com .webfile.ru http_access deny shares # Interzicem tuturor să solicite site-uri prin IP acl ip_urls url_regex http://+\.+\.+\.+[:/ ] http_access deny ip_urls # Restricții de grup src group_strict (ip 172.16.0.20-172.16.0.25) src group_allow (ip 172.16.0.26-172.16.0.30) acl (group_allow (trece orice) local group_strict) Se dovedește grozav. Dar este evident că un proxy bun ar trebui să aibă multe astfel de reguli - o regulă pentru fiecare „gaură”. Găsirea „găurilor” și înregistrarea lor individual este plictisitoare, dar, ca întotdeauna, există o soluție gata făcută - squidGuard - o aplicație de filtrare cu un set uriaș de reguli, care, în principiu, poate fi completată chiar și într-un program cron. . Studiem problema. == Configurarea squidGuard == Acum să încercăm să instalăm și să configuram squidGuard. Acest lucru nu este greu de făcut, dar trebuie să fii atent. Asa de: # pkg_add -r squidGuard # cp /usr/local/etc/squid/squidGuard.conf.sample /usr/local/etc/squid/squidGuard.conf Fișierul squidGuard.conf stochează toate setările, dintre care unele vor trebui corectate imediat și anume: # Fișier squidGuard.conf ... sursă sample-clients ( ip 172.16.0.0/16 ) ... Să legăm squidGuard de squid - adăugați 3 linii în fișierul squid.conf: redirector_bypass on redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf redirect_children 10 squidGuard își stochează baza de date de configurare în /var/db/squidGuard. Înainte de prima lansare sau după efectuarea modificărilor, acesta trebuie reconstruit: # rehash # squidGuard -C all # chown -R squid:squid /var/db/squidGuard # /usr/local/etc/rc.d/squid restart Totul este în regulă, dar când un client încearcă să meargă pe un site interzis, de exemplu, http://3warez.com/, experimentăm încetiniri. Aș dori să primesc un fel de mesaj inteligibil. Pentru asta avem nevoie de apache. == Configurarea apache == După cum sa menționat deja, avem nevoie de apache pentru a afișa informații despre adresele blocate și motivele blocării. Facem ca de obicei: # pkg_add -r apache22 # echo "apache22_enable="YES"" >> /etc/rc.conf Setările Apache se află în fișierul /usr/local/etc/apache22/httpd.conf. Înainte de a începe, trebuie să verificați directivele DocumentRoot și ServerName - voi omite detaliile, deoarece Există o mulțime de articole pe Internet despre configurarea acestui server. Realizat în 1 secundă. Hai sa lansam: # echo „Acces refuzat” > /usr/local/www/apache22/data/index.html # /usr/local/etc/rc.d/apache22 start Să reparăm puțin configurația squidGuard.conf: # La sfârșitul fișierului acl ( ..... implicit ( redirecționare http://172.16.0.1/index.html ) )== Configurarea dhcpd == Și acum ne apropiem de finalizare. Rețeaua este configurată și funcționează minunat. Totul este sub control, totul este strict limitat. Dar după stick, este timpul să le oferim clienților un morcov - sub formă de distribuție automată a adreselor DHCP. Un administrator bun, desigur, va înșela și aici - va distribui adrese numai prin MAC, dar vom pune lucrurile în perspectivă. # pkg_add -r isc-dhcp3-server # cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf Adăugați următoarele linii în fișierul /etc/rc.conf: dhcpd_enable="DA" dhcpd_flags="-q" dhcpd_ifaces="em1" De asemenea, trebuie să corectați cea mai importantă configurație /usr/local/etc/dhcpd.conf: opțiunea nume-domeniu „example.com”; opțiune domain-name-servers 172.16.0.1; opțiunea subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subrețea 172.16.0.0 mască de rețea 255.255.0.0 (interval 192.16.0.11 172.16.0.15; routere opționale 172.16.0.1; ) Porniți electricitatea: # /usr/local/etc/rc.d/isc-dhcpd start Probabil asta e tot, cel mai important lucru. Acest articol nu se pretinde a fi absolut complet și informativ, ci descrie pe scurt etapele care trebuie parcurse pentru a aduce serverul în stare de funcționare. Mai departe - doar reglare și reglare din nou. De asemenea, nu uitați că aceasta nu este singura modalitate de a configura un server - în Unix există întotdeauna o alternativă și puteți utiliza aplicații complet diferite.

Ai propria ta rețea locală,
ați decis că este timpul să îl conectați la Internet printr-o linie dedicată. Ei bine, ce lucru bun, astăzi voi încerca pentru tine
ajută puțin cu asta :) Să începem cu instalarea FreeBSD, deoarece suntem obsedați de
securitate, trebuie să ai grijă de asta din timp :) Oprește totul, răspunde peste tot
categoric nu :), vom activa ce avem nevoie mai tarziu :) In timpul instalarii sistemului va va intreba
„Vrei să vezi colecția de porturi?”, răspunde da. Acum vom instala suplimentar
software. Mergem la secțiunea de securitate și selectăm acolo un program numit PortSentry, vom avea nevoie de el mai târziu :) După instalare, trebuie să compilam
nucleu... Să luăm ca bază nucleul GENERIC gata făcut. Este situat la /sys/i386/conf. Scrieți cu atenție un nou nucleu pentru sistem, eliminați tot ceea ce nu este necesar (de exemplu, eliminați suportul pentru USB, COM, LPT, SCSI, RAID și alte dispozitive pe care nu le veți folosi în sistem, nu aveți nevoie de USB, nu o să-l conectați la dispozitivele router cu suport USB și faceți același lucru cu orice altceva, mai ales că acest lucru va crește performanța sistemului în ansamblu... Informații mai detaliate veți găsi în fișierul LINT) . Apoi, adăugați următoarele linii la noul nucleu:

Opțiuni IPFIREWALL #Activați suport pentru firewall
Opțiuni IPDIVERT #această opțiune este necesară pentru ca NAT să funcționeze
Opțiuni IPFIREWLL_VERBOSE #Lasă firewall-ul să scrie jurnalele
Opțiuni IPFIREWALL_VERBOSE_LIMIT=10 #Limita intrări în jurnal pentru evenimente
Opțiuni TCP_DROP_SYNFIN #Nu acceptați pachetele rămase
Opțiuni ICMP_BANDLIMIT #Aceasta este o opțiune pentru a preveni atacurile DOS :)
Opțiuni ACCEPT_FILTER_DATA #De obicei activez această opțiune :)
Opțiuni TCP_RESTRICT_RST #Această opțiune ar trebui, de asemenea, activată

config proxy, cd ../../compile/proxy, face dependent, make, make install

Gata, felicitari, tocmai ti-ai compilat nucleul, daca ceva nu merge, compilatie
oprit - uite, poate ai făcut ceva greșit, asta se întâmplă și încearcă să reconstruiești din nou nucleul. Apoi repornim sistemul. Și mașina noastră ar trebui să pornească cu noul nucleu. Dacă nu este cazul
s-a întâmplat, nu vă supărați - sistemul poate fi pornit cu vechiul nucleu. Pentru a face asta, când
boot, când scrie dacă doriți să intrați în modul de recuperare, apăsați Enter, acolo
dați comanda unload, apoi încărcați kernel.old și boot. Gata, sistemul va porni cu vechiul nucleu.

În mod implicit, sistemul așteaptă 9 secunde înainte de a porni.
Mergem în folderul /boot și edităm fișierul loader.conf acolo, trebuie să adăugăm următoarea linie acolo
boot_autodelay=0, acest lucru se face astfel încât sistemul să nu aștepte 9 secunde pentru răspunsul utilizatorului, dar avem nevoie de el, astfel încât, dacă sistemul repornește, acesta merge rapid online :) Apoi mergem la
/etc și începeți editarea fișierului rc.conf. Mai jos este un exemplu cu comentarii, astfel încât să vă puteți da seama
nu va fi greu:

hostname="zlobix.evil.com" #Numele de rețea al mașinii dvs
firewall_enable="YES" #Activați firewall-ul
firewall_script="/usr/local/etc/firewall.conf" #cale către fișierul cu politicile firewall
firewall_type="close" #Tip firewall, acest tip interzice totul!
firewall_logging="YES" #Sarcinați firewall-ul nostru să scrie jurnalele
natd_program="/sbin/natd" #Mergi la demonul natd
natd_interface="ed0" #Pe ce interfață se suspendă NAT, interfața ar trebui să fie orientată către ISP (Inetrnet Service Provader)
tcp_extension="NU" #Dezactivați extensiile periculoase pentru TCP/IP
tcp_keepalive="YES" #Setați această opțiune, routerul dvs. se va trezi mai puțin
susceptibil la atacuri DOS.
tcp_drop_synfin="DA" #Nu acceptați pachetele rămase
tcp_restrcit_rst="DA" #Nu-mi amintesc ce înseamnă, dar recomand să-l pornești :)
icmp_drop_redirect="DA" #Nu lucrăm cu ICMP
pachete
icmp_log_redirect="DA" #Înregistrăm pachetele ICMP
ifconfig_lo0="inet 127.0.0.1" #configuring adresa de loopback,
lăsați-o așa cum este menționat aici

ifconfig_ed0="inet 167.65.89.147 nemask 255.255.255.192" #în acest exemplu avem asta
interfața este orientată către furnizor, unde ed0 este numele interfeței, inet
IP - adresa emisă de furnizor, masca de subrețea de rețea.

ifconfig_ed1="inet 192.168.0.1 netmask 255.255.255.0" #configurarea interfeței interne, adică care se confruntă cu rețeaua locală

ifconfig_ed1_alias0="inet 192.168.1.1 netmask 255.255.255.0" # puteți conecta mai multe la o singură interfață de rețea deodată
Adrese IP (aliasing IP), în acest exemplu se presupune că rețeaua noastră este împărțită logic în două subrețele 192.168.0.0/24 și 192.168.1.0/24 unde /24
- codul masca folosind metoda CIDR, care corespunde
masca de subrețea 255.255.255.0

syslogd_enable="YES" #Activați demonul care
va fi responsabil pentru jurnalele
inetd_enable="NU" #Dezactivați acest serviciu cu siguranță!
named_enable="NU" #dezactivați și pe acesta, nu vă veți folosi routerul ca server DNS :)
nfs_client_enable="NU" # Mai jos trei parametri sunt responsabili pentru susținerea sistemului de fișiere în rețea, sfatul meu este să îl dezactivați și pe acesta
nfs_server_enbale="NU"
nfs_reserved_port_only="NU"
fsck_y_enable="DA"
portmap_enbale="NU" #disable portmapper
sshd_enbale="YES" #Activați ssh ca să ne putem gestiona routerul de la distanță :)
sshd_programm="/usr/sbin/sshd/" #calea către demonul ssh
sshd_flags="" Indicatori de pornire #Sshd, dacă nu știți, lăsați-l așa cum este
defaultrouter="167.65.89.1" #Router în amonte al furnizorului nostru
getaway_enbale="YES" #Activați gateway-ul pe mașina noastră
icmp_bmcastecho="NU" #Oprim răspunsurile la mesajele ecou ale protocolului ICMP, asta ne va scuti de nervi :)
cron_enable="NU" #Nu știu, dar majoritatea oamenilor pornesc Cron, dar îl opresc pentru că nu prea am nevoie de el pe router...
clear_tmp_enable="YES" #Ștergeți directorul tmp de fiecare dată când sistemul pornește
lpd_enable="NU" #Nu vei putea imprima nici de pe router, așa că decupează-l și tu
usbd_enable="NU" #Dezactivați demonul pentru a accepta dispozitive USB
sendmail_enable="NU" #Cutting off sendmail, cel mai scurs loc din FreeBSD, ei găsesc constant unele erori :))))
kern_securelevel_enable="YES" #Activați securitatea
kern_securelevel="0" #Setați tipul de securitate

Deci, după ce ne-am ocupat de rc.conf, trebuie să ne configuram routerul să funcționeze cu DNS. Pentru a face acest lucru, deschideți fișierul resolv.conf din același folder și scrieți asta acolo:

nameserver="167.65.88.18" #Adresa serverului DNS a furnizorului nostru
nameserver="167.65.88.17" #Adresa serverului DNS de rezervă al furnizorului nostru

După cum ați înțeles deja, după nameserver="" este indicat între ghilimele
Adresa IP a serverului DNS. Este mai bine să nu adăugați un server DNS în rețeaua locală, Dumnezeu protejează cel mai bine :) A venit la ssh.
Trebuie să-l asigurăm 🙂 și să creștem protecția,
deci accesați folderul /etc/ssh și deschideți sshd_config. Și edităm următoarele:

#sshd_config
Port 666 #Acest port face ssh distractiv pentru noi :)
Protocolul 2 #Folosim o metodă de transfer de date mai sigură
PermitRootLogin nu #Dezactivați capacitatea utilizatorului root de a se conecta, pentru nevoile noastre vom crea un utilizator special :)
PrintLastLog da #Afișează ultima dată de conectare
PermitEmptyPasswords nu #Interzice autentificarea utilizatorilor cu o parolă goală

După ce ne-am dat seama, să mergem la firewall...

În acest articol ne vom uita la interfețele de rețea în FreeBSD 11.1, vom arăta configurația rețelei prin fișierul de configurare /etc/ rc.conf, și anume scopul static setări și primirea acestora de către DHCP. Să notăm adresele DNS-servere, configurare gazdeși luați în considerare instrucțiunile setări temporare de rețea.

Vizualizați interfețele de rețea.

În primul rând, să lămurim: Există două stări ale plăcii de rețea SUS.(implicat) și JOS(neimplicat).

Primul pas este să ne uităm la interfețele noastre de rețea, o vom privi ca o echipă ifconfig.(Fig.1) Ieșirea comenzii arată toate interfețele SUS.Și JOS.

Ifconfig

ifconfig -a iti va arata acelasi lucru.

Ifconfig -a

Aici sunt câteva diferențe față de ifconfig V server Ubuntu.(V server Ubuntu "ifconfig" afișează numai interfețe SUS.,"ifconfig -a" afișează toate interfețele și SUS.Și JOS)

Fig.1 - Rezultatul introducerii comenzii ifconfig.

Și deci ce vedem:

  • em0- placa noastră de rețea, cu o adresă IP 192.168.3.11 .
  • em1- a doua placă de rețea, neconfigurată.
  • uite- bucla locală, toată lumea o are implicit.

Pentru a vizualiza numai interfețele SUS., se folosește comanda ifconfig -u(Fig.2):

Ifconfig -u

și numai pentru vizualizarea interfețelor JOS, se folosește comanda ifconfig -d(Fig.3):

Ifconfig -d
Fig.2 - Rezultatul introducerii comenzii ifconfig -u.
Fig.3 - Rezultatul introducerii comenzii ifconfig -d.

Pe viitor voi arăta exemple de setări pe interfață "em0".

Pentru a activa interfața, utilizați comanda ifconfig"INTERFACE-NAME" sus.

Ifconfig em0 up

Pentru a dezactiva interfața, utilizați comanda ifconfig "INTERFACE-NAME" jos.

Ifconfig em0 jos

"Joacă în jurul" cu o interfață, cu excepția cazului în care, desigur, sunteți conectat prin ssh, și lăsați-l în stat SUS..

Configurarea rețelei prin fișierul de configurare.

Pentru a configura o adresă IP statică sau dinamică, trebuie să edităm fișierul de configurare a interfeței de rețea - /etc/ rc.confîl vom edita folosind un editor de text vi.(Fig.4) Voi spune imediat că pentru a edita în vi trebuie să apăsați litera "eu", iar pentru a salva și a închide documentul trebuie să faceți clic "Esc" introduce ":wq!"și apăsați "Introduce".

Fig.4 - vi /etc/rc.conf.

Obținerea setărilor de rețea prin DHCP.

Pentru a atribui setări care urmează să fie primite prin DHCP, trebuie să introduceți (sau să modificați o linie existentă) în fișierul /etc/ rc.conf.(Fig.5)

ifconfig_INTERFACE-NAME="DHCP"

Ifconfig_em0="DHCP"
Fig.5 - Primirea setărilor de rețea prin DHCP.

Repornirea serviciului de rețea netif.(Fig.6)

/etc/rc.d/netif restart Fig.6 - Repornirea serviciului de rețea FreeBSD.

Ne uităm la interfețele de rețea active, vedem adresa IP a interfeței primite prin DHCP em0- 192.168.3.6 (Fig.7)

Ifconfig -u

Ping 8.8.8.8
Fig.7 - Verificarea interfețelor active și a accesului la rețea.

Vin ping-urile. Totul e bine!

Specificarea manuală a setărilor de rețea.

Pentru a atribui o adresă statică pentru nostru Freebsd necesare în fișierul /etc/ rc.conf introduceți două linii (Fig. 8)

ifconfig_INTERFACE-NAME="inet ADRESA IP-FREEBSD mască de rețea MASK-NET "

defaultrouter=" ADRESA IP GATEWAY "

Ifconfig_em0="inet 192.168.3.11 netmask 255.255.255.0" defaultrouter="192.168.3.1"
Fig.8 - Setări statice ale interfeței de rețea.

Reporniți serviciul de rețea.

/etc/rc.d/netif reporniți

Verificarea interfețelor active

Ifconfig -u

Verificăm conexiunea la internet prin ping Google eights.

Ping 8.8.8.8

Configurarea DNS.

Adresele IP ale serverelor DNS sunt stocate în fișierul /etc/ rezoluție.conf(Fig.9)

Deschidere rezoluție.confîn redactor vi.

Vi /etc/resolv.conf

introduce IP abordare DNS Server. (Puteți specifica câte adrese doriți.)

Server de nume 192.168.3.1 server de nume 8.8.8.8 server de nume 8.8.4.4

Daca nu ai fisierul rezoluție.conf apoi creați-l în director /etc

Atingeți /etc/resolv.conf
Fig.9 - Conținutul fișierului resolv.conf.

Fișierul /etc/hosts.

Fișier /etc/ gazde conține tabele care mapează numele DNS la adrese IP. Serverul dvs. va accesa mai întâi fișierul gazde, iar apoi către serverul DNS.

Personal, mi s-a părut util să adaug gazde inregistrand asta freebsd(Adresă IP LAN - nume server). Acum putem specifica numele DNS, nu adresa IP, în toate fișierele de configurare și, dacă este necesar, să ne schimbăm adresa IP în cel mai scurt timp posibil prin corectarea gazdeși setările de interfață în /etc/ rc.conf.

Acesta este doar un exemplu de ceea ce ar trebui să faci nu este necesar.

Încep editarea (Fig. 10):

Pe /etc/hosts

Eu intru:

192.168.3.11 freebsd.itdeer.loc Fig. 10 - Conținutul fișierului hosts.

Voi verifica prin ping nume de la gazde.(Fig.11)

Ping localhost ping freebsd.itdeer.loc
Fig. 11 - Ping nume de la gazde.

Atribuirea temporară a unei adrese IP.

Sincer să fiu, nu știu pentru ce ar putea fi utilă atribuirea temporară a setărilor de rețea. Cu excepția cazului în care, să presupunem că aveți un server care este destinat doar rețelei dvs. locale și vă decideți brusc să actualizați rapid software-ul prin Internet pe acest server, pentru a nu merge la gateway și a distribui Internetul la adresa IP necesară, etc. Te poți descurca cu câteva comenzi.

De exemplu, știm asta 192.168.3.109 Cu siguranță avem acces la Internet, atribuim această adresă IP interfeței noastre, trebuie să specificăm și masca de rețea (Fig. 12):

Ifconfig em0 192.168.3.109 netmask 255.255.255.0

sau o comandă cu o intrare scurtă de mască de rețea.

Ifconfig em0 192.168.3.109/24
Fig. 12 - Specificarea setărilor temporare pentru interfața de rețea em0.

Este posibil ca Internetul să nu apară deoarece gateway-ul implicit nu este specificat. Îl înregistrăm și facem ping pe Google opt. (Fig. 13)

Adăugarea traseului implicit 192.168.3.1 ping 8.8.8.8
Fig.13 - Specificați gateway-ul implicit. Se verifică ping-ul.

Puteți vedea dacă am introdus corect gateway-ul nostru implicit în tabelul de rutare. Este afișat folosind comanda "netstat -rn", Gateway-ul implicit va fi indicat de steag U.G..(Fig.14)

Netstat -rn
Fig. 14 - Ieșirea tabelului de rutare.

Dacă ați făcut o greșeală de ortografie undeva sau aveți o altă poartă specificată, atunci puteți eliminați gateway-ul implicit.

Route del default

Aceasta completează configurarea temporară; amintiți-vă că după repornirea serverului sau a unui serviciu separat rețele, toate setările temporare vor dispărea.

Adăugați o rută la rețea 192.168.0.0/16 (Mască 255.255.0.0) prin gateway-ul principal 192.168.3.1/24

Adăugarea traseului 192.168.0.0/16 192.168.3.1

Opțiunea de a adăuga o rută care indică masca completă.

Adăugarea rutei -net 192.168.0.0 -netmask 255.255.0.0 192.168.3.1

Redenumiți interfața em0 în wan0.

Pentru comoditate, unii administratori redenumesc interfețele astfel încât să poată vedea imediat pentru ce este destinată interfața. Să presupunem că avem un gateway cu două interfețe de rețea em0(Internet) și em1(rețea locală) și lucrul cu astfel de nume este incomod, deoarece având un număr mare de interfețe puteți deveni confuz. Este mult mai convenabil să lucrezi cu interfețe wan0Și lan1.

Vom arăta un exemplu de redenumire a unei interfețe em0 V wan0în fișierul /etc/ rc.conf.(Fig.15)

Ifconfig_em0="inet 192.168.3.11 netmask 255.255.255.0"

Înlocuiește cu două linii:

Ifconfig_ em0 _name=" wan0" ifconfig_ wan0="inet 192.168.3.11 netmask 255.255.255.0"
Fig.15 - Redenumiți interfețele în fișierul /etc/rc.conf.

Nu uitați să reporniți serviciul de rețea:

/etc/rc.d/netif reporniți

Voi verifica și voi introduce comanda ifconfig -u. Ne vedem wan0 cu dreapta adresa IP.(Fig.16)

Ifconfig -u
Fig.16 - Verificarea numelui noii interfețe. ifconfig -u.


Un router este un dispozitiv care oferă acces la Internet pentru computerele conectate într-o rețea locală. Folosind FreeBSD, puteți construi un router similar și acest lucru se face destul de simplu; luați în considerare opțiunea de a construi un router pentru o rețea locală mică de 20...30 de stații de lucru.

Date inițiale - un PC cu două plăci de rețea cu FreeBSD instalat (folosind în prezent FreeBSD 8.4 STABLE), o adresă IP externă furnizată de furnizorul nostru, adresa IP a gateway-ului furnizorului și adresa IP a serverului DNS.

Pentru a se transforma într-un router, trebuie doar să adăugați o linie la fișierul de configurare rc.conf:

# echo gateway_enable=”DA” > /etc/rc.conf

Ceea ce va permite trecerea pachetelor IP de la o interfață de rețea la alta. Folosind comanda ifconfig, vom afla informații despre interfețele de rețea și vom determina care dintre ele va fi „externă” (îi vom atribui adresa IP a furnizorului) și care va fi „internă” (îi vom atribui IP-ul neocupat). adresa rețelei locale interne). Să vedem ce obținem:


Definim „em0” ca o interfață externă (cu ip 192.168.5.39 atribuit), „em1” ca una internă prin editarea fișierului rc.conf (îi atribuim, de exemplu, ip 192.168.0.240), gateway-ul nostru furnizorul trebuie să fie înregistrat în același fișier

# echo defaultrouter="xxx.xxx.xxx.xxx" > /etc/rc.conf

Unde xxx.xxx.xxx.xxx este adresa IP a gateway-ului furnizorului.

Ca rezultat, am ajuns cu următorul fișier rc.conf:


Apoi trebuie să înregistrăm adresa IP a serverului DNS al furnizorului, astfel încât să putem accesa site-ul după numele lor. Să facem o intrare în fișierul de configurare resolv.conf

# echo nameserver xxx.xxx.xxx.xxx > /etc/resolv.conf

Unde xxx.xxx.xxx.xxx este adresa IP a serverului DNS.

Dacă există mai multe servere DNS, este indicat să le enumerați pe toate, fiecare pe o linie nouă.


În cazul nostru, acestea sunt adresele IP ale serverului 192.168.5.200 și 192.168.5.201. Adresa 8.8.8.8 este serverul DNS al marelui Google; în cazuri extreme, îl puteți folosi.

Să repornim...

# oprire –r acum

Gata, configurația inițială a routerului este gata (puteți configura PC-ul din rețeaua locală). În continuare, vom lua în considerare configurarea unui firewall, care să permită traducerea adresei de rețea (NAT) și diverse scheme de rutare.

Să ne uităm la configurarea stațiilor de lucru sub sistemul de operare Windows pentru Internet (cum și unde să înregistrăm adresa IP a PC-ului, a routerului și a DNS-ului). Ca aplicație, doar în cazul în care cineva are nevoie de ea.

Să continuăm configurarea routerului (partea 2).

Router Wi-Fi cu servere DHCP și DNS FreeBSD 8.2

Ce vrem să obținem:
- astfel încât clienții Wi-Fi să fie pe aceeași subrețea ca și cei cu fir.
- astfel încât clienții cu fir și fără fir să primească adrese automat prin DHCP
- să aibă DNS cache
- desigur că vrem ca toată lumea să intre online
- să aibă acces prin RDP la serverul intern

În general, dorim să obținem ceva similar în funcționalitate cu routerul Dlink DIR-300

Ce avem:
Celeron 700, 256 MB RAM, 80 GB șurub IDE și o placă de bază ciudată care funcționează corect doar cu ACPI dezactivat
placi de retea:

LAN - rl0 (10\100 un fel de realtek, găsit în spatele unui dulap la serviciu) rl0@pci0: 1 :8 :0 :class=0x020000 card=0x813910ec chip=0x813910ec rev=0x10 hdr=0x00 vendor = "Realtek Semiconductor" device = Realtek RTL8139 Family PCI FastEthernet NIC RTL- 8139 /8139C/8139D clasă = subclasă de rețea = ethernet WAN - stge0 (10\100\1000 adaptor asus) stge0@pci0: 1 :5 :0 :class=0x020000card=0x81801043chip=0x102313f0 rev=0x41 hdr=0x00 vendor = "Sundance Technology Inc" device = "IC Plus IP1000 Family Gigabit Ethernet Adapter" class = network subclass = ethernet WLAN - ral0 card (cheap Wi-Fi) ral0@pci0: 1 :10 :0 :class=0x028000card=0x3a711186chip=0x03021814 rev=0x00 hdr=0x00 vendor = "Ralink Technology, Corp." dispozitiv = „wireless a/b (RT2525 2 .4GHz transceiver + RT2560 MAC/BBP)" clasa = retea

adresa IP albă furnizată de furnizor:
IP 9.9.9.9
masca 255.255.255.0
gateway 9.9.9.1
DNS1 9.9.9.254
DNS1 9.9.9.253
setările diferă de cele care există de fapt, dar asta nu schimbă esența

Gama LAN: 192.168.0.0 cu masca 255.255.255.0

FreeBSD 8.2 OS instalat:

# uname -a FreeBSD GATE 8 .2 -LANSA FreeBSD 8 .2 -ELIBERARE #0:Sam 9 Apr 20:13:28 OMSST 2011 root@GATE:/usr/src/sys/i386/compile/GATE i386

conținutul /etc/rc.conf:

9 .9 .9 .1 9 .9 .9 .9 mască de rețea 255 .255 .255 .0 " ifconfig_rl0="inet 192 .168 .0 .1 mască de rețea 255 .255 .255 .0 "

conținutul /etc/resolv.conf (server DNS):

server de nume 9 .9 .9 .254 server de nume 9 .9 .9 .253

Să începem pregătirea:

Îndepărtăm toate driverele inutile din nucleu (sau nu le eliminăm, în funcție de ceea ce este convenabil), lăsând toate driverele pentru dispozitivele wireless. Dacă știți care driver este potrivit pentru cardul dvs., lăsați-l și puteți elimina restul. Nu știam care mi se potrivește, așa că am lăsat totul. Reconstituim nucleul cu opțiuni:

dispozitiv if_bridge # Modul pentru operarea podului dispozitiv wlan # suport 802.11 (Wi-fi) # Nu știu ce este, se încarcă automat dispozitiv wlan_amrr # Algoritm de control al ratei de transmisie AMRR dispozitiv wlan_xauth # Modul de suport pentru autorizare pentru modul punct de acces dispozitiv wlan_wep # Modulul de suport al algoritmului de securitate WEP dispozitiv wlan_tkip # Modulul de suport pentru criptare TKIP dispozitiv wlan_ccmp # Modulul de suport pentru criptare CCMP dispozitiv pf # Folosesc Packet Filter ca firewall # suport pentru algoritmul de așteptare (prioritizarea traficului) opțiuni Opțiuni ALTQ ALTQ_CBQ # Opțiuni Class Bases Queuing (CBQ) ALTQ_RED # Detectare timpurie aleatorie (RED) opțiuni ALTQ_RIO # RED Opțiuni de intrare/ieșire ALTQ_HFSC # Planificator ierarhic de pachete (HFSC) opțiuni ALTQ_PRIQ # Priority Queuing (PRIQ) # deoarece am un procesor cu un singur nucleu, nu am nevoie de suport pentru multe nuclee #options ALTQ_NOPCC # Necesar pentru construirea SMP

compilați și instalați nucleul:

# cd /usr/src # make buildkernel KERNCONF=GATE && \ face installkernel KERNCONF=GATE

Reporniți și vedeți ce se întâmplă:

8843 mtu 1500 opțiuni=8209b eter 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 9 .9 .9 .255 8802 metric 0 mtu 1500 opțiuni = 3808 eter 00 :50 :fc :ef:4d: 75 inet 192 .168 .0 .1 masca de rețea 0xffffff00 difuzat 192 .168 .0 .255 media : selecție automată Ethernet (100baseTX 8802 metric 0 mtu 2290 eter 00 :26 :5a: 77 :38 :ba media : IEEE 802 .11 Stare de selecție automată Ethernet wireless (selectare automată): fără transportator lo0: steaguri = 8049 mtu 16384 opțiuni = 3 inet 127 .0 .0 .1 masca de rețea 0xff000000

Cardul Wi-Fi a fost identificat ca ral0. Deja bun. Puteți reconstrui din nou nucleul și puteți elimina driverele wireless inutile.

Editați /etc/hostapd.conf în această stare:

Editați /etc/rc.conf:

keymap="ru.koi8-r" hostname="GATE" gateway_enable="YES" defaultrouter=" 9 .9 .9 .1 " sshd_enable="DA" ifconfig_stge0="inet 9 .9 .9 .9 mască de rețea 255 .255 .255 .0 " # configurați cardul wireless ca punct de acces wlans_ral0="wlan0" create_args_wlan0="wlanmode hostap" ifconfig_wlan0="up mediaopt hostap" # eliminați adresa IP din interfața rl0 #ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0" # creați o punte între rețelele locale fără fir și cu fir # și atribuiți-i adresa IP a gateway-ului rețelei locale cloned_interfaces="bridge0" ifconfig_bridge0="inet 192 .168 .0 .1 mască de rețea 255 .255 .255 .0 \ addm wlan0 addm rl0 sus" ifconfig_rl0="sus" # activați funcționalitatea punctului de acces hostapd_enable="DA"

Să repornim. Să vedem ce s-a întâmplat:

# ifconfig stge0: steaguri = 8843 mtu 1500 opțiuni=8209b eter 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 masca de rețea 0xffffff00 difuzat 9 .9 .9 .255 media : selecție automată Ethernet (100baseTX ) stare: activ rl0: flags = 8943 mtu 1500 opțiuni = 3808 eter 00 :50 :fc :ef:4d: 75 media : selecție automată Ethernet (100baseTX ) status : activ ral0: flags = 8843 metric 0 mtu 2290 eter 00 :26 :5a: 77 :38 :ba media : IEEE 802 .11 stare: rulează lo0: steaguri = 8049 metric 0 mtu 16384 opțiuni = 3 inet 127 .0 .0 .1 masca de rețea 0xff000000 bridge0:flags = 8843 mtu 1500 eter a6: 09 :ed :c1: 23 :38 inet 192 .168 .0 .1 masca de rețea 0xffffff00 difuzat 192 .168 .0 .255 id 00 :00 :00 :00 :00 :00 prioritate 32768 Hellotime 2 fwddelay 15 maxage 20 holdcnt 6 proto rstp maxaddr 100 pauză 1200 id-ul rădăcină 00 :00 :00 :00 :00 :00 prioritate 32768 ifcost 0 port 0 membru: rl0 steaguri = 143 ifmaxaddr 0 port 2 prioritate 128 costul traseului 200000 membru: wlan0 steaguri = 143 ifmaxaddr 0 port 6 prioritate 128 costul traseului 370370 wlan0:steaguri= 8943 mtu 1500 eter 00 :26 :5a: 77 :38 :ba media : IEEE 802 .11 Modul de selecție automată Ethernet wireless 11g stare: rulează ssid canal 1 (2412 MHz 11g) bssid 00 :26 :5a: 77 :38 :ba țară SUA authmode WPA2/ 802 .11i confidențialitate MIXTA deftxkey 2 AES-CCM 2 :128 -bit AES-CCM 3 :128 -bit txpower 0 scanvalid 60 protmode CTS dtimperiod 1 -dfs

Totul este în regulă, cardurile Wi-Fi și cu fir sunt conectate printr-un pod și adresa IP este atârnată pe acest pod

Să începem configurarea PF. PF vă permite să activați prioritizarea traficului. O scurtă descriere poate fi găsită aici:
http://www.freebsd.org/doc/ru/books/handbook/firewalls-pf.html
creați fișierul /usr/local/etc/pf.conf și aduceți-l în această stare:

# Aici definesc variabile cu care îmi este mai convenabil să scriu un script. WAN="stge0" LAN="bridge0" LAN_POOL=" 192 .168 .0 .0 /24 „WANIP=" 9 .9 .9 .9 „SERVER=" 192 .168 .0 .3 „ADMIN=" 192 .168 .0 .2 „RDP_PORT=" 3389 „EXTRDP_PORT=" 33389 " # traficul către și dinspre aceste porturi va fi refuzat pe interfața externă DROP_PORTS="(135: 139 ,445}" # Ce să faci după ce un pachet atinge regula de blocare (blocare) # set block-policy drop - aruncați pachetul și nu faceți nimic # set block-policy reject - aruncați pachetul și trimiteți un mesaj de eroare # gazdei care l-a trimis. setați scăderea politicii de bloc # Nu verifica traficul pe lo0 setați skip pe lo0 # Nu verificați traficul pe interfața bridge0 (nu avem restricții interne) setați skip pe $LAN # „Normalizarea” pachetelor. Descrierea acestei opțiuni, în opinia mea, este suficientă # sunt vagi, dar sperăm că ar trebui să ajute împotriva unor tipuri de atacuri de rețea. freca în toate #Viteza mea este de ~5000 kbps și trebuie să introduceți viteza aici altq pe $WAN priq lățime de bandă 5000Kb coada (priv, altele) # Am 2 cozi # Pentru trafic cu prioritate mai mare (RDP de la server) coada priv qlimit 25 prioritate 14 priq (roșu) # Pentru toți ceilalți coada alte qlimit 30 prioritate 10 priq (implicit) # Dimensiunile cozilor au fost luate, s-ar putea spune, de pe tavan: (Nu prea # concentrați-vă asupra lor, vă rog. Încercați să alegeți singur dimensiunea cozii # activați NAT pe interfața externă pentru rețeaua LAN nat pe $WAN de la $LAN_POOL la orice -> ($WAN ) # Redirecționați un port către server Redirecționați un port diferit de cel standard # pentru a proteja împotriva maimuțelor cu forță brută care scanează porturile standard rdr pe $WAN proto tcp de la oricare la $WANIP \ port $EXTRDP_PORT -> $SERVER portul $RDP_PORT # Întrerupem solicitările ping la adresa noastră blocați rapid pe $WAN proto icmp de la orice la $WANIP icmp-type 8 # Nu ar trebui să existe trafic de la NETBIOS pe interfața externă blocați rapid pe $WAN proto ( tcp udp ) de la oricare la orice port $DROP_PORTS # activați anti-spoof pe interfața WAN # Citez http://openbsd.corebsd.or.id/faq/pf/ru/filter.html: # Adresele sunt falsificate atunci când un atacator falsifică originalul # Adrese IP în pachete, acestea sunt transmise fie ca un shell al adreselor lor reale, # sau uzurpare identitatea unui alt nod din rețea. După ce utilizatorul a fost falsificat # vor putea lansa un atac de rețea fără a expune sursa reală # atacă sau încearcă să obții acces la serviciile de rețea care # limitat la anumite adrese IP. antispoof rapid pentru $WAN #Interziceți tot traficul neautorizat în mod explicit blocheaza tot # ### Trafic de intrare # Trafic privilegiat treceți rapid pe $WAN proto tcp de la oricare către portul $WANIP $EXTRDP_PORT coada priv # Trafic normal trece rapid pe $WAN de la oricare către $WANIP păstrați coada de stat altele # De fapt, prioritizarea în PF nu funcționează în traficul de intrare, dar am regulile # încă a scris. # ### Trafic de ieșire # Trafic privilegiat trece rapid pe $WAN proto tcp de la $WANIP \ portul $EXTRDP_PORT la orice coadă de păstrare a stării priv # Trafic normal trece rapid pe $WAN de la $WANIP la orice coadă de păstrare a stării altele
pf_enable="YES" pf_rules="/usr/local/etc/pf.conf"

și reporniți pf:

# /etc/rc.d/pf reporniți

Verificăm corectitudinea creării regulilor folosind comenzile:

pfctl -sn Regulile NAT existente
pfctl -sr Reguli de difuzare existente
pfctl -ss Legături stabilite
pfctl -si Contoare diverse
pfctl -sa Toate cele de mai sus deodată
pfctl -sq -vvv Afișează starea cozilor

Actualizam porturile folosind portsnap:

# portsnap fetch Se caută oglinzile portsnap.FreeBSD.org... 5 oglinzi găsite. Preluarea etichetei instantanee de la portsnap5.FreeBSD.org... gata. Preluarea metadatelor instantanee... gata. Actualizare de miercuri iunie 15 14 :21 :31 MSD 2011 la joi iul 21 11 :37 :27 MSD 2011 . Preluare 3 patch-uri de metadate.. gata. Aplicarea corecțiilor de metadate... gata. Preluare 3 fișiere de metadate... gata. Preluare 9656 petice..... 10 .... <Часть вывода удалена> ...........9650 ...Terminat. Aplicarea plasturilor... gata. Preluare 1282 porturi sau fișiere noi... gata. # portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES .................<Часть вывода удалена>............. /usr/ports/x11/yelp/ /usr/ports/x11/zenity/ Construirea de noi fișiere INDEX... gata.

Folosim dnscache din pachetul djbdns ca server DNS de cache, deoarece consumă mai puțină memorie și este considerat mai sigur decât serverul DNS BIND inclus în FreeBSD.

Instalați djbdns:

# cd /usr/ports/dns/djbdns && face instalarea curată

Asamblam și instalăm cu următoarele opțiuni:

DUMPCACHE cache persistent pentru dnscache Suport IPV6 IPv6 de Felix von Leitner Patch-ul IGNOREIP ignoreip2 de Russell Nelson Patch jumbo JUMBO de Claudiu Costin [X] Pagini de manual MAN de Gerritt Pape PERSISTENT_MMAP Patch-ul persistent mmap de Lennert Buytenhek [X] Patch de înregistrare SRV SRV de Michael Handler

djbdns va extrage și portul daemontools. daemontools este proiectat pentru a lansa demoni și pentru a le monitoriza activitatea. Adică, dacă un demon aflat sub controlul său „cade”, daemontools îl va reporni.

Creăm grupul dnsusers, care va include utilizatori sub care vor fi lansate dnscache în sine și dnslog (logger pentru djbdns):

creați un utilizator pentru dnslog:

# pw useradd dnslog -s /sbin/nologin -d /dev/null -G dnsusers

creați un folder cu al cărui conținut funcționează daemontools:

lansați daemontools:

deoarece configurația dnscache este localizată în /usr/local/etc/djbdns, iar daemontools funcționează cu folderul /var/service, facem un link:

# ln -s /usr/local/etc/dnscache /var/service/dnscache

Folderul /usr/local/etc/dnscache/env conține fișiere cu configurație dnscache mai avansată, dar în acest caz suntem destul de mulțumiți de valorile implicite.

Pentru ca serverul să funcționeze normal, trebuie să îi setați adresele serverelor de nivel superior. Pentru fiecare zonă există un fișier cu același nume cu numele zonei, situat în /usr/local/etc/dnscache/root/servers. Fiecare fișier conține adresele IP ale serverelor responsabile pentru această zonă. Deoarece redirecționăm orice solicitare către serverele DNS ale furnizorului, scriem numele acestora într-un fișier numit „@” (responsabil pentru zona rădăcină).

Reporniți dnscache:

Instalați serverul DHCP (l-am construit cu următoarele opțiuni):

# cd /usr/ports/net/isc-dhcp41-server && face instalarea curată Opțiuni pentru isc-dhcp41-server 4 .1 .e_1, 2 DHCP_IPV6 Activați suport pentru IPv6 [X] DHCP_PARANOIA Activați suport pentru chroot DHCP_LDAP Suport backend LDAP experimental DHCP_LDAP_SSL Suport conexiune LDAP prin SSL/TLS

Aducem configurația serverului DHCP (/usr/local/etc/dhcpd.conf) în următoarea stare:

adresa locală 192 .168 .0 .1 ; Timp de închiriere implicit 600 ; timp-maxim de închiriere 7200 ; autoritar; ddns-update-style interimar; log-facilitate local7; subrețea 192 .168 .0 .0 mască de rețea 255 .255 .255 .0 ( gamă 192 .168 .0 .10 192 .168 .0 .250 ; routere opționale 192 .168 .0 .1 ; # Dacă aveți SAMBA activat, atunci puteți încerca să oferiți clienților # și valoarea serverului WINS. # opțiune netbios-name-server 192.168.0.1; # avem deja propriul nostru server DNS, așa că îi dăm adresa opțiune domain-name-servers 192 .168 .0 .1 ; } # „legați” anumite adrese MAC la anumite adrese IP administrator gazdă (hardware ethernet 03 :03 :03 :03 :03 :03 ; cu adresă fixă 192 .168 .0 .2 ; ) server gazdă (hardware Ethernet 04 :04 :04 :04 :04 :04 ; cu adresă fixă 192 .168 .0 .3 ; }

Adăugați următoarele linii în /etc/rc.conf:

și porniți serverul DHCP:

Totul e bine. A fost atinsă funcționalitatea celui mai simplu dir-300.

Acțiune