В этой статье я хочу рассказать о своём опыте создания шлюза на базе операционной системы (ОС) 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 нет ничего сложного и страшного. Попробуйте, у вас обязательно получится!
URL:
Обсуждается: http://www.opennet.me/tips/info/2584.shtml
Подача материала -- жжёт.
согласен. жесть ;)ну что ж все равно, может кому пригодится
Господа, прожженые никсоеды. Не забывайте, что опеннет читают и другие. Мне, например, помогла эта статья.
в чём помогла?
кроме nat ничего не настроено, да и без понимания что и для чего
про сервисы - отключите всё кроме ssh - хехехе
надеюсь таких реальных фаерволов не появиться в мире?
А мне понравилось про dhcp :-) Я сам долго парился с настройками, когда шлюз в локалке делал.
В mane не так понятно как тут. Может и правда кому сгодится...
Я тоже согласен с Lp. Если у вас такой опыт, напишите свою статью, как лучше сделать. А то глумится каждый может, только толку от того...
Я вот давно думал как мне из старого компа роутер сделать, винда на нем не тянет совсем :-(
Попробую openbsd заюзать, может и правда заработает
> Я тоже согласен с Lp. Если у вас такой опыт, напишите свою
> статью, как лучше сделать. А то глумится каждый может, только толку
> от того...
> Я вот давно думал как мне из старого компа роутер сделать, винда
> на нем не тянет совсем :-(
> Попробую openbsd заюзать, может и правда заработаетВо-первых, статья об устаревшей версии OpenBSD (или автор не в курсе, например, что PF уже несколько релизов как включён по умолчанию). Во-вторых, OpenBSD FAQ (в частности, шестой раздел) тоже никто не отменял. В-третьих, делать, не понимая, что делаешь — не OpenBSD way. ;)
OpenBSD хороша как раз тем, что при её использовании редко возникает необходимость ковыряться во всяческих HOWTO, и то по большей части для стороннего ПО (из портов).
Хотя сам благородный порыв, конечно, радует своим наличием.
Ага еще автор при выборе ОС не упомянул одного.
Эта система (OpenBSD) единственная из его списка не может работать без видеокарты :)
проверено многократно на различных конфигурациях. После установки и настройки если у компа отнять видюху, то при следующей загрузке (до поднятия сети) он тупо виснет может видео ему таки для чего-то надо. Если видюху вставить на место то все ок.
Такая себе серверная система. Уж сколько лет прошло а воз и ныне там :(
FreeBSD наше все. Все что надо там есть.
> Ага еще автор при выборе ОС не упомянул одного.
> Эта система (OpenBSD) единственная из его списка не может работать без видеокарты
> :)
> проверено многократно на различных конфигурациях. После установки и настройки если у компа
> отнять видюху, то при следующей загрузке (до поднятия сети) он тупо
> виснет может видео ему таки для чего-то надо. Если видюху вставить
> на место то все ок.
> Такая себе серверная система. Уж сколько лет прошло а воз и ныне
> там :(Хм. А dmesg - даже другой ОС - можно посмотреть? Моя личная почта возле ника. И ещё - какие версии Опёнка тестировались? Если FreeBSD работает, а OpenBSD - нет, то это ненормально...
Ничего подобного. У меня OpenBSD шлюз крутится на AlphaServer DS25, который никогда с видеокартой знаком не был :)
Никаких проблем не наблюдалось
ipcop попробуйте;)
для старого компа
а чеб не m0n0wall засетапить ?
к ipcop в будущем статистика прикручивается через дополнения, резка сайтов через squidguard и т.д.
а моновол это тупик!
если ящиков до 100 то вполне рулит и dnsmasq
его вообще можно не настраивать.
Каких ящиков, какой DNS? Ты ваще статью читал? Где там про почту с DNS и FireWall написано?
Вам чё, заняться нечем? Зачем флудить не в тему?
Вы вообще понимаете о чём речь идёт??? Человек даёт пример настройки простого локального шлюза типа "мост" с функцией DHCP-сервера, только и всего. Где там написано что это файрвол?
Мне лично статейка показалась интересной и полезной для начинающих никсоедов (что в названии и указано). И я считаю, что автор написал как сумел. Но он хоть что-то полезное сделал в отличии от критиканов и флудеров типа вас.
И хотя статья на полноту материала не претендует, она даёт вполне доступное понятие шлюза в локалке и как его сделать из старого компа, которых у нас куча на складе лежит и никто не знает что с ней делать. Тут и вопрос утилизации старых компов затронут, и выход из положения предлагается, если в офисе нет маршрутизатора (и покупать его не собираются, как обычно), а он срочно нужен. Видно, что автор не новичёк в этом деле.
От меня ему большой респект за труды.
> Каких ящиков, какой DNS? Ты ваще статью читал? Где там про почту с DNS и FireWall написано?
> Вам чё, заняться нечем? Зачем флудить не в тему?
> Вы вообще понимаете о чём речь идёт???К сожалению, но это вы ничего не поняли из того, что anonymous написал. Перевожу его текст более понятным языком:
> если ящиков до 100 то вполне рулит и dnsmasq
> его вообще можно не настраивать.Если компьютеров в компании до 100 штук, то можно установить dnsmasq, что бы dns брался с локального шлюза, а не с "option domain-name-servers 10.135.62.2", который находиться за сетью - иначе лишний трафик и скорость resolve'a (перевода DNS имени типа google.ru в ip адрес) будет медленной.
Так что прежде чем возмущаться - подумайте, кто начинает флудить...
ipfire тожа интересная штука ...
Нормальная статейка. Про NAT хорошо написано, кратко и понятно. А google даёт очень сложные варианты. Я поначалу и связываться не хотел, а теперь подумываю себе такую штуку поставить...
Удивительно, но есть еще люди...
Лет 7-8 назад Open был актуален, или по крайней мере казался таким. Сегодня смысл теряется.
Расскажите это тем людям, которые используют его в качестве основы для решений «под ключ» в корпоративной среде. За подробностями можно хоть в BSD Magazine прогуляться. Вылезьте уже из вашей могилы.
Да я право слово не против, и даже рад за этих людей.
Но на фоне FreeBSD, а уж тем более linux это лишь приятные исключения, подтверждающие общую тенденцию.
Я с симпатией смотрю на эту систему, как раз в начале 2000-х она у нас в ответственных местах и крутилась. Но сегодня новичку начинать изучение unix систем на примере Open-a ИМХО не верный шаг, а грамотный спец в продакшн будет ставить то, что лучше знает, или если его все же припрет - он просто почитает доки. Если знаешь принципы, конкретная реализация тебя в тупик не поставит.
Хорошая статейка для начинающих изучать Unix и системы *BSD, ну и для общей пропаганды Юникса вообще, да ещё в рунете. Побольше бы таких статей на русском писали, а то у нас кроме рекламы Винды почти ничего нет, о других ОС и не вспоминают...
Согласен с Magic-ом, такие статьи в рунете нужны и побольше. Особенно в свете официального перехода России на ОС UNIX (Linux).
Спасибо автору, и таким как он, за вклад в общее дело!
Статья отличная. И нечего глумиться над автором. Может быть он только начинает осваивать OpenBSD.
> Статья отличная. И нечего глумиться над автором. Может быть он только начинает
> осваивать OpenBSD.Если он только начинает осваивать, то почему других учит, когда сам не разобрался? Для себя заметки делать - это одно. А другим что-то советовать - это совсем другое. Учить, не разбираясь в вопросе - БЕЗОТВЕТСТВЕННО.
Вот есть некий (реальный, знаю "изнутри") политехнический колледж в Москве. Там как бы есть преподавательский состав, в том числе по ИТ-специальностям: от "вёрда" до сетевой маршрутизации. Когда этим горе-преподавателям предложили: вот мы заключили партнёрское соглашение с Cisco, двое из вас могут бесплатно пройти курсы у них для повышения квалификации - в ответ знаете, что было сказано? "Мы всё это уже знаем, нам не интересно". Ага. А когда несколько коробочек вроде 2960 приехали, эти знающие даже не знали, куда какой провод там втыкать. И эти люди считают, что всё нормально, так и должно быть. Им плевать, что то, что они дают - устарело или попросту неверно. "Не нравится - не учитесь у нас"? - а как определить-то? Ведь за тем к ним и приходят, чтобы начать разбираться в этих вопросах.
В общем, неверная информация - хуже отсутствия информации вообще. Второе хотя бы стимулирует к дальнейшим поискам. А вот когда неверная информация становится основой для решений других людей, ничего хорошего ждать не приходится.
Не знаю как вам!? Заядлым юниксоидам! Но мне эта простенькая статья помогла за 3 часа сделать интернет-шлюз для 10 компов в маленькой организации, который требовалось закончить до утра. Прочитать книжку в 220 страниц и осмыслить ее до утра не представлялось возможным. По крайней мере для меня - тугодума. Для меня как начинающего в самый раз.