четверг, 18 июля 2013 г.

FreeBSD 9. Инсталляция системы, настройка сети и шлюза. Часть 1

За основу легла книга Корнея Корниенко, "FreeBSD 9 Корпоративный интернет-сервер".
Мне довелось лично познакомиться с ним и получить аж 2 одинаковые книги.
Однозначно книга хорошая, 2013 года. Рекомендую к чтению, да и стоит она не дорого.

Это первая часть, которая посвящена установке FreeBSD 9, настройке сети, шлюза и некоторых программ. Постепенно, по мере изучения FreeBSD и чтения книги, сервер будет все больше разрастаться, и он будет выполнять свои функции по максимуму.
Что имеем:
Машина на virtualbox;
Две сетевые карты;
Образ FreeBSD 9.1.
Будем считать, что система установлена.
Особых проблем возникнуть не должно, установщик псевдографический, пунктов выбора немного.

У меня возник один подводный камень, установщик вылетал посреди установки системы.
Я загрузился с подробным выводом информации при инсталляции системы и обнаружил, что проблема с памятью. У меня по умолчанию на виртуалке было выделено 128М памяти, после того, как я поставил 512М, все заработало.

Обязательно создать юзера и добавить его в группу wheel. Он же и будет администратором. Ведь это сервер, а наличие только одного рута это очень плохо.
Создать юзера можно командой adduser.

По хорошему надо пересобрать полностью ядро, но меня дефолтное почти устраивает. Внесем небольшие изменения.
# cd /usr/src/sys/i386/conf
# cp GENERIC GATEWAY

# vi GATEWAY
   #options INET6
   options IPFIREWALL
   options IPFIREWALL_FORWARD
   options IPDIVERT
   options DUMMYNET
Все это нужно для того, чтобы сервер мог функционировать в качестве шлюза.
Компилим ядро.
# config GATEWAY
# cd ../compile/GATEWAY
# make cleandepend && make depend
# make && make install
Пока ядро компилится, можно заняться настройкой сети.

У меня две сетевые карты, em0 и em1.
em0 смотрит в интернет, em1 - в сеть.
Кто не знает, что такое шлюз - welcome.
Плюс я сижу за роутером.
Схема примерно такая:
провайдер -> роутер -> em0-em1 -> сеть

Настраиваем:
# ifconfig em0 inet 10.0.X.15 netmask 255.255.255.0 broadcast 10.0.2.255
# ifconfig em1 inet 192.168.0.13 netmask 255.255.255.0 broadcast 192.168.0.255
где 10.0.X.15 - первая сетевуха, на интернет;
192.168.0.13 - вторая сетевуха, в сеть.

# route add default 192.168.0.1
# vi /etc/resolv.conf
   domain Dlink
   nameserver 10.0.X.3
   nameserver 192.168.0.1

# ping ya.ru

Это все до перезагрузки. Добавим все в автозагрузку.
# vi /etc/rc.conf
   hostname="freebsd"
   sshd_enable="YES"
   ntpd_enable="YES"
   dumpdev="NO"
   ifconfig_em0="inet 10.0.X.15 netmask 255.255.255.0 broadcast 10.0.2.255"
   ifconfig_em1="inet 192.168.0.13 netmask 255.255.255.0 broadcast 192.168.0.255"
   defaultrouter="192.168.0.1"
   firewall_enable="YES"
   firewall_type="open"

Устанавливаю привычный для себя софт.
# cd /usr/ports/security/sudo
# make install clean
# visudo
   %wheel ALL=(ALL) NOPASSWD: ALL

# cd /usr/ports/shells/bash
# make install clean

# chsh myuser
   Class: russian
   Shell: /usr/local/bin/bash

# cd /usr/ports/editors/vim
# make install clean

Локализация:

У меня возник еще один подводный камень, мне не удалось прикрутить UTF-8, пока временно поставил KOI8-R, буду думать дальше.

# vi /etc/login.conf
   russian|Russian Users Accounts :\
     :charset=KOI8-R:\
     :lang=ru_RU.KOI8-R:\
     :lc_all=ru_RU.KOI8-R:\     
     :tc=default:

# cap_mkdb /etc/login.conf
# pw usermod -n myuser -L russian

# vi /etc/rc.conf
   keymap="ru.koi8-r"
   font8x8="cp866-8x8"
   font8x14="cp866-8x14"
   font8x16="cp866b-8x16"
   scrnmap="koi8-r2cp866"

Далее планирую настроить Squid, DNS, DHCP, ipwf , proftpd, sendmail/postfix+dovecot, антиспам, ssl, apache и т.д.
В общем сделать полноценный веб-сервер, в домашних условиях.

UPD: 26.07.2013
Вторая часть находится тут.

2 комментария:

Анонимный комментирует...

Доброго времени суток, я в этом деле новичок и у меня в процессе настройки по вышеизложенному описанию возник вопрос. О ядре сказано, что вас и дефолт устраивает, и дабы не собирать новое, вы вносите в него некие изменения. Как я понимаю, создаётся некий GATEWAY, который мы редактируем, далее собираем и вроде бы все хорошо. С внесёнными изменениями мы имеем новоиспеченное ядро, с необходимыми коррективами. Если я правильно понимаю, то в роли текущего ядра выступает GATEWAY, с заложенными в него опциями. Однако, при попытке получить информацию о текущем ядре, командой uname -i, он выдает, что мы все ещё используем GENERIC вместо собранного и настроенного GATEWAY. Мы ведь конфигурируем "гатевэй", собираем его, а в качестве ядра по умолчанию "генерик". Обьясните, коллеги, будьте добры :)

Анонимный комментирует...

Прошу прощения, разобрался сам, оказывается нужно было выполнять с -a.