FreeBSD 9
Като интернет шлюз (рутер), FreeBSD сървър се използва доста често. За да използвате нашия сървър като интернет шлюз, имате нужда от два мрежови интерфейса (стриктно погледнато, можете да минете с един, но тогава свързаното оборудване трябва да поддържа VLAN и това е съвсем различна история). Първо, нека да разгледаме състоянието на мрежовите интерфейси на нашия сървър, за това има "магическа" команда:
$ ifconfig
резултат от командата:
Както може би се досещате, нашият сървър има два физически мрежови интерфейса -em0 иem1 (интерфейсътlo0 се нарича"loopback", все още няма да го разглеждаме).
ifconfig_em0="DHCP"ifconfig_em0="SYNCDHCP"
$ netstat -rn
Интересуваме се само от секциятаinetrnet: (съответства на протоколаIPv4 ). Трябва да обърнем голямо внимание на следните редове:
Флаговете на дестинационния шлюз Refs Използват Netif Expire
по подразбиране 192.168.77.77 UGS 0 7 em0
Първият ред е името на колоните на таблицата за маршрутизиране, те означават следното (изброяваме само тези, които ни интересуват):
Дестинация - посока
Шлюз - Портал
Знамена - знамена
Използване - използване, показва колко пъти е използван маршрута
Netif — мрежов интерфейс
Expire - Показва дали маршрутът е изтекъл
Вторият ред описва основния маршрут. Струва си да запомните, чеосновният маршрут (наричан ощемаршрут по подразбиране ) е необходимо условие за достъп до Интернет на сървъра! Нека обясним съдържанието на реда:
по подразбиране - всъщност показва, че маршрутът е основен (по подразбиране)
em0 е мрежовият интерфейс, към който ще се изпращат заявки към шлюза по подразбиране.
Сега се уверихме, че сме получили шлюза по подразбиране. Остава да проверим дали имаме DNS сървър, за това ще разгледаме съдържанието на файла/etc/resolv.conf, той съдържа следния ред:
сървър за имена 192.168.77.77
състояние: активно
това означава, че мрежовият интерфейс е готов и работи.
Време е да проверите наличността на интернет на сървъра, пинг на някой сайт:
$ ping -t3 adobe.com
Резултатът от командата е следният:
PING adobe.ru (213.252.95.237): 56 байта с данни64 байта от 213.252.95.237: icmp_seq=0 ttl=116 време=25.497 ms64 байта от 213.252.95.237: icmp_seq= 1 ttl=116 време=25.307 ms64 байта от 213.252.95.237: icmp_seq=2 ttl=116 време=26.731 ms
—adobe.ru статистика за ping—3 предадени пакета, 3 получени пакета, 0,0% загуба на пакетиобръщане min/avg/max/stddev = 25,307/25,845/26,731/0,631 ms
Няма съмнение, че интернет присъства на сървъра, маршрутизирането и разрешаването на имена работят добре. Да преминем към следващия мрежов интерфейс.
ifconfig_em1=" inet 172.16.0.100 мрежова маска 255.255.255.0"
Състоянието на мрежовия интерфейс (статус: активно )em1 не е подозрително. Стигаме до заключението, че и двете мрежови карти работят добре и можете да започнете да настройвате сървъра.
За да може сървърът да действа като интернет шлюз, добавете следния ред към файла/etc/rc.conf (това се прави от името на потребителяroot ):
gateway_enable="ДА"
Този параметър ще влезе в сила след рестартиране на сървъра, но ние ще направим рестартирането след конфигуриране на NAT и защитна стена.
Нека започнем да изпълняваме основната задача - настройка на NAT. Както NAT, така и защитната стена могат да бъдат внедрени както с обикновени инструменти на ОС, така и с помощта на програми на трети страни. В момента ядрото на операционната система FreeBSD 9.x включва ipfw2, който е едновременно защитна стена (ipfw) и NAT (ipfw nat).Едно от основните предимства е скоростта (тъй като ipfw2 е внедрен в ядрото на операционната система, работи много бързо, „яде“ малко ресурси). Един от недостатъците е, че това не е най-лесният инструмент за разбиране и настройка (поради което много хора не използватipfw2, заменяйки го с нещо по-„приятелско“ за настройка). Защитната стена може да бъде активирана без повторно изграждане на ядрото, но функцията NAT трябва да бъде включена в ядрото на системата. Така че все пак ще трябва да възстановите ядрото, плюс производителността на системата ще бъде по-висока (и ще бъде възможно да я конфигурирате по-гъвкаво). Първо копирайте конфигурационния файл на ядрото под новото имеROUTER (предполага се, че операционната система работи на платформатаi386, ако вашата сървърна платформа еamd64 — коригирайте командите, като вземете предвид това), не забравяйте да стартирате всичко това катоroot потребител:testrouter# cd /sys/i386/conf/ && cp ГЕНЕРИЧЕН РУТЕР
редактираме конфигурационния файлROUTER на нашето бъдещо ядро, трябва да добавим следните редове към него:
опции IPFIREWALL #разрешаване на ipfwопции IPDIVERT #възможност за обвиване на пакети,#без този NAT (NATD) няма да работиопции IPFIREWALL_VERBOSE #разрешаване на регистриране на ipfwопции IPFIREWALL_VERBOSE_LIMIT=5 # limit на броя на#идентични регистрационни файлове - защита срещу#атакиопцииIPFIREWALL_NAT #разрешаване на ipfw NATопции LIBALIAS #разрешаване на необходимите#libalias библиотеки в ядротоопции ROUTETABLES=2 #две таблици за маршрутизиранеопции DUMMYNET #активиране на функция за оформяне на трафикопции HZ= »1000 ″ #ускоряване на гигабитовия мрежов адаптер
ВАЖНО! Преди да изградите ядрото, проверете за наличието на реда:device bpf в конфигурационния файлROUTER, ако няма такъв ред, добавете го! Този ред открива наличието на така нареченотоbpf устройство (Berkeley Packet Filter ), компилирано в ядрото. Устройствотоbpf е необходимо за работата на DHCP сървъра, който предстои да бъде внедрен. По правило устройствотоbpf вече присъства в конфигурационния файл на ядротоGENERIC, но за да не се възстановява ядрото отново в бъдеще, струва си да проверите горния параметър предварително.
testrouter#cd /usr/src && направете buildkernel KERNCONF=ROUTER
Изграждането на ядрото отнема 20 минути или повече в зависимост от производителността на вашата платформа. И не трябва да се намесвате в това - докато сърцевината се събира, ние се забавляваме да гоним чайове с кифли. Инсталирайте ново ядро (за разлика от предишното, тази процедура е много по-бърза):
testrouter#направи инсталационно ядро KERNCONF=ROUTER
Новото ядро е изградено и инсталирано, за да използвате новото ядро трябва да рестартирате сървъра, но засега не трябва да правите това. В момента правилата назащитната стена не са зададени, което означава, че целият мрежов достъп до нашия сървър ще бъде затворен (и няма да има отдалечен достъп и PuTTY няма да ви помогне!). По принцип първоначалната конфигурация назащитна стена трябва да се извърши в непосредствена близост до сървъра - защото грешките неизбегнато. Конфигурирайте стартирането на ipfw и NAT при стартиране на системата, като добавите следните редове към файла/etc/rc.conf :firewall_enable="YES"firewall_nat_enable="YES"firewall_script="/etc/fw_script.01"
Добавете следните редове към файла/etc/sysctl.conf :
# за ipfw NATnet.inet.ip.fw.one_pass=1
# за регистриране на ipfwnet.inet.ip.fw.verbose=1net.inet.ip.fw.verbose_limit=5
Създайте първоначалния конфигурационен файл със скрипт:докоснете /etc/fw_script.01
Не забравяйте да направите скрипта изпълним:
testrouter#chmod u+x /etc/fw_script.01
Отбелязвам, че горният скрипт с набор от правила ipfw2 е минималният работещ и, разбира се, не е идеален. Стискайте палци и рестартирайте сървъра:
testrouter# рестартиране
Ако сървърът се зареди без грешки, не е лошо. Ако в същото време успяхме да получим достъп до него от разстояние (от локалната мрежа, разбира се, защото не отворихме достъп отвън), тогава всичко е много добро. Проверяваме таблицата за маршрутизиране и наличието на интернет (вече сме правили това преди).
Проверяваме работата назащитната стена, за която показваме списък с правила:
testrouter# ipfw списък
резултатът трябва да е така:
00100 разреши ip от всеки към всеки чрез lo000200 откажи ip от който и да е до 127.0.0.0/800300 откажи ip от 127.0.0.0/8 до който и да е00400 разреши ip от който и да е през em101030 nat 1 ip от всеки към всеки чрез em065535 отказ на ip от всеки към всеки
След това нека проверим работата на NAT, за което ще покажем неговия статус:
testrouter# ipfw nat show
резултатът ще бъде нещо като това:
nat 1: icmp=0, udp=1, tcp=3, sctp=0, pptp=0,proto=0, frag_ >
Сега дойде тържественият момент - настройка на клиенти за локална мрежа!
Ето (като пример) настройките на мрежовата карта на един от компютрите в локалната мрежа:
Е, можете да проверите наличието на интернет на компютър в локалната мрежа. На компютър с операционна система Microsoft Windows® Натиснете клавишите+, в отворения прозорец"Стартиране на програмата" въведете командатаcmd :
Натиснете бутона, ще се отвори прозорец на командния ред:
ping 172.16.0.100
и натиснете клавиша, ако сървърът е достъпен:
Можете да проверите наличността на отдалечени ресурси, като въведете командата:
ping adobe.com
и натиснете клавиша, вижте резултата:
Ако външен ресурс в Интернет е достъпен (pinged) - можете спокойно да отворите браузър и да сърфирате в Интернет! Ако вместо нормален пинг получите това:
ping 213.252.95.237