Menu
Jest wolny
rejestracja
Dom  /  NA/ Zmień domyślną bramę freebsd. Konfiguracja routera FreeBSD

Zmień domyślną bramę freebsd. Konfiguracja routera FreeBSD

Wprowadzenie == Pokrótce chciałbym nakreślić plan, którego należy przestrzegać, aby kurs w Internecie dla biura był poprawny i nikt nie błądził na bok. Od razu zauważam, że brama w Uniksie to nie jeden program, ale kilkanaście programów, z których każdy wykonuje swoją akcję i ma własne ustawienia. Używamy: * FreeBSD 7 * natd * named, routed * ipfw * squid * squidGuard * apache * dhcpd Mój serwer testowy jest już w zasięgu lokalna sieć więc wierzę, że sieć zewnętrzna Mam 192.168.0.0/24, a wewnętrzny to 172.16.0.0/16. W końcu liczby nie mają znaczenia - najważniejsze jest znaczenie. Zainstalowałem FreeBSD w minimalnej konfiguracji, a mój plik rc.conf zawiera tylko: hostname = "vm = freepro.local" ifconfig_em0 = "DHCP" linux_enable = "TAK" sshd_enable = "TAK"== Konfiguracja NAT == Mój interfejs zewnętrzny - em0 - domyślnie pobiera swój adres IP przez DHCP ze zwykłego routera o adresie 192.168.1.1. Oczywiście ten sam router działa jako serwer DNS. W pierwszym kroku robię NAT (zawsze na zewnętrznym interfejsie!) I modyfikuję plik /etc/rc.conf w następujący sposób: hostname = "vm = freepro.local" defaultrouter = "192.168.1.1" ifconfig_em0 = "inet 192.168.1.10 maska ​​sieci 255.255.255.0" linux_enable = "TAK" sshd_enable = "TAK" # Brama internetowa ifconfig_em1 = "inet 172.16.0.1 maska ​​sieci 255.255 .0.0 "gateway_enable =" TAK "natd_enable =" TAK "natd_interface =" em0 "#natd_flags =" - f /etc/redirect.conf "firewall_enable =" TAK "firewall_type =" otwórz "#firewall_script =" / etc / firewall . conf "router_enable =" TAK "router =" / sbin / routed "router_flags =" - q" Naprawiłem adres zewnętrzny i ustawiłem wewnętrzny. Teraz naprawmy DNS w pliku /etc/resolv.conf: nameserver 192.168.1.1 To wszystko! Uruchamiamy usługę: # /etc/rc.d/ipfw start # /etc/rc.d/natd start # /etc/rc.d/routed start # /etc/rc.d/named start A internet działa! Oczywiście odręcznie przepisujemy klientowi: IP: 172.16.0.2 MASKA: 255.255.0.0 BRAMA: 172.16.0.1 DNS1: 192.168.1.1 Oczywiście to bardzo zła brama. Po pierwsze nie jest w ogóle chroniony, a po drugie nie jest w ogóle buforowany, a po trzecie przekierowuje wszystkie żądania DNS „w górę” i nie ma możliwości uzyskania żadnych statystyk ani zarządzania czymkolwiek. Ale z drugiej strony jest to bardzo lekka i szybka bramka, a z dalszych ustawień jej wydajność tylko wzrośnie, a nie spadnie. Przy okazji, zauważ, że dwie linie są już zakomentowane w nowym rc.conf. Pierwszy komentarz - pomoże mi w przyszłości "przekierować" niektóre porty na zewnątrz - wewnątrz sieci. Te. na przykład, jeśli chcę uzyskać dostęp przez ssh do komputera klienckiego 172.16.0.2, będę musiał utworzyć taki plik: # PLIK /etc/redirect.conf port_przekierowania tcp 172.16.0.2:22 2222 Oznacza to, że łącząc się z serwerem na zewnątrz na porcie 2222, dostanę się do maszyny w sieci lokalnej właśnie na porcie 22 (ssh). Drugi komentarz to moja osobista konfiguracja firewalla, dopracowana i przetestowana. == Konfiguracja ipfw == Moja konfiguracja dla ipfw at ten etap To wygląda tak: #! / bin / sh # Konfiguracja IPFW dla prostego serwera NAT /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 "############################ # ##################### # Wyczyść ########################## # ####################### $ (cmd) -f flush $ (cmd) stół 0 flush $ (cmd) stół 1 flush ##### # ################################################## ## Biała / Czarna lista # ########################################## #### $ (cmd) tabela 0 dodaj 172.16.0.12 $ (cmd) tabela 1 dodaj 172.16.0.13 ########################## #### #################### # Loopback ######################## #### ##################### $ (cmd) dodaj zezwolenie na ip od dowolnego do dowolnego przez lo0 ############ #### ################################### # Zablokuj świat do prywatnego ######## ### ####################################### $ (cmd) dodaj odmów ip z dowolna do 127.0 .0.0 / 8 $ (cmd) dodaj odrzuć ip z 127.0.0.0/8 do dowolnego # $ (cmd) dodaj odrzuć ip z 172.16.0.0/16 do dowolnego przez $ (IfOut) # $ (cmd) dodaj d eny ip z 192.168.1.0/24 do any via $ (IfOut) $ (cmd) dodaj deny ip z any do 10.0.0.0/8 przez $ (IfOut) # $ (cmd) dodaj deny ip z any do 172.16.0.0/ 12 via $ (IfOut) # $ (cmd) dodaj ip odmowy z any do 192.168.0.0/16 przez $ (IfOut) $ (cmd) dodaj ip blokady z dowolnego do 0.0.0.0/8 przez $ (IfOut) $ (cmd ) dodaj ip odmowy z any do 169.254.0.0/16 przez $ (IfOut) $ (cmd) dodaj ip odrz. / 4 przez $ (IfOut) $ (cmd) dodaj odmowy ip z dowolnego do 240.0.0.0/4 przez $ (IfOut) ####################### ################################################## ################# ############################## $ (cmd ) dodaj zabroń icmp z any do dowolnego fraga $ (cmd) dodaj zabroń log icmp z any do 255.255.255.255 in via $ (IfOut) $ (cmd) dodaj zabroń log icmp z any do 255.255.255.255 out via $ (IfOut) # ################### ############################### # NAT ################## ############################## ### $ (cmd) dodaj przekierowanie 8668 ip z $ (NetIn) na dowolne przez $ (IfOut) $ (cmd) dodaj przekierowanie 8668 ip z dowolnego na $ (IpOut) przez $ (IfOut) # $ (cmd) dodaj przekierowanie 8668 ip z dowolnego na dowolny przez $ (IfOut) ######################## ########################## # Blokuj prywatne dla świata ################### ############################### $ (cmd) dodaj deny ip od 10.0.0.0/8 do dowolnego przez $ (IfOut ) # $ (cmd) dodaj ip odmowy z 172.16.0.0/12 do dowolnego przez $ (IfOut) # $ (cmd) dodaj ip odmowy z 192.168.0.0/16 do dowolnego przez $ (IfOut) $ (cmd) dodaj ip odmowy od 0.0.0.0/8 do dowolnego via $ (IfOut) $ (cmd) dodaj deny ip z 169.254.0.0/16 do dowolnego via $ (IfOut) $ (cmd) dodaj deny ip z 192. 0.2.0 / 24 do dowolnego przez $ (IfOut) $ (cmd) dodaj odmowy ip z 224.0.0.0/4 do dowolnego przez $ (IfOut) $ (cmd) dodaj odrzuć ip z 240.0.0.0/4 do dowolnego przez $ ( IfOut) ############################################### # ## Biała lista ############################################# ## ## $ (cmd) dodaj allow all z "table (0)" do any $ (cmd) dodaj allow all od any do "table (0)" ############## ## ################################## # Czarna lista ############ ## ###################################### $ (cmd) dodaj odrzuć wszystkie z "tabeli (1 )" do dowolnego ############################################ #### # Bądź ustalony ########################################## ##### ## $ (cmd) dodaj zezwolenie tcp od dowolnego do mnie ustanowionego ############################## ###### ############## # Główny ############################ ###### ################ $ (cmd) dodaj allow ip from any to any frag $ (cmd) add allow icmp from any to $ (IpOut) icmptypes 0, 8.11 # dns $ ( cmd) dodaj allow tcp from any to $ (IpOut) konfiguracja dst-port 53 $ (cmd) dodaj allow udp from any to $ (IpOut) dst-port 53 $ (cmd) dodaj allow udp z $ (IpOut) 53 do dowolnego $ (cmd) dodaj allow udp z $ (IpOut) do dowolnego dst-port 53 keep-state # dns-client $ (cmd) dodaj allow tcp od any do $ (NetIn) konfiguracja dst-port 53 $ (cmd) dodaj allow udp from any to $ (NetIn) dst-port 53 $ (cmd) dodaj allow udp from $ (NetIn) 53 do any $ (cmd) add allow udp from $ (NetIn) do dowolnego dst-port 53 keep-state # time $ (cmd) dodaj allow udp from $ (IpOut) do dowolnego dst-port 123 keep-state # time-client $ (cmd) add allow udp from $ (NetIn) ) do dowolnego portu dst-port 123 keep-state # ssh-in $ (cmd) dodaj allow tcp from any do $ (IpOut) 22 $ (cmd) dodaj allow tcp from $ (IpOut) 22 do dowolnego # ssh-out $ ( cmd) dodaj allow tcp od $ (IpOut) do dowolnych 22 $ (cmd) dodaj allow tcp od dowolnych 22 do $ (IpOut) # http $ (cmd) dodaj allow tcp od $ (IpOut) do dowolnego portu dst 80 # http -client $ (cmd) dodaj allow tcp od $ (NetIn) do dowolnego portu dst 80 $ (cmd) dodaj allow tcp od dowolnych 80 do $ (NetIn) # smtp $ (cmd) dodaj allow tcp od any do $ (IpOut ) konfiguracja dst-port 25 # forward 8080 do 81 $ (cmd) dodaj zezwolenie tcp z dowolnego na $ (IpOut ) dst-port 8080 $ (cmd) dodaj allow tcp from $ (IpOut) 8080 do any $ (cmd) dodaj allow tcp from any to $ (NetIn) dst-port 81 $ (cmd) dodaj allow tcp from $ (NetIn) 81 do dowolnego # out $ (cmd) dodaj odrzuć log tcp od dowolnego do dowolnego przychodzącego przez $ (IfOut) konfiguracja # $ (cmd) dodaj zezwalaj na tcp od dowolnego do dowolnej konfiguracji ############# ##################################### # Lokalna sieć ########## ########################################## $ (cmd) dodaj zezwól na wszystko od dowolnego do dowolna przez $ (IfIn) ######################################### # ##### # Odrzuć wszystkie ######################################## ## ####### $ (cmd) dodaj odrzuć wszystkie od dowolnego do dowolnego Specjalnie skomentowałem niektóre linie, które przybijają pakiety z sieci lokalnych 192, 172 na interfejsie zewnętrznym, ponieważ mój interfejs zewnętrzny jest interfejsem lokalnym. W rzeczywistości te linie są potrzebne. Chodźmy dalej. == Konfigurowanie squida == Teraz potrzebuję squida - buforującego serwera proxy zdolnego do kompetentnej dystrybucji Internetu do wszystkich użytkowników zgodnie z regułami ustalonymi przez administratora systemu. pkg_add -r squid Uwaga: oczywiście bardziej poprawne jest budowanie oprogramowania ze świeżych i zaktualizowanych portów, ale oszczędzamy czas, więc instalujemy w pakietach. Zaktualizujemy jakiś czas później z portupgrade. Dla squida robimy najprostsze ustawienie - edytuj plik /usr/local/etc/squid/squid.conf # Minimalna konfiguracja SQUID acl all src 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/8 acl localnet src 172.16.0.0/255.255.0.0 acl SSL_ports port 443 acl CONNECT metoda CONNECT http_dostęp zezwól menedżerowi localhost http_dostęp zezwól na localnet http_dostęp odmowa menedżer http_dostęp odmowa! acl QUERY urlpath_regex cgi-bin \? cache deny QUERY katalog_podręcznika 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 Serwer ^ Apache broken_vary_encoding allow cache_efektywny_użytkownika squid cache_efektywna_grupa squid widoczna_nazwa hosta vm-freepro.local icp_port 0 katalog_błędów / usr / lokalny / etc / squid / błędy / angielski coredump / lokalny katalog / usquid Celowo usunąłem komentarze z pliku konfiguracyjnego, bo jest ich niewiele, ale dużo. Nie zapomnij poprawić /etc/rc.conf przez dodanie linii: squid_enable = "TAK" Następnie przebuduj pamięć podręczną i uruchom squid: # squid -z # /usr/local/etc/rc.d/squid start Pierwsza rzecz, którą robimy po instalacje kalmarów- zabraniamy lokalnym użytkownikom dostępu do Internetu przez port 80. Przenosimy port 80 na 3128 - tj. sprawiamy, że wszyscy użytkownicy przechodzą tylko przez kałamarnicę. Tutaj jest duży mały szkopuł. Można to zrobić tylko przez wprowadzenie obsługi IPFW do jądra, w przeciwnym razie przekazywanie nie będzie działać. Tak, oznacza to, że teraz musimy zbudować własne jądro! Nie jest to łatwe zadanie, ale przydaje się – po złożeniu rdzenia szybkość jego działania powinna wzrosnąć, a głośność zauważalnie zmniejszyć. Najpierw użyj sysinstall, aby zainstalować źródła jądra: # sysinstall Przejdź do / Configure / Distributions Zaznacz w sekcji src [X] base [X] sys Teraz mamy źródła jądra w folderze /usr/src. Następnie skopiuj konfigurację GENERIC do „naszego” MYKERNEL i edytuj MYKERNEL: # cd / usr / src / sys / i386 / conf # cp GENERIC MYKERNEL # mcedit MYKERNEL Podczas edycji konfiguracji pamiętaj o określeniu następujących opcji: # Włączenie zapory w opcjach jądra IPFIREWALL # Włączenie opcji mechanizmu "log" IPFIREWALL_VERBOSE # Ograniczenie logów - opcje ochrony przed przepełnieniem IPFIREWALL_VERBOSE_LIMIT = 50 # Włączenie opcji mechanizmu przekazywania pakietów IPFIREWALL_FORWARD # Włączenie mechanizmu translacji Adresy NAT opcje IPDIVERT # Włącz opcje ograniczania szybkości kanału DUMMYNET A także usuń cały niepotrzebny „sprzęt”, którego w rzeczywistości nie masz. Teraz budujemy jądro. Ta operacja może zająć trochę czasu i może zakończyć się błędem wymagającym zainstalowania dodatkowych źródeł z sysinstall w zależności od tego, co napisałeś w konfiguracji. Mamy nadzieję, że nie ma tam nic zbędnego. # cd / usr / src # make buildkernel KERNCONF = MYKERNEL # make installkernel KERNCONF = MYKERNEL Teraz musisz ponownie uruchomić komputer, ale przed ponownym uruchomieniem koniecznie przeczytaj instrukcję na wypadek niepowodzenia ponownego uruchomienia. Oczywiście chciałbym, żeby tak się nie stało. Więc przeładuj i ponownie edytuj /etc/firewall.conf. #! / bin / sh # Konfiguracja IPFW dla serwera 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" ############################## ### ################# # Wyczyść ############################ ### ################### $ (cmd) -f flush $ (cmd) stół 0 flush $ (cmd) stół 1 flush ######## ## ####################################### # Biała / Czarna lista #### ### ################################################## # $ (cmd) tabela 0 dodaj 172.16.0.2 $ (cmd) tabela 1 dodaj 172.16.0.13 ############################# ### ################ # Loopback ############################# ## ################### $ (cmd) dodaj zezwolenie na ip od dowolnego do dowolnego przez lo0 ################ ### ################################# # Zablokuj świat jako prywatny ########### #### #################################### $ (cmd) dodaj deny ip z dowolnego do 127.0.0.0/8 $ (cmd) dodaj deny ip z 127.0.0.0/8 do dowolnego # $ (cmd) dodaj deny ip z 172.16.0.0/16 do dowolnego via $ (IfOut) # $ (cmd) dodaj deny ip z 19 2.168.1.0/24 do dowolnego przez $ (IfOut) $ (cmd) dodaj odmowy ip z dowolnego do 10.0.0.0/8 przez $ (IfOut) # $ (cmd) dodaj odmowy ip z dowolnego do 172.16.0.0/12 przez $ (IfOut) # $ (cmd) dodaj ip odmowy z any do 192.168.0.0/16 przez $ (IfOut) $ (cmd) dodaj ip blokady z dowolnego do 0.0.0.0/8 przez $ (IfOut) $ (cmd) dodaj odrzuć ip z any do 169.254.0.0/16 przez $ (IfOut) $ (cmd) dodaj ip odmowy z any do 192.0.2.0/24 przez $ (IfOut) $ (cmd) dodaj ip deny z any do 224.0.0.0/4 przez $ (IfOut) $ (cmd) dodaj odmowy ip z dowolnego do 240.0.0.0/4 przez $ (IfOut) ########################## ######################## # ICMP ######################## ########################## $ (cmd) dodaj odmów icmp z dowolnego do dowolnego fragu $ (cmd) dodaj odrzuć log icmp z dowolnego do 255.255 .255.255 in via $ (IfOut) $ (cmd) dodaj odmowy log icmp z any do 255.255.255.255 out via $ (IfOut) ###################### ################################################## ########## ############################## $ (cmd) dodaj przekierowanie 8668 ip z $ (NetIn) do dowolnego przez $ (IfOut) $ (cmd) dodaj przekierowanie 8668 ip z dowolnego na $ (IpOut) przez $ ( IfOut) # $ (cmd) dodaj przekierowanie 8668 ip z dowolnego na dowolny przez $ (IfOut) ############################## ##################### # Blokuj prywatne dla świata ######################## # ######################### $ (cmd) dodaj deny ip z 10.0.0.0/8 do dowolnego przez $ (IfOut) # $ (cmd ) dodaj ip odmowy z 172.16.0.0/12 do dowolnego przez $ (IfOut) # $ (cmd) dodaj ip odrz. 8 do dowolnego przez $ (IfOut) $ (cmd) dodaj odmowy ip z 169.254.0.0/16 do dowolnego przez $ (IfOut) $ (cmd) dodaj odmowy ip z 192. 0.2.0 / 24 do dowolnego przez $ (IfOut) $ (cmd) dodaj odmowy ip z 224.0.0.0/4 do dowolnego przez $ (IfOut) $ (cmd) dodaj odrzuć ip z 240.0.0.0/4 do dowolnego przez $ ( IfOut) ############################################### # ## Biała lista ############################################# ## ## $ (cmd) dodaj allow all z "table (0)" do any $ (cmd) dodaj allow all od any do "table (0)" ############## ## ################################## # Czarna lista ############ ## ###################################### $ (cmd) dodaj odrzuć wszystkie z "tabeli (1 )" do dowolnego ############################################ #### # Bądź ustalony ########################################## ##### ## $ (cmd) dodaj zezwolenie tcp od dowolnego do mnie ustanowionego ############################## ###### ############## # Główny ############################ ###### ################ $ (cmd) dodaj allow ip from any to any frag $ (cmd) add allow icmp from any to $ (IpOut) icmptypes 0, 8.11 # dns $ ( cmd) dodaj allow tcp from any to $ (IpOut) konfiguracja dst-port 53 $ (cmd) dodaj allow udp from any to $ (IpOut) dst-port 53 $ (cmd) dodaj allow udp z $ (IpOut) 53 do dowolnego $ (cmd) dodaj allow udp z $ (IpOut) do dowolnego dst-port 53 keep-state # dns-client $ (cmd) dodaj allow tcp od any do $ (NetIn) konfiguracja dst-port 53 $ (cmd) dodaj allow udp from any to $ (NetIn) dst-port 53 $ (cmd) dodaj allow udp from $ (NetIn) 53 do any $ (cmd) add allow udp from $ (NetIn) do dowolnego dst-port 53 keep-state # time $ (cmd) dodaj allow udp from $ (IpOut) do dowolnego dst-port 123 keep-state # time-client $ (cmd) add allow udp from $ (NetIn) ) do dowolnego portu dst-port 123 keep-state # ssh-in $ (cmd) dodaj allow tcp from any do $ (IpOut) 22 $ (cmd) dodaj allow tcp from $ (IpOut) 22 do dowolnego # ssh-out $ ( cmd) dodaj allow tcp od $ (IpOut) do dowolnych 22 $ (cmd) dodaj allow tcp od dowolnych 22 do $ (IpOut) # http $ (cmd) dodaj allow tcp od $ (IpOut) do dowolnego portu dst 80 # http -client # $ (cmd) dodaj allow tcp od $ (NetIn) do dowolnego portu dst 80 # $ (cmd) dodaj allow tcp od dowolnych 80 do $ (NetIn) # squid $ (cmd) dodaj allow all z $ (NetIn) ) do $ (IpIn) 3128 przez $ (IfIn) $ (cmd) dodaj fwd $ (IpIn), 3128 tcp z $ (NetIn) do dowolnych 80 # smtp $ (cmd) add allow tcp from any to $ (IpOut) konfiguracja dst-port 25 # out $ (cmd) add deny log tcp from any to any in via $ (IfOut) setup # $ (cmd) add allow tcp z dowolnego do dowolnego ustawienia ########################################## # #### # Sieć lokalna ######################################### ## ###### $ (cmd) dodaj zezwolenie na wszystko od dowolnego do dowolnego przez $ (IfIn) ######################### ### ##################### # Odrzuć wszystkie ####################### ### ######################### $ (cmd) dodaj odrzuć wszystkie od dowolnego do dowolnego Restartujemy usługi i sprawdzamy - wszystko działa, a klienci sami niezauważeni przechodzą przez system kontroli. Na razie odłożymy konfigurację kontroli dostępu i rozwiążemy kolejną ważną kwestię: uzyskanie DNS. == Konfiguracja DNS == Teraz nasi klienci mają zarejestrowany adres DNS 192.168.1.1 - zewnętrzny do sieci wewnętrznej 172.16.0.0/16. Można powiedzieć, że klienci wspinają się nad serwerem tysiące razy dziennie w poszukiwaniu adresów. Udoskonalmy system - ustawimy buforujący serwer DNS, który pozwoli nam uniknąć połączeń typu end-to-end na zewnątrz, oszczędzi nam ruch i przyspieszy pracę. Nie zapomnij wcześniej odmówić dostępu na zewnętrznym porcie 53 dla wszystkich klientów. W pliku /etc/namedb/named.conf edytuj parametry nasłuchu, forwarderów: options (katalog "/ etc / namedb"; pid-file "/ var / run / named / pid"; dump-file "/var/dump/named_dump.db"; plik Statistics "/var/stats/named.stats "; nasłuch (127.0.0.1; 172.16.0.1;); wyłącz-puste-linie" 255.255.255.255.IN-ADDR.ARPA "; wyłącz-puste-linie" 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 "; wyłącz-puste-linie" 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 "; forwardery (192.168.1.1;); // adres źródłowy zapytania * port 53;); W pliku /etc/resolv.conf najpierw utwórz lokalny DNS: serwer nazw 127.0.0.1 serwer nazw 192.168.1.1 W /etc/firewall.conf zabroń klientom korzystania z zewnętrznego DNS (edytuj sekcje z komentarzem dns-client) # dns-client # Wyłącz zewnętrzny DNS # $ (cmd) add allow tcp from any to $ (NetIn) konfiguracja dst-port 53 # $ (cmd) add allow udp from any to $ (NetIn) dst-port 53 # $ ( cmd) add allow udp from $ (NetIn) 53 to any # $ (cmd) add allow udp from $ (NetIn) to any dst-port 53 keep-state # Allow only local DNS $ (cmd) add allow tcp from $ ( NetIn) do $ (IpIn) konfiguracja dst-port 53 $ (cmd) dodaj zezwolenie na udp z $ (NetIn) do $ (IpIn) dst-port 53 Uruchom ponownie: # /etc/rc.d/nazwany restart # /etc/rc.d/ipfw restart Wróćmy teraz do kwestii kontroli dostępu do Internetu. Istnieją dwa rozwiązania na raz. Najpierw skonfiguruj zasady acl w programie squid. Po drugie, zainstaluj i skonfiguruj squidGuard, dedykowaną aplikację do kontroli dostępu. Zacznijmy w kolejności. == Konfiguracja squida acl == acl to reguły w konfiguracji squida, które są dość skuteczne w ograniczaniu przepływ informacji przechodząc przez serwer proxy. Krótko mówiąc - dzięki ACL w mgnieniu oka możesz zabić każdego lewaka, który przeszkadza w pracy. Wszystkie ustawienia acl są domyślnie zapisywane w pliku squid.conf, ale można je również przenieść do pliki zewnętrzne... Na przykład podam część konfiguracji: # Zabraniamy wszystkim looterom plików udostępnienia acl dstdomain .rapidshare.com .webfile.ru http_access deny share # Zabraniamy wszystkim żądania witryn przez IP acl ip_urls url_regex http: // + \. + \. + \. + [: /] Http_access deny ip_urls # Ograniczenia grupowe 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 (podaj dowolne) group_strict (podaj lokalne brak)) Okazuje się świetnie. Ale oczywiste jest, że w dobrym proxy takich reguł powinno być wiele – jedna reguła na każdy „dołek”. Znajdowanie dziur i przepisywanie ich po kolei jest żmudne, ale jak zwykle jest gotowe rozwiązanie - squidGuard - aplikacja filtrująca z ogromnym zestawem reguł, które w zasadzie można nawet uzupełniać zgodnie z harmonogramem crona . Badamy ten problem. == Konfiguracja squidGuard == Teraz spróbujmy zainstalować i skonfigurować squidGuard. Nie jest to trudne, ale musisz być ostrożny. Więc: # pkg_add -r squidGuard # cp /usr/local/etc/squid/squidGuard.conf.sample /usr/local/etc/squid/squidGuard.conf Plik squidGuard.conf zawiera wszystkie ustawienia, z których niektóre będą musiały zostać natychmiast poprawione, a mianowicie: # Plik SquidGuard.conf ... source sample-clients (ip 172.16.0.0/16) ... Powiążmy squidGuard z squid - dodajmy 3 linie do pliku squid.conf: redirector_bypass na redirect_program / usr / local / bin / squidGuard -c /usr/local/etc/squid/squidGuard.conf redirect_children 10 squidGuard przechowuje swoją bazę konfiguracyjną w /var/db/squidGuard. Przed pierwszym uruchomieniem lub po wprowadzeniu zmian należy go przebudować: # rehash # squidGuard -C all # chown -R squid: squid / var / db / squidGuard # /usr/local/etc/rc.d/squid restart Wszystko jest w porządku, ale gdy klient próbuje wejść na zabronioną stronę, na przykład http://3warez.com/, widzimy hamulce. I chciałbym otrzymać zrozumiałą wiadomość. Do tego potrzebujemy apache. == Konfiguracja apache == Jak już wspomniano, potrzebujemy apache do wyświetlania informacji o zablokowanych adresach i przyczynach zablokowania. Robimy jak zwykle: # pkg_add -r apache22 # echo "apache22_enable =" TAK "" >> /etc/rc.conf Ustawienia Apache znajdują się w pliku /usr/local/etc/apache22/httpd.conf. Zanim zaczniesz, musisz sprawdzić dyrektywy DocumentRoot i ServerName - szczegóły pominę, ponieważ w Internecie jest wiele artykułów na temat konfigurowania tego serwera. Gotowe w 1 sek. Początek: # echo "Odmowa dostępu"> /usr/local/www/apache22/data/index.html # /usr/local/etc/rc.d/apache22 start Poprawmy trochę konfigurację squidGuard.conf: # Na samym końcu pliku acl (.....domyślnie (przekierowanie http://172.16.0.1/index.html))== Konfiguracja dhcpd == A teraz zbliżamy się do końca. Sieć jest skonfigurowana i działa wspaniale. Wszystko jest pod kontrolą, wszystko jest ściśle ograniczone. Ale po batu nadszedł czas, aby zaoferować klientom także marchewkę – w postaci rozsyłania automatycznych adresów DHCP. Dobry administrator oczywiście też tutaj oszukuje - będzie rozprowadzał adresy tylko przez MACa, ale my po prostu dołożymy do tego trochę rodzynek. # pkg_add -r isc-dhcp3-server # cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf Dodaj wiersze do pliku /etc/rc.conf: dhcpd_enable = "TAK" dhcpd_flags = "- q" dhcpd_ifaces = "em1" Musisz także naprawić najważniejszy plik config /usr/local/etc/dhcpd.conf: opcja nazwa-domeny "example.com"; opcja serwery nazw domen 172.16.0.1; opcja maska ​​podsieci 255.255.255.0; domyślny czas dzierżawy 3600; max-czas najmu 86400; styl aktualizacji ddns brak; podsieć 172.16.0.0 maska ​​sieci 255.255.0.0 (zakres 192.16.0.11 172.16.0.15; opcjonalne routery 172.16.0.1;) Włączamy prąd: # /usr/local/etc/rc.d/isc-dhcpd start To chyba wszystko, co najważniejsze. Ten artykuł nie twierdzi, że jest kompletny i znaczący, ale pokrótce opisuje kroki, które należy wykonać, aby przywrócić serwer do stanu roboczego. Dalej - tylko strojenie i ponowne strojenie. Nie zapominaj, że nie jest to jedyny sposób na konfigurację serwera - w unixie zawsze jest alternatywa i możesz korzystać z zupełnie innych aplikacji.

ALEXEY BEREZHNOY

Konfiguracja bramy internetowej w oparciu o FreeBSD

Używanie FreeBSD na małych routerach do komunikacji ze światem zewnętrznym już dawno przestało być czymś wyjątkowym. Ten łatwy w obsłudze, oszczędny w zasobach i nie wymagający konserwacji system operacyjny jest prawie idealny do takich zadań.

Potrzebujemy

  • Sprzęt komputerowy... Do przeniesienia sieci wewnętrznej do Internetu wystarczy komputer Pentium III 600 MHz, 256 MB RAM, 10 GB HDD, 2 karty sieciowe. Konfiguracja jest brana z marginesem, do pełnoprawnego działania małej sieci biurowej (około 50 użytkowników) wystarczyłby Pentium II 400 MHz ze 128 MB RAM. Ale w przyszłości możesz chcieć zainstalować np. serwer proxy na tej samej bramie, lepiej wybrać konfigurację wyższego poziomu.
  • System operacyjny: FreeBSD 5.5 lub 6.1.
  • Dodatkowo: z powodu ten komputer podlega ciągłemu użytkowaniu, polecam dostarczać go wewnątrz etui dodatkowe wentylatory w celu zapewnienia wymuszonego nadmuchu/odpowietrzenia powietrza chłodzącego. Prawie wszystkie nowoczesne obudowy ATX pozwalają to zrobić.

Ponieważ wszystkie niezbędne moduły są zawarte w system operacyjny, nie potrzebujemy niczego więcej.

Konfiguracja interfejsów sieciowych

Konieczne jest wyjaśnienie nazw interfejsów kart sieciowych, po których system operacyjny je rozpoznaje.

# ifconfig

Coś takiego powinno się pojawić:

rl0: flagi = 8843 mtu 1500

Opcje = 8

Eter 00: xx: xx: xx: xx: xx

Status: aktywny

xl0: flagi = 8843 mtu 1500

Opcje = 9

Eter 00: zz: zz: zz: zz: zz

Media: automatyczny wybór Ethernet (100baseTX)

Status: aktywny

plip0: flagi = 108810 mtu 1500

lo0: flagi = 8049 mtu 16384

Inet6 :: 1 przedrostek dł. 128

Komputer posiada dwie karty sieciowe o nazwach interfejsów rl0 i xl0.

W naszym przypadku interfejs rl0 będzie "wyglądał" w świat zewnętrzny a xl0 przechodzi do sieci wewnętrznej. adres IP interfejs wewnętrzny: 192.168.9.2, maska ​​podsieci 255.255.255.0, nazwa interfejsu xl0; Adres IP interfejsu zewnętrznego to 83.xxx.xxx.xxx, maska ​​podsieci to 255.255.255.224, a nazwa interfejsu to rl0.

Możesz dowiedzieć się, które karty sieciowe jakich producentów odpowiadają określonym adresom sieciowym, przeglądając plik GENERIC w katalogu /usr/src/sys/i386/conf:

# więcej / usr / src / sys / i386 / conf / GENERIC

Znajdujemy w nim odpowiednie linie:

urządzenie rl # RealTek 8129/8139

urządzenie xl # 3Com 3c90x (`` Boomerang "", "Cyklon" ")

Tak więc interfejs rl0 odpowiada karcie sieciowej RealTek 8129/8139 i jej odpowiednikom. Interfejs sieciowy xl0 jest zgodny z kartą sieciową 3Com.

Powinniśmy również wspomnieć o pliku GENERIC. Jest to plik konfiguracyjny jądra instalowany domyślnie podczas instalacji FreeBSD. Jest zorganizowany tak, aby system mógł obsługiwać większość najczęściej używanych urządzeń, w tym określone karty sieciowe. Bardzo często kolejne modyfikacje jądra są budowane na zmodyfikowanej kopii tego pliku. W takim przypadku zrobimy tylko to:

  • Brama dostawcy — domyślnie 83.xxx.xxx.1.
  • Sieć zawiera komputery użytkowników - 192.168.9.31, 192.168.9.32.
  • Naszą domeną (warunkowo) jest naszadomena.ru.
  • Nazwa hosta (komputera) to ourhost.ourdomain.ru.

Konfigurujemy karty sieciowe. Możesz użyć narzędzia sysinstall (/stand/sysinstall dla FreeBSD 5.5 i /usr/sbin/sysinstall dla FreeBSD 6.1) Ale ponieważ znamy wszystkie niezbędne parametry, aby uprościć proces i zaoszczędzić czas, ustawimy parametry, edytując odpowiednie pliki konfiguracyjne.

Ustawienia interfejsu sieciowego FreeBSD są przechowywane w pliku /etc/rc.conf. Otwórz go do edycji:

# vi /etc/rc.conf

I dodaj następujące linie:

# Ustaw interfejs wewnętrzny

ifconfig_xl0 = "inet 192.168.9.2 maska ​​sieci 255.255.255.0"

# Ustaw interfejs zewnętrzny

ifconfig_rl0 = "inet 83.xxx.xxx.xxx maska ​​sieci 255.255.255.224"

# Ustaw domyślną bramę dostawcy

router domyślny = "83.xxx.xxx.1"

# Nazwa hosta

nazwa hosta = "naszhost.ourdomain.ru"

# Wskazujemy, że serwer będzie działał jako router

gateway_enable = "TAK"

Następnie ponownie uruchamiamy komputer:

# restart

V ten moment komputer nie musiał być ponownie uruchamiany. Ale chcemy mieć pewność, że nasze interfejsy są poprawnie zainstalowane i działają, więc nadal polecam ponowne uruchomienie.

Po załadowaniu sprawdzamy:

# ifconfig

Dane wyjściowe polecenia ifconfig:

rl0: flagi = 8843 mtu 1500

Opcje = 8

Inet6 fe80 :: 215: 58ff: fe3e: 8fb1% rl0 przedrostek dł. 64 scopeid 0x1

Inet 83.xxx.xxx.xxx maska ​​sieci 0xffffffe0 transmisja 83.xxx.xxx.yyy

Eter 00: xx: xx: xx: xx: xx

Media: automatyczny wybór Ethernet (100baseTX)

Status: aktywny

xl0: flagi = 8843 mtu 1500

Opcje = 9

Inet6 fe80 :: 20a: 5eff: fe62: ade2% xl0 prefixlen 64 scopeid 0x2

Inet 192.168.9.2 maska ​​sieci 0xffffff00 rozgłaszanie 192.168.9.255

Eter 00: zz: zz: zz: zz: zz

Media: automatyczny wybór Ethernet (100baseTX)

Status: aktywny

plip0: flagi = 108810 mtu 1500

lo0: flagi = 8049 mtu 16384

Inet6 :: 1 przedrostek dł. 128

Inet6 fe80 :: 1% lo0 przedrostek dł 64 skopid 0x4

Inet 127.0.0.1 maska ​​sieci 0xff000000

Moim zdaniem plik rc.conf można nazwać plikiem konfiguracji klucza. Bardzo duża liczba parametrów używanych przez system jest ustawiana w postaci odpowiednich zmiennych w tym pliku. W tym ustawienia dla używanych przez nas interfejsów sieciowych, zapory i NAT.

Konfiguracja bramy

Użyjemy natywnej zapory sieciowej FreeBSD IPFW. Aby to zrobić, musimy wprowadzić pewne zmiany w rdzeniu systemu. Jeśli masz dodatkowe pytania w sprawie rekompilacji jądra radzę przeczytać dodatkowy materiał: http://freebsd.org.ru/how-to/kernelconfig.html.

Zauważ, że musisz użyć źródeł jądra dla odpowiedniej architektury. Ponieważ architektura naszego komputera oparta jest na platformie i386, jądro również musi być skompilowane zgodnie z tą platformą. Posiadaczom komputerów na innych platformach polecam odwołanie się do odpowiedniej literatury.

Źródła jądra znajdują się domyślnie w katalogu /usr/src/sys/i386/conf. W związku z tym przechodzimy do tego katalogu:

# cd / usr / src / sys / i386 / conf

Zazwyczaj modyfikowany jest plik GENERIC zawierający domyślne opcje jądra. W tym celu zrób kopię tego pliku:

# cp GENERIC ourkernel

Otwarcie do edycji nowy plik nasze jądro:

# vi ourkernel

i dodaj następujące opcje:

Opcje IPFIREWALL #firewall

Opcje IPFIREWALL_VERBOSE?

#włącz logowanie do syslogd (8)

Opcje IPFIREWALL_FORWARD?

#włącz obsługę przezroczystego proxy

Opcje IPFIREWALL_VERBOSE_LIMIT = 100 #limit gadatliwości

Opcje IPFIREWALL_DEFAULT_TO_ACCEPT #domyślnie zezwalaj na wszystko

Opcje DUMMYNET

Opcje IPDIVERT #przekieruj gniazda

Po dokonaniu zmian możesz rozpocząć ponowną kompilację jądra.

Wykonujemy polecenia:

# skonfiguruj nasze jądro

# cd / usr / src / sys / i386 / kompilacja / ourkernel

# zależeć

# robić

# wykonaj instalację

Przeciążenie:

# restart

Jeśli po ponownym uruchomieniu serwer działa poprawnie, zacznijmy konfigurować firewall.

Do organizacji pracy zapory wykorzystywane są następujące zmienne, dodawane w razie potrzeby do pliku rc.conf.

Zezwala lub odmawia korzystania z zapory:

# Ustaw na TAK, aby włączyć funkcję zapory

firewall_enable = "NIE"

Nazwa i lokalizacja pliku odpowiedzialnego za zainicjowanie zapory.

# Który skrypt uruchomić, aby skonfigurować zaporę sieciową

firewall_script = "/ etc / rc.firewall"

Podczas instalacji tej zasady w „TAK” wyświetlanie jest wyłączone:

firewall_quiet = "NIE"

Włącz / wyłącz rejestrowanie zdarzeń:

firewall_logging = "NIE"

Typ konfiguracji zapory:

firewall_type = "NIEZNANY"

domyślnie FreeBSD używa reguł z pliku /etc/rc.firewall.

Posiada kilka gotowych szablonów:

  • otwarty- zapora przepuszcza wszystkie pakiety.
  • klient- Zalecane, aby chronić tylko ten komputer. Oznacza to, że zapora jest skonfigurowana jako standardowy komputer kliencki. Umożliwia wszystkie połączenia wychodzące i odrzuca wszystkie połączenia przychodzące z wyjątkiem połączeń na porcie 25.
  • prosty- jest przeznaczony do ustawień prostych bramek itp. Czyli jako najprostszy firewall, który chroni sieć wewnętrzną przed penetracją z zewnątrz. Stworzymy bardziej elastyczny system reguł, więc nie będziemy używać tego szablonu.
  • Zamknięte- Dozwolony jest ruch na lokalnym interfejsie lo0. Pozostała część ruchu jest przekazywana przez regułę domyślną. Z reguły jest to zakaz jakiegokolwiek dostępu, z wyłączeniem wewnętrznego interfejsu lo0 (po prostu dozwolony jest dostęp tylko „do siebie”)
  • NIEZNANY- wyłącz ładowanie reguł zapory z domyślnego skryptu konfiguracyjnego. Zapory nie można w żaden sposób konfigurować. To, czy będzie przepuszczać ruch, czy nie, zależy od konfiguracji jądra systemu. Używane domyślnie.

Ta sama zmienna w wartości "filename" - "filename" - może być użyta do ustawienia własnego pliku konfiguracyjnego dla zapory.

Na przykład:

firewall_type = "/ etc / rc.firewall.newconfig"

załaduje ustawienia z wygenerowanego pliku /etc/rc.firewall.newconfig.

"Firewall_flags =" "" - służy do przekazywania dodatkowych argumentów podczas używania firewall_type z wartością nazwy pliku.

Naszym zadaniem jest stworzenie systemu spełniającego następujące kryteria:

  • Łatwość administracji.
  • Modyfikacja w locie, niewidoczna dla użytkowników. Dlatego takie operacje jak zrywanie połączeń, a tym bardziej ponowne uruchamianie są dla nas niepożądane.
  • Gwarantujemy, że nasz system będzie działał na większości maszyn.

W naszym przykładowym skrypcie wszystkie komputery w sieci lokalnej są podzielone na dwie grupy warunkowe: jedna grupa uprzywilejowana to te, które mają dostęp do Internetu przy użyciu najpopularniejszych usług, takich jak:

  • HTTP- port 80;
  • HTTPS- port 443;
  • FTP- porty 20, 21 i od 1025 do 65535;
  • Protokół SMTP do przekazywania poczty- port 25;
  • Protokół POP3 do odbierania wiadomości- port 110.

Istnieje inna grupa, z której komputery mają dostęp tylko do zewnętrznego serwera firmowego o adresie IP 83.xxx.xxx.2 (tylko protokoły SMTP i POP3).

Musimy zapewnić możliwość zmiany uprzywilejowanej grupy, jak to mówią, „w locie”, jeśli to możliwe bez zerwania nawiązane połączenia... Aby to zrobić, wywołujemy dodatkowy skrypt rc.firewall.local.inet z naszego skryptu. Wystarczy edytować i ponownie uruchomić ten dodatkowy skrypt bez wpływu na wszystkie inne ustawienia zapory.

Dodatkowo musimy przewidzieć sytuację, w której zmienią się parametry sieci, takie jak adres IP bramy dostawcy. W tym celu użyjemy w skrypcie zmiennych lokalnych. Na przykład, jeśli zmienisz bramę domyślną, wystarczy zmienić wartość zmiennej intgateway i ponownie uruchomić skrypt rc.firewall.run.

Oto nasz przykładowy skrypt:

# vi rc.firewall.run

#! / kosz / sh

końcówka = "83.xxx.xxx.xxx"

końcówka = "192.168.9.2"

internet = "192.168.9.0/24"

serwer pocztowy = "83.xxx.xxx.2"

intgateway = "83.xxx.xxx.1"

/ sbin / ipfw -f spłukiwanie &

/ sbin / ipfw dodaj 180 przekieruj natd ip z $ (intnet) do dowolnego wyjścia xmit fxp0

/ sbin / ipfw dodaj 190 przekieruj natd ip z dowolnego na $ (extip)

# ICMP

/ sbin / ipfw dodaj 500 zezwalaj na icmp z dowolnego na dowolny

# SSH

/ sbin / ipfw dodaj 10000 zezwalaj na tcp od dowolnego do dowolnego 22

/ sbin / ipfw dodaj 10010 zezwalaj na tcp od dowolnych 22 do dowolnych

# DNS

/ sbin / ipfw dodaj 11000 zezwalaj na tcp z dowolnego na dowolny 53

/ sbin / ipfw dodaj 11010 zezwalaj na tcp od dowolnych 53 do dowolnych

/ sbin / ipfw dodaj 11020 zezwalaj na udp od dowolnego do dowolnego 53

/ sbin / ipfw dodaj 11030 zezwalaj na udp z dowolnych 53 do dowolnych

# Internetowy FTP

/ sbin / ipfw dodaj 12000 zezwól tcp ode mnie na dowolne 20,21,80,443

/ sbin / ipfw dodaj 12010 zezwól na tcp z dowolnych 20,21,80,443 dla mnie

/ sbin / ipfw dodaj 12020 zezwól na udp ode mnie do dowolnego 20,21

/ sbin / ipfw dodaj 12030 zezwól na udp z dowolnych 20,21 dla mnie

# Skrypt dla grupy uprawnień

/ bin / sh /etc/rc.firewall.local.inet

# Odmów innemu komputerowi LAN

/ sbin / ipfw dodaj 12960 odmów tcp z $ (intnet) do dowolnych 20,21,80,443

/ sbin / ipfw dodaj 12970 odmów tcp z dowolnych 20,21,80,443 do $ (intnet)

/ sbin / ipfw dodaj 12980 odrzuć udp z $ (intnet) do dowolnych 20,21

/ sbin / ipfw dodaj 12990 odmów udp z dowolnych 20,21 do $ (intnet)

/ sbin / ipfw dodaj 13000 zezwól na tcp z $ (intnet) do $ (serwer pocztowy) 25 110

/ sbin / ipfw dodaj 13010 zezwól na tcp z $ (serwer pocztowy) 25 110 do $ (intnet)

/ sbin / ipfw dodaj 55010 zezwól na tcp z dowolnego na dowolny 1024-65534

/ sbin / ipfw dodaj 55020 zezwól na tcp z dowolnego 1024-65534 na dowolny

/ sbin / ipfw dodaj 55030 zezwól na tcp z dowolnego 1024-65534 na dowolny

/ sbin / ipfw dodaj 55040 zezwól na tcp z dowolnego na dowolny 1024-65534

/ sbin / ipfw dodaj 55050 zezwól na udp z dowolnego na dowolny 1024-65534

/ sbin / ipfw dodaj 55060 zezwalaj na udp z dowolnego 1024-65534 do dowolnego

/ sbin / ipfw dodaj 55070 zezwól na udp z dowolnego 1024-65534 do dowolnego

/ sbin / ipfw dodaj 55080 zezwól na udp z dowolnego na dowolny 1024-65534

# Zaprzeczać wszystkiemu

/ sbin / ipfw dodaj 65534 odrzuć ip od dowolnego do dowolnego

Utwórz i edytuj skrypt rc.firewall.local.inet do pracy z uprzywilejowaną grupą adresów:

# vi / etc / rc.firewall.local.inet

#! / kosz / sh

internet = "192.168.9.0/24"

grupa prywatna = (31,32)

/ sbin / ipfw usuń 12310

/ sbin / ipfw usuń 12320

/ sbin / ipfw usuń 12330

/ sbin / ipfw usuń 12340

/ sbin / ipfw dodaj 12310 zezwalaj na tcp z $ (intnet) $ (privgroup) do dowolnych 20.21.80.443.1025-65535

/ sbin / ipfw dodaj 12320 zezwalaj na tcp z dowolnych 20,21,80,443,1025-65535 do $ (intnet) $ (privgroup)

/ sbin / ipfw dodaj 12330 zezwalaj na udp z $ (intnet) $ (privgroup) do dowolnego 20,21,1025-65535

/ sbin / ipfw dodaj 12340 zezwalaj na udp z dowolnego 20,21,1025-65535 do $ (intnet) $ (privgroup)

W skrypcie do zmiany składu grupy uprzywilejowanej należy wyedytować zmienną privgroup poprzez dodanie/usunięcie w niej numeru hosta w podsieci lokalnej.

Na przykład, aby dodać dwa komputery o adresach IP 192.168.9.33 i 192.168.9.45, należy napisać „privgroup = (31-33.45)”.

Trochę brzydkie jest używanie reguł takich jak „/ sbin / ipfw delete NNNNN” podczas uruchamiania systemu, gdy nie było takiej reguły. Podczas próby usunięcia nieistniejącej reguły system wyświetla na konsoli następujący komunikat:

ipfw: reguła 13031: setsockopt (IP_FW_DEL): Nieprawidłowy argument

W takim przypadku system nadal działa normalnie.

Jeśli robisz wszystko ściśle, musisz stworzyć dwa skrypty: jeden do uruchamiania przy starcie, drugi - podczas wprowadzania zmian w locie. Ale wtedy będziesz musiał wprowadzić odpowiednie zmiany w obu skryptach.

Ponieważ głównym celem jest stworzenie systemu łatwego w administrowaniu, problem ten w naszym przypadku można pominąć.

Ale teraz, po dokonaniu odpowiednich zmian, możemy po prostu zrestartować skrypt dla uprzywilejowanej grupy.

# / bin / sh rc.firewall.local.inet

Możemy też dokonać zmian i zrestartować skrypt rc.firewall.run, choć z założenia będziemy musieli to robić znacznie rzadziej niż w przypadku skryptu grupy uprzywilejowanej.

# / bin / sh rc.firewall.run

Ponieważ napisaliśmy własny skrypt, który unieważni istniejące reguły i uruchomi alternatywną konfigurację zapory, musimy pomyśleć o tym, jak go uruchomić.

FreeBSD ma wspaniały mechanizm uruchamiania programy niestandardowe: plik rc.local. Domyślnie nie ma go w systemie.

Skoro już tworzymy ten plik, dodaj polecenie, aby uruchomić demona natd, który jest odpowiedzialny za obsługę NAT.

Demon natd jest uruchamiany z pliku rc.conf. (Ponownie ten plik, rzeczywiście, odgrywa kluczową rolę dla całego systemu FreeBSD jako całości!)

Mechanizm uruchamiania tego pliku z rc.conf opiera się na następujących zmiennych:

# - ścieżka do samego pliku natd

natd_program = "/ sbin / natd"

# Zezwól na NAT (jeśli firewall_enable == TAK)

natd_enable = "TAK"

# Frontend lub adres IP do użycia

interfejs_natd = ""

# Opcjonalne flagi uruchamiania natd

natd_flagi = ""

Ale w tym przypadku użyjemy wywołania demona natd za pośrednictwem rc.local. Komenda:

# vi /etc/rc.local

automatycznie tworzy plik /etc/rc.local i otwiera go do edycji.

Dodaj do niego następujące wiersze:

# Natd polecenie start

/ sbin / natd -n rl0

# gdzie "-n rl0" to nazwa interfejsu, na którym uruchomiony jest NAT

# I uruchom nasz skrypt, aby ustawić reguły zapory:

/ bin / sh /etc/rc.firewall.run

Restartujemy i sprawdzamy dostęp do niezbędnych zasobów internetowych z komputera z sieci lokalnej.

  1. Evie Nemeth, Garth Snyder, Scott Seabass, Trent R. Hein. UNIX. Kierownictwo Administrator systemu... BHV, Piotr, 2004
  2. Aleksiej Fiodorczuk, Aleksiej Rozdarty. FreeBSD. Instalacja, konfiguracja, użytkowanie. BHV, 2003 r.
  3. Filipa Torczyńskiego. Praktyczny przewodnik dla administratora systemu UNIX. "Symbol", 2003

Router Wi-Fi z serwerami DHCP i DNS FreeBSD 8.2

Co chcemy uzyskać:
- aby klienci Wi-Fi byli w tej samej podsieci co przewodowi.
- aby klienci przewodowi i bezprzewodowi automatycznie otrzymywali adresy przez DHCP
- mieć buforujący DNS
- oczywiście chcemy, żeby wszyscy byli online
- mieć dostęp RDP do serwera wewnętrznego

Ogólnie rzecz biorąc, chcemy uzyskać coś podobnego pod względem funkcjonalności do routera Dlink DIR-300

Co mamy:
Celeron 700, 256 MB RAM, 80 GB śruba IDE i dziwna płyta główna, która działa tylko z wyłączonym ACPI
karty sieciowe:

LAN - rl0 (10 \ 100 jakiś realtek znaleziony za szafą w pracy) [e-mail chroniony]:1 :8 :0 : class = 0x020000 card = 0x813910ec chip = 0x813910ec rev = 0x10 hdr = 0x00 sprzedawca = "Realtek Semiconductor" urządzenie = Realtek RTL8139 Family PCI FastEthernet NIC RTL- 8139 / 8139C / 8139D class = podklasa sieci = ethernet WAN - stge0 (10\100\1000 adapter asus) [e-mail chroniony]:1 :5 :0 : class = 0x020000card = 0x81801043chip = 0x102313f0 rev = 0x41 hdr = 0x00 sprzedawca = „Sundance Technology Inc” device = „IC Plus IP1000 Family Gigabit Ethernet Adapter” class = podklasa sieci = Ethernet WLAN - ral0 (tania karta Wi-Fi firmy Dlink) [e-mail chroniony]:1 :10 :0 : class = 0x028000card = 0x3a711186chip = 0x03021814 rev = 0x00 hdr = 0x00 sprzedawca = "Ralink Technology, Corp." urządzenie = "bezprzewodowy a/b (RT2525 2 nadajnik-odbiornik .4GHz + RT2560 MAC/BBP) „klasa = sieć

Biały adres IP dostarczony przez dostawcę usług internetowych:
IP 9.9.9.9
maska ​​255.255.255.0
brama 9.9.9.1
DNS1 9.9.9.254
DNS1 9.9.9.253
ustawienia różnią się od rzeczywistych, ale to nie zmienia istoty

Zakres LAN: 192.168.0.0 z maską 255.255.255.0

Zainstalowany system operacyjny FreeBSD 8.2:

# uname - brama FreeBSD 8 .2 -WYDANIE FreeBSD 8 .2 -UWOLNIENIE # 0: sobota 9 kwietnia 20:13:28 OMSST 2011 [e-mail chroniony]: / usr / src / sys / i386 / kompilacja / GATE i386

zawartość /etc/rc.conf:

9 .9 .9 .1 9 .9 .9 .9 maska ​​sieci 255 .255 .255 .0 "ifconfig_rl0 =" inet 192 .168 .0 .1 maska ​​sieci 255 .255 .255 .0 "

zawartość /etc/resolv.conf (serwer DNS):

serwer nazw 9 .9 .9 .254 serwer nazw 9 .9 .9 .253

Zaczynamy przygotowywać:

Usuwamy wszystkie niepotrzebne sterowniki z jądra (no lub nie usuwamy, bo jest to wygodne dla każdego), pozostawiając wszystkie sterowniki dla bezprzewodowe urządzenia... Jeśli wiesz który sterownik pasuje do twojej karty to zostaw, a resztę można usunąć.Nie wiedziałem który będzie dla mnie działał, więc zostawiłem wszystko. Przebudowujemy jądro z opcjami:

urządzenie if_bridge # Moduł do obsługi mostu urządzenie WLAN # Obsługa 802.11 (Wi-Fi) # nie wiem co to jest, ładowane automatycznie urządzenie wlan_amrr # Algorytmy kontroli szybkości transmisji AMRR urządzenie wlan_xauth # Moduł wsparcia autoryzacji dla trybu punktu dostępowego urządzenie wlan_wep # Moduł obsługi algorytmu bezpieczeństwa WEP urządzenie wlan_tkip # Moduł obsługi szyfrowania TKIP urządzenie wlan_ccmp # Moduł obsługi szyfrowania CCMP urządzenie pf # Używam filtru pakietów jako zapory # obsługa algorytmu kolejki (priorytetyzacja ruchu) opcje ALTQ opcje ALTQ_CBQ # Bazy klas Kolejkowanie (CBQ) opcje ALTQ_RED # Losowe wczesne wykrywanie (RED) opcje ALTQ_RIO # RED Opcje wejścia / wyjścia ALTQ_HFSC # Hierarchiczny Harmonogram Pakietów (HFSC) opcje ALTQ_PRIQ # Kolejkowanie priorytetowe (PRIQ) # ponieważ mam procesor jednordzeniowy, nie potrzebuję obsługi wielu rdzeni #options ALTQ_NOPCC # Wymagane do kompilacji SMP

zbuduj i zainstaluj jądro:

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

Uruchom ponownie i zobacz, co się stało:

8843 mtu 1500 opcje = 8209b eter 01 :01 :01 :01 :01 :01 ineta 9 .9 .9 .9 9 .9 .9 .255 8802 metryczny 0 mtu 1500 opcje = 3808 eter 00 :50 : fc: ef: 4d: 75 ineta 192 .168 .0 .1 maska ​​sieci 0xffffff00 transmisja 192 .168 .0 .255 media: automatyczny wybór Ethernet (100baseTX 8802 metryczny 0 mtu 2290 eter 00 :26 : 5a: 77 :38 : ba media: IEEE 802 .11 Status automatycznego wyboru (automatycznego wyboru) sieci bezprzewodowej Ethernet: brak operatora lo0: flagi = 8049 mtu 16384 opcje = 3 ineta 127 .0 .0 .1 maska ​​sieci 0xff000000

Karta Wi-Fi została zidentyfikowana jako ral0. Już dobrze. Możesz ponownie zbudować jądro i usunąć niepotrzebne sterowniki sieci bezprzewodowej.

Edytuj /etc/hostapd.conf do tego stanu:

Edycja /etc/rc.conf:

keymap = "ru.koi8-r" hostname = "BRAMKA" gateway_enable = "TAK" defaultrouter = " 9 .9 .9 .1 "sshd_enable =" TAK "ifconfig_stge0 =" inet 9 .9 .9 .9 maska ​​sieci 255 .255 .255 .0 " # skonfiguruj kartę bezprzewodową jako punkt dostępowy wlans_ral0 = "wlan0" create_args_wlan0 = "hostap trybu wlan" ifconfig_wlan0 = "uruchom hostaopt mediaopt" # usuń adres IP z interfejsu rl0 # ifconfig_rl0 = "inet 192.168.0.1 maska ​​sieci 255.255.255.0" # stwórz pomost między przewodową i bezprzewodową siecią LAN # i powiesić na nim adres IP bramy sieci lokalnej cloned_interfaces = "bridge0" ifconfig_bridge0 = "inet 192 .168 .0 .1 maska ​​sieci 255 .255 .255 .0 \ addm wlan0 addm rl0 up "ifconfig_rl0 =" up" # włącz funkcję punktu dostępowego hostapd_enable = "TAK"

Restartujemy. Zobaczmy co się stało:

# ifconfig stge0: flagi = 8843 mtu 1500 opcje = 8209b eter 01 :01 :01 :01 :01 :01 ineta 9 .9 .9 .9 maska ​​sieci 0xffffff00 transmisja 9 .9 .9 .255 media: automatyczny wybór Ethernet (100baseTX ) status: aktywny rl0: flagi = 8943 mtu 1500 opcje = 3808 eter 00 :50 : fc: ef: 4d: 75 media: automatyczny wybór Ethernet (100baseTX ) status: aktywny ral0: flagi = 8843 metryczny 0 mtu 2290 eter 00 :26 : 5a: 77 :38 : ba media: IEEE 802 .11 status: działa lo0: flagi = 8049 metryczny 0 mtu 16384 opcje = 3 ineta 127 .0 .0 .1 maska ​​sieci 0xff000000 bridge0: flagi = 8843 mtu 1500 eter a6: 09 : wyd: c1: 23 :38 ineta 192 .168 .0 .1 maska ​​sieci 0xffffff00 transmisja 192 .168 .0 .255 NS 00 :00 :00 :00 :00 :00 priorytet 32768 witaj 2 opóźnienie 15 maxage 20 wstrzymać 6 proto rstp maxaddr 100 koniec czasu 1200 identyfikator główny 00 :00 :00 :00 :00 :00 priorytet 32768 ifcost 0 Port 0 członek: flagi rl0 = 143 ifmaxaddr 0 Port 2 priorytet 128 koszt ścieżki 200000 członek: flagi wlan0 = 143 ifmaxaddr 0 Port 6 priorytet 128 koszt ścieżki 370370 wlan0: flagi = 8943 mtu 1500 eter 00 :26 : 5a: 77 :38 : ba media: IEEE 802 .11 Tryb automatycznego wyboru bezprzewodowej sieci Ethernet 11g status: uruchomiony ssid kanał 1 (2412 MHz 11g) bssid 00 :26 : 5a: 77 :38 : tryb autoryzacji w USA WPA2 / 802 .11i prywatność MIESZANY klucz domyślny 2 AES-CCM 2 :128 -bit AES-CCM 3 :128 -bitowe txpower 0 skanważny 60 protmode CTS dtimperiod 1 -dfs

Wszystko jest w porządku, Wi-Fi i karty przewodowe są połączone mostem, a adres IP wisi na tym moście

Zacznijmy konfigurować PF. PF umożliwia włączenie priorytetyzacji ruchu. Krótki opis Popatrz tutaj:
http://www.freebsd.org/doc/ru/books/handbook/firewalls-pf.html
utwórz plik /usr/local/etc/pf.conf i doprowadź go do tego stanu:

# Tutaj definiuję zmienne, które ułatwiają mi pisanie skryptu. WAN = "stge0" LAN = "bridge0" LAN_POOL = " 192 .168 .0 .0 /24 "WANIP =" 9 .9 .9 .9 "SERWER =" 192 .168 .0 .3 "ADMIN =" 192 .168 .0 .2 "RDP_PORT =" 3389 "EXTRDP_PORT =" 33389 " # ruch do i z tych portów będzie zabroniony na zewnętrznym interfejsie DROP_PORTS = "(135: 139 ,445}" # Co zrobić, gdy pakiet trafi w regułę blokowania (blok) # set block-policy drop - odrzuć pakiet i nic nie rób # set block-policy remove - odrzuć pakiet i wyślij komunikat o błędzie # do hosta, który go wysłał. ustaw blokadę zasad blokowania # Nie sprawdzaj ruchu pod kątem lo0 ustaw pomijanie na lo0 # Nie sprawdzaj ruchu na interfejsie bridge0 (nie mamy wewnętrznych ograniczeń) ustaw pomijanie na $ LAN # "Normalizuj" pakiety. Opis tej opcji moim zdaniem wystarczy # są niejasne, ale powinny być przydatne w przypadku niektórych rodzajów ataków sieciowych. peeling w sumie # Mam prędkość ~5000 kbps, ale tutaj musisz wpisać swoją prędkość altq na $ WAN priq przepustowość kolejka 5000Kb (priv, inne) # mam 2 kolejki # Dla ruchu o wyższym priorytecie (RDP z serwera) kolejka priv qlimit 25 priorytet 14 priq (czerwony) # Dla wszystkich innych kolejka inne qlimit 30 priorytet 10 cena (domyślnie) # Rozmiary kolejek są brane, można by rzec, z sufitu: (Nie za # skup się na nich, proszę. Spróbuj sam znaleźć rozmiar kolejki # włącz NAT na zewnętrznym interfejsie dla sieci LAN nat na $WAN z $LAN_POOL do dowolnego -> ($WAN) # Przekierowanie portu do serwera Przekierowanie innego niż standardowy port # aby chronić się przed brutalnymi małpami skanującymi standardowe porty rdr na $WAN proto tcp z dowolnego na $WANIP\port $EXTRDP_PORT -> $SERVER port $RDP_PORT # Odetnij żądania ping na nasz adres blok quick on $ WAN proto icmp od any do $ WANIP icmp-type 8 # Nie powinno być ruchu z NETBIOS na zewnętrznym interfejsie blokowanie quick na $WAN proto (tcp udp) z dowolnego na dowolny port $DROP_PORTS # włącz anti-spoofing na interfejsie WAN # Cytując http://openbsd.corebsd.or.id/faq/pf/ru/filter.html: # Adresy są fałszowane, gdy atakujący fałszuje oryginał # adresy IP w pakietach, są przesyłane albo do powłoki ich prawdziwych adresów, # lub przedstaw inny węzeł w sieci. Po sfałszowaniu użytkownika # będą mogli przeprowadzić atak sieciowy bez ujawniania prawdziwego źródła # ataków lub spróbuj uzyskać dostęp usługi sieciowe, który # ograniczone do określonych adresów IP. szybkie antispoof dla $WAN # Odrzuć wszelki jawnie nieautoryzowany ruch zablokuj wszystko # ### Ruch przychodzący # Ruch uprzywilejowany pass in quick na $ WAN proto tcp z any do $ WANIP port $ EXTRDP_PORT queue priv # Normalny ruch przechodzi quick na $ WAN z any do $ WANIP keep state queue other # Właściwie w ruchu przychodzącym priorytetyzacja w PF nie działa, ale zasady I # nadal pisał. # ### Ruch wychodzący # Ruch uprzywilejowany pass out quick na $ WAN proto tcp z $ WANIP \ port $ EXTRDP_PORT do dowolnej kolejki keep state priv # Normalny ruch przechodzi quick na $ WAN z $ WANIP do dowolnej kolejki keep state other
pf_enable = "TAK" pf_rules = "/ usr / local / etc / pf.conf"

i uruchom ponownie PF:

# /etc/rc.d/pf restart

Poprawność tworzenia reguł sprawdzamy za pomocą poleceń:

pfctl -sn Istniejące reguły NAT
pfctl -sr Istniejące zasady transmisje
pfctl -ss Nawiązane połączenia
pfctl -si Różne liczniki
pfctl -sa Wszystkie powyższe na raz
pfctl -sq -vvv Pokazuje status kolejek

Aktualizowanie portów za pomocą portsnap:

# portsnap fetch Wyszukiwanie serwerów lustrzanych portsnap.FreeBSD.org... 5 znaleziono lustra. Pobieranie tagu migawki z portsnap5.FreeBSD.org... gotowe. Pobieranie metadanych migawki... gotowe. Aktualizacja od śr. czerwca 15 14 :21 :31 MSD 2011 do Czw Lipca 21 11 :37 :27 MSD 2011 ... Ujmujący 3 poprawki metadanych... gotowe. Stosowanie poprawek metadanych... gotowe. Ujmujący 3 pliki metadanych ... gotowe. Ujmujący 9656 łatki ..... 10 .... <Часть вывода удалена> ...........9650 ... Gotowe. Nakładanie łatek... gotowe. Ujmujący 1282 nowe porty lub pliki ... gotowe. # portsnap extract /usr/ports/.cvsignore /usr/ports/ZMIANY ..................<Часть вывода удалена>................. / usr / ports / x11 / yelp / / usr / ports / x11 / zenity / Budowanie nowych plików INDEX ... gotowe.

Używamy dnscache z pakietu djbdns jako buforującego serwera DNS, ponieważ zużywa mniej pamięci i jest uważany za bezpieczniejszy niż serwer DNS BIND dostarczany z FreeBSD.

Zainstaluj djbdns:

# cd / usr / ports / dns / djbdns && make install clean

Zbieramy i instalujemy z następującymi opcjami:

Trwała pamięć podręczna DUMPCACHE dla dnscache IPV6 Obsługa IPv6 autorstwa Felixa von Leitnera Łata IGNOREIP ignoreip2 autorstwa Russella Nelsona Łatka JUMBO jumbo autorstwa Claudiu Costina [X] Strony podręcznika użytkownika MAN autorstwa Gerritta Pape PERSISTENT_MMAP łatka trwała mmap autorstwa Lennerta Buytena HandVhek [X] poprawka SRV Michael SRV SRV Michael

djbdns pobierze również port daemontools razem z nim. daemontools jest przeznaczony do uruchamiania demonów i monitorowania ich pracy. Oznacza to, że jeśli jakiś demon pod jego kontrolą "ulegnie awarii", to daemontools zrestartują go.

Utwórz grupę dnsusers, która będzie zawierała użytkowników, pod którymi będzie działać sam dnscache i dnslog (logger dla djbdns):

utwórz użytkownika dla dnslog:

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

utwórz folder z zawartością którego działa daemontools:

uruchom demontools:

ponieważ konfiguracja dnscache znajduje się w /usr/local/etc/djbdns, a daemontools współpracuje z folderem /var/service, tworzymy link:

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

Folder /usr/local/etc/dnscache/env zawiera pliki z bardziej zaawansowaną konfiguracją dnscache, ale w tym przypadku wartości domyślne są w porządku.

Do normalnej pracy serwera należy ustawić na nim adresy serwerów nadrzędnych. Za każdą strefę odpowiada plik o takiej samej nazwie jak nazwa strefy, znajdujący się w /usr/local/etc/dnscache/root/servers. Każdy plik zawiera adresy IP serwerów odpowiedzialnych za tę strefę. Ponieważ przekierowujemy wszelkie żądania do serwerów DNS dostawcy, zapisujemy ich nazwy do pliku o nazwie „@” (odpowiedzialny za strefę root).

Uruchom ponownie dnscache:

Zainstaluj serwer DHCP (zbudowałem go z tymi opcjami):

# cd / usr / ports / net / isc-dhcp41-server && make install clean Opcje dla isc-dhcp41-server 4 .1 .e_1, 2 DHCP_IPV6 Włącz obsługę IPv6 [X] DHCP_PARANOIA Włącz obsługę chroot DHCP_LDAP Eksperymentalna obsługa backendu LDAP DHCP_LDAP_SSL Obsługa połączenia LDAP przez SSL / TLS

Sprowadzamy konfigurację serwera DHCP (/usr/local/etc/dhcpd.conf) do tego stanu:

lokalny adres 192 .168 .0 .1 ; domyślny czas najmu 600 ; maksymalny-czas-najmu 7200 ; autorytatywny; tymczasowe w stylu aktualizacji ddns; lokalna log-facility7; podsieć 192 .168 .0 .0 maska ​​sieci 255 .255 .255 .0 (zasięg 192 .168 .0 .10 192 .168 .0 .250 ; routery opcjonalne 192 .168 .0 .1 ; # Jeśli podniosłeś SAMBA, możesz spróbować dać klientom # także wartość serwera WINS. # opcja netbios-name-servers 192.168.0.1; # podnieśliśmy już nasz serwer DNS, więc podajemy jego adres opcja serwery nazw domen 192 .168 .0 .1 ; } # "powiąż" określone adresy MAC z określonymi adresami IP administrator hosta (sprzętowa sieć Ethernet 03 :03 :03 :03 :03 :03 ; stały-adres 192 .168 .0 .2 ; ) serwer hosta (sprzętowa sieć Ethernet 04 :04 :04 :04 :04 :04 ; stały-adres 192 .168 .0 .3 ; }

Dodaj następujące wiersze do /etc/rc.conf:

i uruchom serwer DHCP:

Wszystko w porządku. Funkcjonalność najprostszego dir-300 została osiągnięta.

W tym artykule przyjrzymy się interfejsom sieciowym w FreeBSD 11.1, pokażmy konfigurację sieci poprzez plik konfiguracyjny /etc/ rc.conf, a mianowicie cel statyczny ustawienia i pobieranie ich przez DHCP. Napiszmy adresy DNS-serwery, konfiguracja zastępy niebieskie i rozważ wskazanie tymczasowe ustawienia sieciowe.

Zobacz interfejsy sieciowe.

Najpierw wyjaśnijmy: Istnieją dwa stany karty sieciowej W GÓRĘ(zaangażowany) i W DÓŁ(nieużywany).

Pierwszym krokiem jest przyjrzenie się naszym interfejsom sieciowym, spojrzymy za pomocą polecenia ifconfig(Rys. 1) Wyjście polecenia pokazuje wszystkie interfejsy W GÓRĘ oraz W DÓŁ.

Ifconfig

ifconfig -a pokaże ci to samo.

Ifconfig -a

Tutaj są pewne różnice w stosunku do ifconfig v Serwer Ubuntu .(v Serwer Ubuntu "ifconfig" pokazuje tylko interfejsy W GÓRĘ,"ifconfig -a" pokazuje wszystkie interfejsy i W GÓRĘ oraz W DÓŁ)

Rys. 1 - Wynik wpisania polecenia ifconfig.

A więc co widzimy:

  • em0- nasza karta sieciowa z adresem IP 192.168.3.11 .
  • em1- druga karta sieciowa nieskonfigurowana.
  • lo- pętla lokalna, domyślnie obecna dla wszystkich.

Aby wyświetlić tylko interfejsy W GÓRĘ, polecenie jest używane ifconfig -u(rys. 2):

Ifconfig -u

i tylko do przeglądania interfejsów W DÓŁ, polecenie jest używane ifconfig -d(rys. 3):

Ifconfig -d
Rys. 2 - Wynik wpisania polecenia ifconfig -u.
Rys. 3 - Wynik wpisania polecenia ifconfig -d.

W przyszłości pokażę przykładowe ustawienia na interfejsie. "em0".

Aby włączyć interfejs, użyj polecenia ifconfig"NAZWA-INTERFEJS" w górę.

Ifconfig em0 w górę

Aby wyłączyć interfejs, użyj polecenia ifconfig "NAZWA-INTERFEJS" w dół.

Jeśli config em0 nie działa

"Grać" z interfejsem, chyba że jesteś połączony przez cisza i zostaw to w stanie W GÓRĘ.

Konfiguracja sieci poprzez plik konfiguracyjny.

Aby skonfigurować statyczny lub dynamiczny adres IP, musimy edytować plik konfiguracyjny interfejsu sieciowego - /etc/ rc.conf będziemy go edytować za pomocą Edytor tekstuvi(Rys. 4) Od razu Ci powiem, żeby edytować w vi trzeba nacisnąć list "i", a aby zapisać i zamknąć dokument, naciśnij "Wyjście" przedstawić ": wq!" i naciśnij "Wejść".

Rysunek 4 - vi /etc/rc.conf.

Uzyskiwanie ustawień sieciowych przez DHCP.

Aby przypisać odbiór ustawień przez DHCP należy wpisać (lub zmienić istniejącą) linię w /etc/ rc.conf(rys. 5)

ifconfig_NAZWA-INTERFEJS= "DHCP"

Ifconfig_em0 = "DHCP"
Rys. 5 - Odbieranie ustawienia sieci przez DHCP.

Uruchom ponownie usługa sieciowa netif(rys. 6)

/etc/rc.d/netif restart Rys. 6 - Ponowne uruchomienie usługi sieciowej FreeBSD.

Patrzymy na aktywne interfejsy sieciowe, które widzimy, otrzymane przez DHCP, adres IP interfejsu em0- 192.168.3.6 (rys. 7)

Ifconfig -u

Ping 8.8.8.8
Rys. 7 - Sprawdzanie aktywnych interfejsów i dostępu do sieci.

Nadchodzą pingi. Wszystko idealnie!

Ręczne określanie ustawień sieciowych.

Aby przypisać adres statyczny do naszego Freebsd trzeba złożyć / etc / rc.conf wprowadź dwie linie (rys. 8)

ifconfig_NAZWA-INTERFEJS= „inet ADRES IP-FREEBSD maska ​​sieci MASKA SIEĆ "

router domyślny = " ADRES IP BRAMY "

Ifconfig_em0 = "inet 192.168.3.11 maska ​​sieci 255.255.255.0" defaultrouter = "192.168.3.1"
Rys. 8 - Ustawienia statyczne interfejsu sieciowego.

Ponownie uruchamiamy usługę sieciową.

/etc/rc.d/netif restart

Sprawdzanie aktywnych interfejsów

Ifconfig -u

Dostęp do Internetu sprawdzamy pingując Google Eights.

Ping 8.8.8.8

Konfiguracja DNS.

Adresy IP Serwery DNS przechowywane w / etc / pliku resolv.conf(rys. 9)

Otwieramy resolv.conf w edytorze vi.

Vi /etc/resolv.conf

Wchodzimy IP adres DNS serwer. (Możesz wprowadzić dowolną liczbę adresów.)

Serwer nazw 192.168.3.1 serwer nazw 8.8.8.8 serwer nazw 8.8.4.4

Jeśli nie masz pliku resolv.conf następnie utwórz go w katalogu / etc

Dotknij /etc/resolv.conf
Rys. 9 - Zawartość pliku resolv.conf.

Plik /etc/hosts.

/ etc / plik zastępy niebieskie zawiera tabele mapowania nazw DNS na adresy IP. Przede wszystkim serwer uzyska dostęp do pliku zastępy niebieskie, a następnie do serwera DNS.

Dla siebie zauważyłem, że warto dodać do zastępy niebieskie nagrywam to freebsd(Adres IP sieci lokalnej to nazwa serwera). Teraz możemy określić we wszystkich plikach konfiguracyjnych Nazwa DNS, a nie adres IP i w razie potrzeby zmień swój adres IP w jak najkrótszym czasie poprzez korektę zastępy niebieskie i ustawienia interfejsu w /etc/ rc.conf.

To tylko przykład, jak to zrobić. niekoniecznie.

Zacznijmy edycję (rys. 10):

Vi / etc / hosty

Wchodzę:

192.168.3.11 freebsd.itdeer.loc Rys. 10 - Zawartość pliku hosts.

Sprawdzę, pingując nazwy z zastępy niebieskie(rys. 11)

Wyślij polecenie ping do hosta lokalnego za pomocą polecenia ping freebsd.itdeer.loc
Rys. 11 - Pingowanie nazw z hostów.

Tymczasowe przypisanie adresu IP.

Szczerze mówiąc nie wiem, do czego może być przydatne tymczasowe przypisywanie ustawień sieciowych. Chyba że załóżmy, że masz jakiś serwer, który jest przeznaczony tylko dla Twojej sieci lokalnej i nagle zdecydowałeś się na szybką aktualizację oprogramowania przez Internet na tym serwerze, aby nie iść do bramki, a nie dystrybuować Internetu do pożądanego IP adres itp. Możesz sobie poradzić za pomocą kilku poleceń.

Na przykład wiemy, że on 192.168.3.109 Na pewno jest dostęp do internetu, ten adres IP przypisujemy do naszego interfejsu, trzeba też podać maskę sieci (rys. 12):

Ifconfig em0 192.168.3.109 maska ​​sieci 255.255.255.0

lub polecenie z krótkim wpisem maski sieci.

Ifconfig em0 192.168.3.109/24
Rys. 12 - Określanie ustawień tymczasowych dla interfejsu sieciowego em0.

Internet może się nie pojawiać, ponieważ nie określono bramy domyślnej. Rejestrujemy go i pingujemy ósemki Google (rys. 13).

Trasa dodaje domyślne 192.168.3.1 ping 8.8.8.8
Rys. 13 - Określ domyślną bramę. Sprawdzam ping.

To, czy poprawnie zarejestrowaliśmy naszą domyślną bramę, można zobaczyć w tablicy routingu. Jest wyświetlany za pomocą polecenia "netstat -rn" Brama domyślna będzie oznaczona flagą UG(rys. 14)

Netstat -rn
Rys. 14 - Wyjście tablicy routingu.

Jeśli gdzieś pomyliłeś się w pisowni lub podałeś inną bramkę, możesz: usuń domyślną bramę.

Trasa domyślna

To kończy tymczasową konfigurację, pamiętaj, że po ponownym uruchomieniu serwera lub osobno usługi sieci, wszystkie ustawienia tymczasowe znikną.

Dodaj trasę do sieci 192.168.0.0/16 (maska ​​255.255.0.0) przez domyślną bramę 192.168.3.1/24

Dodaj trasę 192.168.0.0/16 192.168.3.1

Możliwość dodania trasy z pełną maską.

Dodaj trasę -net 192.168.0.0 -netmask 255.255.0.0 192.168.3.1

Zmień nazwę interfejsu em0 na wan0.

Dla wygody niektórzy administratorzy zmieniają nazwy interfejsów, aby od razu mogli zobaczyć, do czego służy interfejs. Załóżmy, że mamy bramę z dwoma interfejsami sieciowymi em0(internet) i em1(sieć lokalna) i praca z takimi nazwami jest niewygodna, ponieważ posiadanie dużej liczby interfejsów może być mylące. Dużo wygodniej jest pracować z interfejsami wan0 oraz lan1.

Pokażemy przykład zmiany nazwy interfejsu. em0 v wan0 w pliku /etc/ rc.conf(rys. 15)

Ifconfig_em0 = "inet 192.168.3.11 maska ​​sieci 255.255.255.0"

Zastąp dwoma wierszami:

Ifconfig_ em0 _nazwa = " wan0"ifconfig_ wan0= "inet 192.168.3.11 maska ​​sieci 255.255.255.0"
Rys. 15 - Zmiana nazw interfejsów w pliku /etc/rc.conf.

Nie zapomnij ponownie uruchomić usługi sieciowej:

/etc/rc.d/netif restart

Sprawdź, wprowadź polecenie ifconfig -u... Widzimy nasze wan0 z właściwym adres IP(Rys.16)

Ifconfig -u
Rys. 16 - Sprawdzenie nowej nazwy interfejsu. ifconfig -u.


Router to urządzenie, które zapewnia dostęp do Internetu komputerom podłączonym do sieci lokalnej. Z pomocą FreeBSD można zbudować podobny router i robi się to całkiem prosto, rozważ opcję zbudowania routera dla małej sieci lokalnej 20...30 stacji roboczych.

Dane początkowe - komputer PC z dwiema kartami sieciowymi z zainstalowanym FreeBSD (obecnie z FreeBSD 8.4 STABILNY), zewnętrznym adresem ip dostarczonym przez naszego dostawcę, adresem ip bramy dostawcy oraz adresem ip serwera DNS.

Aby zmienić go w router, dodaj tylko jedną linię do pliku konfiguracyjnego rc.conf:

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

Co pozwoli na przechodzenie pakietów ip z jednego interfejsu sieciowego do drugiego. Za pomocą polecenia ifconfig dowiadujemy się informacji o interfejsach sieciowych i określamy, który z nich będzie „zewnętrzny” (przypiszemy mu adres ip dostawcy), a który „wewnętrzny” (przypiszemy mu niezajęte ip -adres wewnętrznej sieci lokalnej). Zobaczmy, co otrzymamy:


Definiujemy „em0” jako interfejs zewnętrzny (z przypisanym adresem IP 192.168.5.39), „em1” jako wewnętrzną edycję pliku rc.conf (przypiszmy go, na przykład, ip 192.168.0.240), w tym samym pliku jest konieczne do zarejestrowania bramki naszego dostawcy

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

Gdzie xxx.xxx.xxx.xxx to adres IP bramy dostawcy.

W rezultacie otrzymałem następującą postać pliku rc.conf


Następnie musisz zarejestrować adres IP serwera DNS dostawcy, abyśmy mogli odwoływać się do witryny po ich nazwach. Zróbmy wpis w plik konfiguracyjny resolv.conf

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

Gdzie xxx.xxx.xxx.xxx to adres IP serwera DNS.

Jeśli istnieje kilka serwerów DNS, wskazane jest, aby wymienić je wszystkie, każdy w nowej linii.


W naszym przypadku są to adresy IP serwerów 192.168.5.200 oraz 192.168.5.201. Adres serwera DNS 8.8.8.8 świetnego Google, w ostateczności możesz go użyć.

Ponowne uruchamianie...

# wyłączenie –r teraz

To wszystko, początkowa konfiguracja routera jest gotowa (możesz skonfigurować komputer w sieci lokalnej). Następnie rozważymy skonfigurowanie zapory, włączenie translacji adresów sieciowych (NAT) i różnych schematów routingu.

Przyjrzymy się konfigurowaniu stacji roboczych w systemie operacyjnym Windows dla Internetu (jak i gdzie zarejestrować adres IP komputera, routera i DNS). Jako aplikacja, na wszelki wypadek, nagle ktoś jej potrzebuje.

Przyjrzymy się kontynuacji konfiguracji routera (część 2).