Реализация сети на базе FreeBSD - пошаговая инструкция
В этой статье будет рассмотрена реализация простой (офисной или домашней) локальной сети c выходом в Интернет на базе операционной системы FreeBSD. Рассмотренный в предыдуших статьях сервер (он же шлюз в Интернет) будет реализован именно на этой операционной системе. Здесь мы рассмотрим только базовую установку FreeBSD и настройку выхода в Интернет, а дополнительные сетевые сервисы (FTP, WEB и пр.) будут рассмотренны в соответствующих статьях. Дальнейший материал будет основан на статье "Простая офисная локальная сеть с подключением к Интернет".
Базовая установка и настройка FreeBSD
Итак, после подготовительных действий, рассмотренных в статье "Простая офисная локальная сеть с подключением к Интернет", приступим к установке операционной системы FreeBSD 6.2.
Образы CD можно скачать с сайта www.freebsd.org (2 CD).
После загрузки компьютера с инсталляционного CD запускается программа sysinstall, которая предназначена для установки и настройки FreeBSD. С помощью этой программы можно произвести настройку операционной системы не только во время установки, но и после, в любое время, запустив ее из командной строки (# sysinstall).
Навигация в ней осуществляется с помощью следующих клавиш: стрелки курсора, <пробел>, <enter>, <tab> (причем <пробел> и <enter> эквивалентны, а клавиша <tab> аналогична стрелкам влево-вправо).
Чтобы вернуться на предыдущее меню, необходимо выбрать пункт Exit или [Cancel]. Омечать выбранные пункты можно или пробелом или enter-ом. (Из меню выбора пакетов (packages) можно выйти только, выбрав кнопку [Install], даже если вы никаких пакетов не хотите устанавливать.)
Начинаем установку.
1. Выбираем из меню пункт Custom.
2. Далее в появившемся меню выбираем пункт Partition и попадаем в редактор слайсов (слайсы соответствуют первичным разделам в терминологии Windows и Linux; для установки FreeBSD достаточно одного слайса). Примечание: если в компьютере несколько жестких дисков, то сначала будет предложено меню выбора диска.
Например, на моей машине уже есть два раздела с Windows XP , а остальное место обозначено как unused (не занято):
Чтобы удалить какой-либо раздел, на него надо стрелками вверх-вниз подвести курсор и нажать клавишу <D>, но если необходимо оставить существующие разделы, например с Windows, то тогда их трогать не надо.
Чтобы создать слайс для freebsd надо подвести курсор на раздел, помеченный как unused, и нажать клавишу <C> (Create Slice). В появившемся окне надо ввести размер создаваемого слайса в блоках (или мегабайтах, добавив букву M после введенного числа, например - 1000M) или оставить значение по умолчанию для использования всего свободного пространства.
Далее соглашаемся с предложенным типом раздела (165 - для FreeBSD). В результате получаем слайс ad2s3, где ad2s3 означает: ata disk 2, slice 3.
Для завершения редактирования слайсов надо нажать клавишу <Q> (Finish).
3. В появившемся меню выбираем установку менеджера загрузки - BootMgr.
4. Выбираем пункт Label и попадаем в редактор разделов файловой системы FreeBSD. Здесь созданный ранее слайс можно "нарезать" на разделы файловой системы FreeBSD. Это разбиение можно произвести автоматически, нажав клавишу <A> (Auto Defaults) или вручную. Попробуйте автоматическое разбиение. Удалить любой раздел можно клавишей <D>. Но лучше вручную создать необходимые разделы.
Для создания раздела курсор ставим на "нарезаемый" слайс ad2s3 (или какой там у вас... в самой верхней строке) и нажимаем клавишу <C> (Create), вводим размер создаваемого раздела (не забываем в конце числа букву M, если вводится размер в мегабайтах), выбираем тип "Swap" для swap раздела или "FS" - для всех остальных разделов и указываем точку монтирования. (Точка монтирования - это каталог, в который будет монтироваться раздел). Повторяем процедуру для всех создаваемых разделов. Размеры разделов необходимо хорошо спрогнозировать. Например в разделе /var будут находиться временные файлы, лог-файлы, файлы баз данных, очереди печати, почты и т.д.; в /usr (точнее в /usr/local) - все устанавливаемые дополнительно приложения; в /home - каталоги пользователей; размер раздела SWAP обычно выбирается равным одному-двум размерам RAM; для корневого раздела "/" достаточно 256MB.
У меня получилось так:
Как можно видеть, разделы файловой системы обозначаются добавлением буквы (a,b,...) к имени слайса.
Завершаем редактирование разделов, нажав <Q> (Finish), и возвращаемся в меню.
5. Переходим к пункту Distributions, где можно выбрать тип базовой установки, и отмечаем опцию Developer, которая означает, что будут установлены все основные бинарные файлы (системные утилиты, библиотеки, компиляторы), исходники и документация. Соглашаемся на установку коллекции портов (Ports Collection). Далее, выбрав пункт Exit, возвращаемся в предыдущее меню и выбираем Commit, выбираем источник установки (в нашем случае CD/DVD) и отвечаем утвердительно на предупреждение о необратимости дальнейших действий. После этого идет процесс установки базовых компонентов системы. После завершения установки будет предложено вернуться в кофигурационное меню для продолжения установки/насройки. Выбираем [YES] и возвращаемся в меню.
6. В пункте Root Password устанавливаем пароль пользователя root (администратора). Пункт User Manager не трогаем - пользователей добавим потом.
7. Руссифицируем консоль (пункт Console):
- в пункте Font выбираем IBM 866,
- в пункте Keymap выбираем Russia KOI8-R,
- в пункте Screenmap выбираем KOI8-R to IBM866,
- в пункте Ttys выбираем KOI8-R (cons25r).
8. Настраиваем мышь (пункт Mouse):
- в пункте Type выбираем auto (в большинстве случаев),
- в пункте Port выбираем PS/2 (или COM1...),
- в пункте Enable включаем поддержку мыши и проверяем ее работу.
9. В пункте Networking можно настроить сеть:
- в пункте Interfaces можно выбрать из списка и настроить определившиеся сетевые интерфейсы (для некоторых сетевых карточек возможно потребуется перекомпилировать ядро или настроить их, прежде чем они появятся в списке). Настроить сеть можно позже, см. раздел "Настройка сети" ниже.;
- отмечаем опцию ssh, чтобы иметь защищенный удаленный доступ к системе;
- отмечаем опцию Gateway, чтобы разрешить маршрутизацию ip пакетов между сетевыми интерфейсами (если машина будет использоваться как маршрутизатор).
Но к настройке сети мы еще вернемся в одной из следующих статей.
10. Пункт Security не трогаем.
11. Выбираем пункт Packages, чтобы сразу установить несколько пакетов, хотя устанавливать приложения лучше из портов. В CD-ROM должен быть установлен инсталляционный CD. Пока выберем только командный интерпретатор bash. Его можно найти в группе shells. Ну, а далее по вкусу, например можно сразу выбрать установку XFree86-4.3, kde, moziila и т.д., хотя для сервера по большому счету иксы не нужны.
Отметив клавишей <enter> или <space> необходимые пакеты, выбираем внизу пункт [Install], затем [OK], ждем окончания установки и выходим из sysinstall. Соглашаемся на перезагрузку, не забываем вынуть CD. На этапе загрузки из меню загрузчика выбираем FreeBSD (если используется несколько ОС).
12. Входим в систему под именем root.
13. Настраиваем консоль под себя. (Этот пункт выполнять необязательно).
Настроим и сделаем основным установленный нами командный интерпретатор bash (как в Linux).
Проверим, есть ли он в файле /etc/shells, если нет, то добавляем туда строку: /usr/local/bin/bash.
Сделать интерпретатор bash основным для суперпользователя root, можно командой:
# pw usermod root -s /usr/local/bin/bash
Копируем файлы .bash_profile, .bashrc, .bash_logout из директории /usr/compat/linux/etc/skel в /root и /usr/share/skel, но уже с именами dot.bash_profile, dot.bashrc, dot.bash_logout соответственно. Сделать это можно следующими командами:
# cp /usr/compat/linux/etc/skel/.bash_profile /root/.bash_profile # cp /usr/compat/linux/etc/skel/.bashrc /root/.bashrc # cp /usr/compat/linux/etc/skel/.bash_logout /root/.logout # cp /usr/compat/linux/etc/skel/.bash_profile /usr/share/skel/dot.bash_profile # cp /usr/compat/linux/etc/skel/.bashrc /usr/share/skel/dot.bashrc # cp /usr/compat/linux/etc/skel/.bash_logout /usr/share/skel/dot.logout
Теперь эти конфигурационные файлы при создании новых пользователей будут копироваться в их домашние каталоги.
Изменим настройки по умолчанию для интерактивной команды добавления пользователей adduser, запустив ее с ключом -C:
# adduser -C
(отвечаем class: russian, shell: bash, остальное оставляем по умолчанию).
Все. Теперь новые пользователи, созданные утилитой adduser, будут иметь руссифицированную консоль с командным интерпретатором bash.
И последний штрих. Для изменения приглашения командной строки в файлы .bashrc (и /usr/share/skel/dot.bashrc) добавим строку: PS1='[u@h W]$ ', после чего приглашение будет выглядеть как [username@hostname currentdir]$ .
Отмечу, что редактировать конфигурационные файлы можно в простом текстовом редакторе ee, например:
# ee /usr/share/skel/dot.bashrc
Далее можно создавать новых пользователей с помощью утилиты adduser. Чтобы пользователь имел в дальнейшем возможность получать права суперпользователя root по команде su, его надо включить в группу wheel.
Переключать раскладку клавиатуры можно клавишей <CAPSLOCK>. При нажатой клавише <SHIFT> <CAPSLOCK> выполняет свою обычную функцию.
На этом начальная установка и настройка системы закончена.
Идем далее...
Конфигурирование ядра
Здесь мы коротко затронем вопросы конфигурирования и компиляции ядра.
Наверно, многие содрагались, услышав устрашающую фразу - "компиляция ядра системы". Однако, если спокойно разобраться, ничего страшного здесь нет. С точки зрения обывателя ядро - это "прослойка" между прикладными программами и "железом". Прикладные программы не взаимодействуют с "железом" и между собой напрямую, все взаимодействие осуществляется через ядро, и взаимодействие это осуществляется через стандартный интерфейс системных вызовов. Кроме интерфейса системных вызовов ядро содержит файловую подсистему, подсистему управления процессами, подсистему ввода-вывода, драйверы устройств (модули ядра). Но нам пока важно лишь то, что ядро непосредственно взаимодействует с "железом", а FreeBSD позволяет нам сконфигурировать ядро под конкретное "железо". Устанавливаемое по умолчанию ядро поддерживает много неиспользуемого в нашем случае оборудования и обеспечивает лишь базовую функциональность.
Приступим к конфигурации ядра
Настройка ядра FreeBSD осуществляется путем редактирования в любом текстовом редакторе конфигурационного файла ядра. По умолчанию это /usr/src/sys/i386/conf/GENERIC . Но мы будем редактировать не его, а его копию/usr/src/sys/i386/conf/NEW_GENERIC.
Для этого выполняем следующие команды:
# cd /usr/src # cp sys/i386/conf/GENERIC sys/i386/conf/NEW_GENERIC # ee sys/i386/conf/NEW_GENERIC
В файле NEW_GENERIC удаляем поддержку оборудования, которого у нас нет, и функциональность, которая нам не нужна, просто комментируя или удаляя соответствующие строки. Если нет уверенности, то лучше ничего не удалять. Далее добавляем несколько параметров, чтобы включить NAT (трансляцию адресов - преобразование IP адресов локальной сети во внешний IP адрес), что даст возможность использовать в Интернете один внешний IP адрес всеми компьютерами локальной сети:
ident NEW_GENERIC options IPFIREWALL options IPDIVERT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=1000
Здесь ident NEW_GENERIC определяет имя нового ядра (можно любое задать).
options IPFIREWALL - включает FIREWALL.
options IPFIREWALL_VERBOSE - включает логи файрвола.
options IPDIVERT - разрешает перенаправлять пакеты с одного сетевого интерфейса на другой, опция необходима для трансляции адресов, для "расшаривания" Интернета.
Списки поддерживаемых устройств и опций можно найти в файлах:
/usr/src/sys/i386/conf/NOTES и /usr/src/sys/conf/NOTES.
Следующими командами выполняем компиляцию ядра:
# make buildkernel KERNCONF=NEW_GENERIC # make installkernel KERNCONF=NEW_GENERIC
Перезагружаем компьютер. Все. Старое ядро автоматически будет сохранено в каталоге /boot/kernel.old.
Не PnP устройства можно настроить, отредактировав файл /boot/device.hints. Требуемому устройству (по аналогии с другими) можно задать номера прерываний, портов и пр. Тамже можно запретить использование какого-либо устройства. Например, у меня в "маме" была "криво" реализованна поддержка acpi, из-за чего глючила мышь, а перепрошивать bios не хотелось. Поэтому я просто отключил поддержку acpi в ядре, добавив в файл /boot/device.hints следующую строку:
hint.acpi.0.disabled="1"
Но это просто пример. Надеюсь у вас все заработает нормально и без этого.
Еще один момент. Все определившиеся ядром устройства имеют буквенно-цифровые обозначения, например pcm0 - звуковая плата. Какие устройства, под какими именами и насколько удачно ядро смогло определить их и сконфигурировать, можно увидеть при загрузке системы или по команде dmesg.
Настройка сети
Теперь можно приступить к настройке нашего сервера как шлюза в Интернет. Итак наш сервер имеет две сетевых платы: одна "смотрит" в Интернет, а вторая - в нашу локальную сеть. В сетевых настройках первой сетевой платы нам надо прописать IP адрес, шлюз, маску подсети и IP-адреса DNS-серверов, которые нам предоставил Интернет-провайдер. Пусть в нашем примере нам провайдер предоставил: внешний IP 195.34.10.134, шлюз провайдера 195.32.10.1, DNS серверы: 195.34.32.116 и 87.240.1.2).
В настройках второй сетевой платы надо прописать IP адрес 192.168.20.1, который принадлежит нашей локальной сети (см. "Простая офисная локальная сеть с подключением к Интернет").
Настройку сетевых интерфейсов можно произвести с помощью уже известной вам утилиты sysconfig (см. пункт 9 базовой установки выше) или путем прямого редактирования файла /etc/rc.conf.
Так или иначе для нашего примера файл /etc/rc.conf должен содержать следующие строки (сетевые настройки):
ifconfig_rl0="inet 195.34.10.134 netmask 255.255.255.0" # внешний IP и маска подсети, предоставленные провайдером ifconfig_rl1="inet 192.168.20.1 netmask 255.255.255.0" # внутренний IP, который будет шлюзом по умолчанию для нашей локальной сети gateway_enable="YES" # режим маршрутизатора, позволяет пересылать пакеты между сетевыми интерфейсами natd_enable="YES" # включаем NATD демон, который занимается трансляцией адресов: внутренних во внешние и наоборот natd_interface="rl0" # natd демон работает на внешнем интерфейсе defaultrouter="195.34.10.1" # шлюз по умолчанию, который предоставил провайдер firewall_enable="YES" # включаем firewall firewall_type="OPEN" # пока ограничимся либеральным вариантом файрволла hostname="myoffice.ru" # имя этого сервера sshd_enable="YES" # для удаленного доступа к серверу
rl0 и rl1 - это имена сетевых интерфейсов в нашем примере (на чипе Realtek). Имена своих сетевых интерфейсов можете посмотреть командой ifconfig или через интерактивную утилиту настройки syscinstall.
Если у вас есть еще какие либо удаленные локальные сети, например 192.168.40.0/24 и 192.168.50.0/24, доступ к которым из нашей локальной сети осуществляется через шлюзы 192.168.20.101 и 192.168.20.102 соответственно, то статические маршруты маршруты к этим сетям при необходимости можно задать следующим образом (в файле /etc/rc.conf):
static_routes="net1 net2" routes_net1="192.168.40.0/24 192.168.20.101" # пакеты в подсетку 192.168.40.0/24 пойдут через шлюз 192.168.20.101 routes_net2="192.168.50.0/24 192.168.20.102" # пакеты в подсетку 192.168.50.0/24 пойдут через шлюз 192.168.20.102
Далее в файле /etc/resolv.conf прописываем адреса DNS серверов, которые нам предоставил провайдер:
domain myoffice.ru nameserver 195.34.32.116 nameserver 87.240.1.2
Теперь чтобы изменения вступили в силу, выполним команду /etc/netstart или перезагрузим сервер.
Проверяем работу сети.
Сначала пингуем до шлюза провайдера:
# ping 195.34.10.1
Потом до сервера DNS:
# ping 195.34.32.116
А потом до любых интернет-узлов:
# ping yandex.ru
Пингуем машины в своей локальной сети, например:
# ping 192.168.20.4
Если пакеты проходят, значит все нормально.
Настройка выхода в Интернет рабочих компьютеров (рабочих станций) в локальной сети
Теперь переходим к настройке рабочих компьютеров.
Если для рабочих компьютеров используются статические IP адреса (т.е. вводятся вручную, а не раздаются через сервер DHCP), то надо просто в настройках протокола TCP/IP у каждого рабочего компьютера прописать:
статический IP-адрес (уникальный для каждого компьютера в локальной сети, например 192.168.20.4),
маску подсети (255.255.255.0 в нашем случае)
шлюз по умолчанию (192.168.20.1, т.е. IP нашего сервера на FreeBSD, который и является шлюзом в Интернет)
DNS серверы (такие же как у сервера, предоставленные провайдером)
Делается это в Windows XP через:
Пуск-Панель управления-Сетевые подключения на значке сетевого подключения к локальной сети кликаем правой кнопкой мыши, выбираем "свойства" - Настройки TCP/IP.
Перезагружаем компьютер и проверяем работу сети:
Пуск-Выполнить-cmd-ok
Далее в появившемся черном окне интерпретатора пингуем сначала наш сервер (он же - шлюз в нашей локальной сети), затем шлюз интернет-провайдера, днс-сервер, любые узлы в Интернет по имени, например:
ping 192.168.20.1 ping 195.34.10.1 ping 195.34.32.116 ping ofnet.ru
Если все пакеты проходят, то вас можно поздравить с успехом.
Оставьте свой комментарий: