The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Шлюз (NAT) + DHCP-сервер на OpenBSD для начинающих
В этой статье я хочу рассказать о своём опыте создания шлюза на базе
операционной системы (ОС) OpenBSD, так как, по-моему, это оптимальное решение
для большинства организаций, офисов и, в особенности, для дома. Здесь я не буду
давать подробные теоретические выкладки, коих и так полно в Интернете и
документации, а просто постараюсь кратко и лаконично изложить основные шаги для
достижения цели. Но прежде чем начать непосредственно демонстрацию настроек
OpenBSD и соответствующего софта, хотелось бы внести некоторую ясность по
поводу моих предпочтений.

Итак. Почему я выбрал в качестве основы для сервера (шлюза) именно систему
OpenBSD, а не какую-то другую? Этот выбор не случайный, а вполне обоснованный,
и причин для выбора данной ОС более чем достаточно. Дело в том, что до OpenBSD
мне приходилось работать со многими системами (DOS, Windows, Linux, Lindows,
BeOS, FreeBSD и т.д.), однако ни одна из них меня настолько не впечатлила своей
простотой, целостностью, гибкостью и надёжностью как OpenBSD и, её основа,
NetBSD (но последняя заслуживает отдельной статьи). Причём простота заключается
не только в управлении самой операционной системой, но и в установке, настройке
и нетребовательности к ресурсам компьютера. Ведь для работы данной ОС подходит
практически ЛЮБОЙ компьютер (даже Pentium I), а вся установка OpenBSD занимает
чуть больше минуты! Разве это не замечательно?... Особенно если посмотреть на
это с точки зрения финансово-временных затрат, которые в большинстве случаев
играют ключевую роль при выборе и установке сервера как в офисе, так и дома. Да
к тому же OpenBSD распространяется свободно и абсолютно бесплатная! Более того,
эта система считается самой безопасной ОС в мире! Надеюсь, данных аргументов
достаточно для того, чтобы вы хотябы дочитали эту статью до конца, а там
решайте сами.

Для начала давайте определимся чего мы хотим, что конкретно и как должен делать наш сервер.

Если это обычный шлюз (типа "мост"), то достаточно просто включить
перенаправление сетевого трафика с одной сетевой карты на другую и всё.
Делается это правкой всего двух-трёх конфигурационных файлов. Если же наш
сервер должен выполнять ещё какие-то функции, то это уже сложнее, но не намного.

Возьмём более или менее стандартную ситуацию. Допустим нам нужно
просто-напросто соединить локальную сеть провайдера, типа 10.135.62.0 (класса
A), провод от которой приходит к нам в дом или офис, и нашу внутреннюю
(локальную) сеть Ethernet, типа 172.18.7.0 (класса B), которая проложена по
офису или квартире. Адреса сетей могут быть и другими (и других классов), это
несущественно. Практически то же самое представляет собой соединение через
ADSL- или кабельный модем, который имеет обычный сетевой выход и выполняет
функцию роутера.

Плюс к этому, для уменьшения точек (узлов) настройки и облегчения
администрирования, на шлюз мы поставим DHCP-сервер, который будет автоматически
назначать адреса всем компьютерам локальной сети. Теперь, когда задача ясна,
приступим к её решению. Для этого понадобится сделать всего 4 шага:

1) Выбрать компьютер для нашего шлюза (возьмём старый и дешёвый IBM PC Pentium II);
2) Установить и настроить саму ОС (мы будем ставить OpenBSD 4.8 для платформы i386);
3) Настроить пересылку пакетов (трансляцию трафика) между сетевыми интерфейсами;
4) Настроить сервер DHCP (DHCPD).

На выполнение всех этих действий уйдёт всего несколько минут! Итак, приступим.

1) Для шлюза можно взять любой старый компьютер (например, приготовленный на
выброс или списанный в утиль) или, при его отсутствии, покупаем такой компьютер
через Интернет или у знакомых (или берём старьё в другой организации). Стоит он
копейки, или даже совсем ничего не стоит, так как это хлам. Также, можно
собрать такую машину из старых запчастей, которых в организациях и у
компьютерщиков, обычно, навалом! Не забудьте поставить в него 2 сетевые карты
(ведь сети у нас 2).

2) Скачиваем с официального сайта http://openbsd.org/ последний (хотя
необязательно) стабильный релиз ОС OpenBSD (лучше сразу ISO-образ) для
выбранного компьютера и записываем его на CD или DVD (ну или на другой
носитель, если вы будете ставить систему с него). Затем вставляем этот диск в
наш будущий сервер и грузимся с него.
Для начала установки нужно нажать клавишу (букву) "i" (install). 

Затем вы должны ответить на несколько простых вопросов (типа какой раскладкой
вы будете пользоваться, в каком часовом поясе находитесь, каким будет сетевое
имя компьютера, к какому DNS-имени (домену) подключиться и т.д.), а также
задать настройки сетевых интерфейсов (сетевых карт), хотя это можно сделать и
после установки. Здесь хотелось бы дать несколько рекомендаций:

- Стандартную раскладку клавиатуры лучше не менять (по умолчанию будет "English US");
- Временной пояс лучше поставить свой (например Europe/Moscow);
- Имя машины (системы) можно взять любое, но лучше с указанием на домен, например mytest.lan;
- Сетевые интерфейсы в OpenBSD называются по разному, например fxp0 или rtl0
(зависит от чипа на сетевой карте). Смотрите внимательно что и как вы
настраиваете и о чём вас спрашивает установщик, иначе потом придётся
перенастраивать всё вручную.

После того как вы ответили на все вопросы по настройке системы, будет
предложено разбить HDD на разделы (без опыта работы с fdisk-ом лучше этого не
делать!). В нашем случае компьютер тарый и объём HDD не настолько большой,
чтобы его "пилить" на части, поэтому будем использовать весь диск целиком (по
умолчанию). Просто нажимаем Enter и идём дальше. Затем будет выдан список
пакетов для установки. Тут я рекомендую убрать игры, многопроцессорную
поддержку (если у вас в компьютере только один процессор) и всё, что касается
графической системы X Window. Делается это очень просто:

 -game*  (затем нажать Enter);
 -bsd.mp  (затем нажать Enter);
 -x*   (затем нажать Enter);

Всё. Далее останется дождаться конца установки (примерно 1-2 минуты) и указать
какие сервисы (демоны) нужно запускать вместе с системой. Здесь можно
отказаться от запуска почти всего кроме, наверное, sshd (это сервер удалённого
управления по SSH). После установки желательно перезагрузить компьютер (команда reboot).

3) Теперь у нас есть действующий сервер с уже работающими и подключёнными
сетевыми интерфейсами, если конечно вы их правильно настроили при установке.
Если нет, тоже не так страшно, просто отредактируйте конфигурационные файлы
сетевых карт типа /etc/hostname.fxp0 и /etc/hostname.rtl0 (здесь
предполагается, что ваши сетевушки определены как fxp0 и rtl0).

Посмотреть список всех подобных файлов можно командой ls, например:

   ls /etc/hostname.*

Чтобы убедиться в правильности настроек, можно вывести параметры всех сетевых
интерфейсов с помощью команды ifconfig, например так:

   ifconfig -a

или же просто пустить ping на те адреса, которые вы указали в настройках, например:

   ping 10.135.62.26  (где 10.135.62.26 IP-адрес от Вашего провайдера или модема)

и

   ping 172.18.7.1  (где 172.18.7.1 IP-адрес Вашего внутреннего интерфейса)

Если проверка прошла успешно, переходим к настройкам трансляции сетевого
трафика между нашими сетями (NAT). Для этого достаточно включить forwarding
(пересылку) в файле /etc/sysctl.conf:

   net.inet.ip.forwarding=1 (для протокола TCP 4-й версии)

и/или

   net.inet6.ip6.forwarding=1  (для TCP 6-й версии, если она используется)

А также настроить встроенный пакетный фильтр (pf) на работу в качестве NAT
(Network Address Translation). Делается это в файле конфигурации /etc/pf.conf с
помощью параметра nat-to, например так:

   pass out on $ext_if from 172.18.7.0/16 nat-to 10.135.62.26

В данном случае мы перенаправляем весь трафик из внутренней (локальной) сети
172.18.7.0 на адрес провайдера (или модема) 10.135.62.26. Обратите внимание на
переменную $ext_if! Вместо неё должно быть подставлено название внешнего
интерфейса (который подключён к сети провайдера). Обычно она определяется в
самом начале pf.conf примерно следующим образом:

   ext_if="fxp0"  (если fxp0 имеет адрес 10.135.62.26, как в нашем примере)

Ну вот и все настройки NAT-а в OpenBSD. Как видите это делается правкой всего
двух конфигов, в которые нужно дописать по одной строчке. Простота и
доступность - главные преимущества систем BSD!

Осталось только добавить NAT (точнее pf) в автозагрузку. Самый простой способ
это сделать - найти и изменить строчку типа "pf=" в файле /etc/rc.conf, должно
быть так:

   pf=YES

После перезагрузки вы увидите, что pf был запущен и настроен, а следовательно,
все пользователи локальной сети могут подключаться к сети провайдера и
наслаждаться доступом в Интернет!

4) Ну и последний штрих в настройке нашего сервера - включение и настройка
DHCPD. Эта штука позволит нам автоматически раздавать IP-адреса, ограничивать
количество компов в сети, а также изолировать некоторые компьютеры в отдельные
сетевые группы не вставая из-за консоли сервера. Причём все настройки делаются
в одном единственном файле - /etc/dhcpd.conf, например так:

   option domain-name-servers 10.135.62.2;
   subnet 172.18.7.0 netmask 255.255.0.0 {
       routers 172.18.7.1;
       range 172.18.7.130 172.18.7.190;
   }


В этом примере мы указываем общий для всех DNS-сервер 10.135.62.2, затем
создаём подсеть (блок адресов) из 60 адресов (с 172.18.7.130 по 172.18.7.190) и
прописываем для неё шлюз (маршрутизатор) 172.18.7.1. Таким образом, компьютеры
локальной сети, при обращении к нашему серверу будут получать свободный адрес
из указанного диапазона, шлюз 172.18.7.1 и DNS-сервер 10.135.62.2. И таких
подсетей можно сделать сколько угодно с разными настройками.

Если же в этот дипазон попал, например, принтер или просто требуется жёсткая
привязка компьютера к какому-то IP-адресу, тоже не проблема. Нужно всего лишь
указать MAC-адрес сетевой карты этого компа и выделить ему IP, например так:

   host static-client {
     hardware ethernet 00:12:25:2a:3c:17;
    fixed-address 172.18.7.150;
   }

Таким образом мы делаем постоянную привязку IP-адреса 172.18.7.150 к MAC-адресу
00:12:25:2a:3c:17. То есть только компьютер (или принтер) с MAC-ом
00:12:25:2a:3c:17 будет получать IP-шник 172.18.7.150, он будет для этой машины
зарезервирован. И, опять же, таких привязок можно сделать сколько угодно, хоть
на всю подсеть, например так:

   subnet 172.18.7.0 netmask 255.255.0.0 {
       routers 172.18.7.1;
       range 172.18.7.130 172.18.7.190;
       host static-client {
         hardware ethernet 00:12:25:2a:9c:12;
         fixed-address 172.18.7.140;
      }
      host static-client1 {
         hardware ethernet 00:12:25:2a:3c:17;
         fixed-address 172.18.7.150;
      }
      host static-client2 {
         hardware ethernet 00:12:25:4b:3c:45;
         fixed-adress 172.18.7.160;
      }
   }

В этом примере зарезервированы 3 адреса: 172.18.7.140, 172.18.7.150 и 172.18.7.160.

В завершение включаем автоматический запуск данного демона (службы) всё в том
же /etc/rc.conf следующей строчкой:

   dhcpd_flags=""

Её просто нужно найти и поменять значение параметра.

Ну вот и всё. После перезагрузки компьютера вы увидите запуск всех настроенных
демонов (сервисов), а проверить их работу и состояние можно с помощью команды
pgrep, например:

   pgrep -lf dhcpd

При этом на экран будет выведен номер процесса (PID) и ссылка на сам
DHCP-сервер. Аналогично проверяется работа и других сервисов (демонов),
запущенных в OpenBSD.

Как видите в создании сервера (шлюза) на базе операционной системы OpenBSD нет
ничего сложного и страшного. Попробуйте, у вас обязательно получится!
 
Ключи: openbsd, gateway / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / FreeBSD специфика / Установка и апгрейд FreeBSD и приложений.

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, ъ, 15:04, 01/06/2011 [ответить] [смотреть все]
  • +/
    Подача материала -- жжёт.
     
  • 1.2, netc, 16:07, 01/06/2011 [ответить] [смотреть все]
  • +/
    согласен. жесть ;)

    ну что ж все равно, может кому пригодится

     
  • 1.3, Lp, 22:12, 01/06/2011 [ответить] [смотреть все]
  • +/
    Господа, прожженые никсоеды. Не забывайте, что опеннет читают и другие. Мне, например, помогла эта статья.
     
  • 1.4, oler2, 22:59, 01/06/2011 [ответить] [смотреть все]
  • +/
    в чём помогла?
    кроме nat ничего не настроено, да и без понимания что и для чего
    про сервисы - отключите всё кроме ssh - хехехе
    надеюсь таких реальных фаерволов не появиться в мире?
     
  • 1.5, max888, 23:10, 01/06/2011 [ответить] [смотреть все]
  • +/
    А мне понравилось про dhcp :-) Я сам долго парился с настройками, когда шлюз в локалке делал.
    В mane не так понятно как тут. Может и правда кому сгодится...
     
  • 1.6, zibait, 23:50, 01/06/2011 [ответить] [смотреть все]  
  • +/
    Я тоже согласен с Lp. Если у вас такой опыт, напишите свою статью, как лучше сделать. А то глумится каждый может, только толку от того...
    Я вот давно думал как мне из старого компа роутер сделать, винда на нем не тянет совсем :-(
    Попробую openbsd заюзать, может и правда заработает
     
     
  • 2.16, PereresusNeVlezaetBuggy, 10:41, 05/06/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Во-первых, статья об устаревшей версии OpenBSD или автор не в курсе, например, ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, Jord, 19:41, 05/06/2011 [^] [ответить] [смотреть все]  
  • –1 +/
    Ага еще автор при выборе ОС не упомянул одного Эта система OpenBSD единственн... весь текст скрыт [показать]
     
     
  • 4.19, PereresusNeVlezaetBuggy, 21:17, 05/06/2011 [^] [ответить] [смотреть все]  
  • +/
    Хм А dmesg - даже другой ОС - можно посмотреть Моя личная почта возле ника И ... весь текст скрыт [показать]
     
  • 4.21, Defence, 09:44, 07/06/2011 [^] [ответить] [смотреть все]  
  • +/
    Ничего подобного У меня OpenBSD шлюз крутится на AlphaServer DS25, который нико... весь текст скрыт [показать]
     
  • 1.7, Аноним, 10:18, 02/06/2011 [ответить] [смотреть все]  
  • +/
    ipcop попробуйте;)
    для старого компа
     
  • 1.8, paulz, 10:20, 02/06/2011 [ответить] [смотреть все]  
  • +/
    а чеб не m0n0wall засетапить ?
     
     
  • 2.9, oler2, 10:42, 02/06/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    к ipcop в будущем статистика прикручивается через дополнения, резка сайтов через... весь текст скрыт [показать] [показать ветку]
     
  • 1.10, anonymous, 12:58, 02/06/2011 [ответить] [смотреть все]  
  • +/
    если ящиков до 100 то вполне рулит и dnsmasq
    его вообще можно не настраивать.
     
     
  • 2.13, Maxwel, 20:19, 03/06/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Каких ящиков, какой DNS Ты ваще статью читал Где там про почту с DNS и FireWal... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, artickl, 00:58, 09/06/2011 [^] [ответить] [смотреть все]  
  • +/
    > Каких ящиков, какой DNS? Ты ваще статью читал? Где там про почту с DNS и FireWall написано?
    > Вам чё, заняться нечем? Зачем флудить не в тему?
    > Вы вообще понимаете о чём речь идёт???

    К сожалению, но это вы ничего не поняли из того, что anonymous написал. Перевожу его текст более понятным языком:
    > если ящиков до 100 то вполне рулит и dnsmasq
    > его вообще можно не настраивать.

    Если компьютеров в компании до 100 штук, то можно установить dnsmasq, что бы dns брался с локального шлюза, а не с "option domain-name-servers 10.135.62.2", который находиться за сетью - иначе лишний трафик и скорость resolve'a (перевода DNS имени типа google.ru в ip адрес) будет медленной.

    Так что прежде чем возмущаться - подумайте, кто начинает флудить...

     
  • 1.11, paulz, 14:35, 02/06/2011 [ответить] [смотреть все]  
  • +/
    ipfire тожа интересная штука ...
     
  • 1.12, VladMix, 10:31, 03/06/2011 [ответить] [смотреть все]  
  • +/
    Нормальная статейка. Про NAT хорошо написано, кратко и понятно. А google даёт очень сложные варианты. Я поначалу и связываться не хотел, а теперь подумываю себе такую штуку поставить...
     
  • 1.14, Hawk, 06:25, 05/06/2011 [ответить] [смотреть все]  
  • +/
    Удивительно, но есть еще люди...
    Лет 7-8 назад Open был актуален, или по крайней мере казался таким. Сегодня смысл теряется.
     
     
  • 2.15, PereresusNeVlezaetBuggy, 10:29, 05/06/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Расскажите это тем людям, которые используют его в качестве основы для решений «под ключ» в корпоративной среде. За подробностями можно хоть в BSD Magazine прогуляться. Вылезьте уже из вашей могилы.
     
     
  • 3.18, Hawk, 20:47, 05/06/2011 [^] [ответить] [смотреть все]  
  • +/
    Да я право слово не против, и даже рад за этих людей.
    Но на фоне FreeBSD, а уж тем более linux это лишь приятные исключения, подтверждающие общую тенденцию.
    Я с симпатией смотрю на эту систему, как раз в начале 2000-х она у нас в ответственных местах и крутилась. Но сегодня новичку начинать изучение unix систем на примере Open-a ИМХО не верный шаг, а грамотный спец в продакшн будет ставить то, что лучше знает, или если его все же припрет - он просто почитает доки. Если знаешь принципы, конкретная реализация тебя в тупик не поставит.
     
  • 1.20, Magic, 23:15, 05/06/2011 [ответить] [смотреть все]  
  • +/
    Хорошая статейка для начинающих изучать Unix и системы *BSD, ну и для общей пропаганды Юникса вообще, да ещё в рунете. Побольше бы таких статей на русском писали, а то у нас кроме рекламы Винды почти ничего нет, о других ОС и не вспоминают...
     
  • 1.22, Juriy, 11:45, 07/06/2011 [ответить] [смотреть все]  
  • +/
    Согласен с Magic-ом, такие статьи в рунете нужны и побольше. Особенно в свете официального перехода России на ОС UNIX (Linux).
    Спасибо автору, и таким как он, за вклад в общее дело!
     
  • 1.24, zholyd, 00:32, 19/12/2011 [ответить] [смотреть все]  
  • +/
    Статья отличная. И нечего глумиться над автором. Может быть он только начинает осваивать OpenBSD.
     
     
  • 2.25, PereresusNeVlezaetBuggy, 01:28, 19/12/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Если он только начинает осваивать, то почему других учит, когда сам не разобралс... весь текст скрыт [показать] [показать ветку]
     
  • 1.26, zholyd, 22:51, 06/01/2012 [ответить] [смотреть все]  
  • +/
    Не знаю как вам!? Заядлым юниксоидам! Но мне эта простенькая статья помогла за 3 часа сделать интернет-шлюз для 10 компов в маленькой организации, который требовалось закончить до утра. Прочитать книжку в 220 страниц и осмыслить ее до утра не представлялось возможным. По крайней мере для меня - тугодума.  Для меня как начинающего в самый раз.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor