Если кому надо - могу описать пошаговый процесс установки FreeBSD 4.7 в качестве сетевого сервера со следующими службами:
Dial-in server
Mail server
Domain Name Server
FTP server
WWW server
Firewall based on Network Address Translator
Squid proxy server
Port redirector
Network traffic calculator
etc...
Итак...
1. Установка сервера
1.1. Берем комп с винтом, сидиромом, сетевухами, а также компакт-диск FreeBSD 4.7.
1.1.1. Если нет диска или сидирома, но есть куча инета и нахаляву, то читаем мануал, как фрюха ставится по сети, или с инета, или с винта.
1.2. Вставляем диск в сидиром, в BIOS делаем загрузку с него.
1.2.1. Если сидиром не загрузочный или у вас комп не поддерживает загрузку с CDROM, читаем мануал, как загрузить фрюху с дискет. В таком случае вам нужно иметь дисковод и две дискеты.
1.3. Загрузитесь с CDROM. После того, как по экрану пробежит куча всякой шняги, выскочит менюшка пре-конфигурации ядра, которую можно благополучно пропустить.
1.4. Далее выскочит меню программы установки. В нем выберите custom -> partition
1.5. Создайте раздел FreeBSD на весь диск клавишей A.
1.6. Выберите загрузчик standard.
1.7. Разбейте раздел в пункте меню label. Создайте своп сервера мегабайт на 100-300 командой c 200MB SWAP и корневой раздел командой c <enter> FS с точкой монтирования /. Выход Q.
1.8. Список устанавливаемых на сервер программ выберите в меню distributions. Для сервера или файрволла будут нужны [x]minimal, затем в пункте >>custom добавьте [x]doc, [x]man, [x]ports и в подменю [ ]src исходники ядра [x]sys. Выйдите в меню установки <<<exit <<<exit <<<exit.
1.9. Выбор дистрибутива: media -> CD/DVD
1.10. Выполнение установки: Commit [yes].
1.11. После того, как будут выполнены все операции, система спросит, не хотите ли вы вернуться в меню, чтобы сделать еще какие-нибудь настройки. Ответьте на вопрос "Visit the..." [y]
1.12. Установите пароль для пользователя root.
1.13. Добавьте своего рабочего пользователя. Это необходимо для того, чтобы безопасно работать впоследствии на сервере, не боясь того, чтобы как-то повредить систему. Выберите рабочую группу wheel и обязательно укажите членство в этой группе.
1.14. Настройте консоль: console: Font: ibm866; Saver: snake (или любой другой по вкусу); Screen map: koi8-r to ibm866.
1.15. Настройте часовой пояс. Time zone: UTC? [NO] -> Asia ->Russian Federation -> Moscow+4 -> KRAT [YES]. Если вы живете в другом регионе, у вас будет по-другому. Разберетесь.
1.16. Сетевые настройки. Сначала нужно настроить интерфейс, смотрящий в локальную сеть, а потом смотрящий в инет, чтобы в качестве шлюза по умолчанию был роутер или файрволл.
Networking -> Interfaces -> xl1 -> IPv6 [NO] -> DHCP [NO] -> HOST: www.mydomain.ru; DOMAIN: mydomain.ru; IPv4 Gateway: 192.168.1.1; Name Server:10.0.0.1; IPv4 Address: 10.0.0.1; Netmask: 255.0.0.0 [OK] -> Would you like to bring... [YES]
Interfaces -> xl0 -> IPv6 [NO] -> DHCP [NO] -> HOST: www; DOMAIN: mydomain.ru; IPv4 Gateway: 192.168.1.1; Name Server:10.0.0.1; IPv4 Address: 192.168.1.2; Netmask: 255.255.255.252 [OK] -> Would you like to bring... [YES]
[x]Exit [x]Exit [x]Exit Install
1.16.1. Если у вас сетевые карточки не 3com, имена сетевых интерфейсов будут другие, а не xl...
1.16.2. Вместо mydomain.ru напишите свое имя домена.
1.16.3. Вместо www напишите свое имя сервера (если другое).
1.16.4. Вместо адресов 192.168.1.1 и 192.168.1.2 с маской 255.255.255.252 напишите адреса своего роутера (или файрволла), сетевой карточки интерфейса, обращенного к роутеру (файрволлу) и маску.
1.16.5. Вместо адреса 10.0.0.1 с маской 255.0.0.0 напишите адрес вашего сервера в локальной сети и маску.
1.17. Перезагрузка
2. Конфигурирование
2.1. Зайдите в систему под именем root и с паролем, который был установлен в П.1.12.
2.2. Проверьте правильность настройки протокола IP. Пропингуйте ваш роутер командой
ping 192.168.1.1
См. п.1.16.4
2.2.1. Если ping не проходит, запустите программу конфигурации и проверьте настройку ip:
/stand/sysinstall
2.3. Установите Demos Commander из коллекции портов. Для этого перейдите в каталог портов и сделайте установку:
cd /usr/ports/misc/deco
make
make install
2.3.1. Установщик портов обратится в интернет для получения пакета исходных текстов. Если у вас есть откомпилированный пакет программы, можно установить ее командой:
pkg_add decoXXXXXXXX.tgz
или:
pkg_add ftp://servername/serverpath/decoXXXXXXXX.tgz
где XXXXXXXX - номер версии программы, например, deco-3.8.3_1.tgz
2.4. Установите аналогично п.2.3. сервер apache:
cd /usr/ports/www/apache13
make
make install
2.5. Установите аналогично п.2.3. прокси-сервер squid:
cd /usr/ports/www/squid25
make
make install
/usr/local/sbin/squid -z
Последняя команда запускает прокси-сервер squid в режиме инициализации каталогов, в которых будет размещаться кэш.
2.6. Создание ядра сервера.
2.6.1. Запустите Демос Коммандер командой:
/usr/local/bin/deco
2.6.2. Зайдите в каталог /usr/src/sys/i386/conf и скопируйте текущий файл конфигурации ядра сервера GENERIC в файл с другим именем. Чтобы отслеживать изменения, удобно давать файлу имя, соответствующее текущей дате изменения, например, 20021120.
2.6.3. Сконфигурируйте новое ядро, выделив его файл курсором и нажав F4. В редакторе закомментируйте все ненужные строки. А также внесите изменения в существующие:
#cpu I386_CPU# - если процессор 486 или новее.
#cpu I486_CPU# - если процессор Pentium, MMX, Cyrix MII или новее.
#cpu I586_CPU# - если процессор Pentium II, AMD K6 или новее.
maxusers 16# - от этой переменной зависит количество выделяемой памяти для пользовательских сессий. 16 хватит за глаза.
#options MATH_EMULATE# - в современных процессорах уже есть встроенный сопроцессор.
#options INET6# - наверняка, вам пока не нужна поддержка протокола IP6?
#options FFS# - и этой файловой системы...
#options FFS_ROOT# - и этой ее фичи...
#options NFS# - сетевая файловая система в настоящее время не нужна.
#options NFS_ROOT# - и эта фича тоже.
########## NATD ######### все это нужно для работы в качестве файрволла
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
######### PPPCOMP ####### а это нужно для сжатия пакетов при работе с модемом, если на нас позвонит рабочая станция или сервер unix
options PPP_BSDCOMP#PPP BSD-compress support
options PPP_DEFLATE#PPP zlib/deflate/gzip support
######### TRAFD ######### еще одна фича - для подсчета траффика
pseudo-device bpf 4# Berkeley packet filter
######################### а это нужно для регулировки скорости сетевых потоков, чтобы админу жилось не просто хорошо, но и быстро
options DUMMYNET
Все остальное нужно комментировать с осторожностью, потому что, например, исключение упоминания устройств SCSI из файла конфигурации может привести к невозможности его компиляции.
2.6.4. Запустите команду:
config 20021120
Будет прочитан файл конфигурации, который вы написали и в специальном каталоге будут собраны исходные тексты всех необходимых для его загрузки модулей. Перейдите в каталог /usr/src/sys/compile/20021120 и вы их увидите. Теперь в этом каталоге запустите команду:
make depend
Все модули будут прочитаны и для каждого из них будут найдены библиотеки, необходимые для компиляции. Этот процесс займет некоторое время. Теперь можно компилировать ядро:
make
Компиляция ядра, как говорят, может занять порядка 20 минут или даже более. Но на хорошем компе может выполниться и за 5 минут. Все. ядро готово.
2.6.4.1. Если возникли ошибки в процессе сборки или компиляции ядра, проверьте список добавленных и закомментированных строк. Скорее всего, вы написали ссылку на модуль, которого нет, или допустили ошибку.
2.7. Перейдите в каталог /etc/ здесь хранится подавляющее большинство файлов настройки сервера. Создайте файл natd.conf командой:
touch natd.conf
со следующими строками:
same_ports yes
use_sockets yes
2.8. Для работы с дискетой добавьте строку в файл /etc/fstab :
/dev/fd0 /floppy msdos rw,noauto 0 0
и создайте каталог /floppy
2.9. Добавьте записи ваших компьютеров в сети, к которым вы хотели бы обращаться в файл /etc/hosts :
10.0.0.1 www.mydomain.ru mydomain.ru ns.mydomain.ru ftp.mydomain.ru
10.0.0.2 vovka vovka.mydomain.ru
10.0.0.3 boss
и т.п.
2.10. Для пользователей, которые будут логиниться на сервер через модемы и использовать окно терминала, добавьте вместо оболочки вызов pppd в файл /etc/shells:
/usr/sbin/pppd
2.11. Измените файл /etc/ttys строки:
ttyd0 "/usr/libexec/getty std.115200" dialup on
ttyd1 "/usr/libexec/getty std.115200" dialup on
... (для всех модемных линий) ...
ttyp0 none network off insecure
ttyp1 none network off insecure
... несколько штук надо прописать ...
Строки ttyp* запретят соединяться с сервером по сети с помощью telnet с правами root. Для управления сервером используйте логин вашего пользователя (входящего в группу wheel) и потом выполняйте команду su, чтобы получить права root.
2.12. Измените строки в файле /etc/inetd.conf :
ftpd stream tcp nowait root /usr/libexec/ftpd ftpd -l
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
pop3 stream .............
imap4 stream .............
2.13. Добавьте строки в файл /etc/newsyslog.conf :
/var/log/httpd-access.log 644 2 * 168 B
/var/log/httpd-error.log 644 2 * 168 B
/var/log/named.log 644 2 100 * B
/var/log/routed/log 644 2 100 * B
/var/log/ppp.log ..... 644 .....
/var/log/slip.log ..... 644 .....
2.14. Дописать строки в файл /etc/rcconf :
defaultrouter="192.168.1.1"
firewall_enable="yes"
firewall_type="open"
natd_enable="yes"
natd_interface="xl1"
natd_flags="-f /etc/natd.conf"
sshd_enable="no"
usbd_enable="no"
2.15. Создайте файл /etc/resolv.conf с содержимым :
domain mydomain.ru
nameserver 10.0.0.1
2.16. Добавьте строки в файл /etc/syslog.conf:
!pppd
*.* /var/log/ppp.log
!named
*.* /var/log/named.log
!routed
*.* /var/log/routed.log
2.17. Создайте в каталоге /var/log файлы:
touch named.log
touch routed.log
2.18. Измените права доступа для файлов:
chmod 600 ppp.log
chmod 600 slip.log
2.19. Запишите правила для файрволла в файле rc.firewall:
...
##
# это правила для модемных номеров
${fwcmd} add 90 allow tcp from 10.0.0.3 to any
${fwcmd} add 91 allow tcp from any to 10.0.0.3
${fwcmd} add 92 allow tcp from 10.0.0.5 to any
${fwcmd} add 93 allow tcp from any to 10.0.0.5
##
# это правила для меня
${fwcmd} add 94 allow tcp from 10.0.0.16 to any
${fwcmd} add 95 allow tcp from any to 10.0.0.16
##
# это правила для сетевого юзверя, имеющего ограничение по скорости входящего трафика на 24000бит/с
${fwcmd} add 100 allow tcp from 10.1.1.10 to any via xl0
${fwcmd} add 105 pipe 1 tcp from any to 10.1.1.10 out xmit xl0
${fwcmd} pipe 1 config bw 24000bit/s
# И Т.Д.
##
# а всем остальным запретим лазить в инет
${fwcmd} add 799 deny tcp from any to any via xl0
...
2.20.
(продолжение следует)
Dial-in server
Mail server
Domain Name Server
FTP server
WWW server
Firewall based on Network Address Translator
Squid proxy server
Port redirector
Network traffic calculator
etc...
Итак...
1. Установка сервера
1.1. Берем комп с винтом, сидиромом, сетевухами, а также компакт-диск FreeBSD 4.7.
1.1.1. Если нет диска или сидирома, но есть куча инета и нахаляву, то читаем мануал, как фрюха ставится по сети, или с инета, или с винта.
1.2. Вставляем диск в сидиром, в BIOS делаем загрузку с него.
1.2.1. Если сидиром не загрузочный или у вас комп не поддерживает загрузку с CDROM, читаем мануал, как загрузить фрюху с дискет. В таком случае вам нужно иметь дисковод и две дискеты.
1.3. Загрузитесь с CDROM. После того, как по экрану пробежит куча всякой шняги, выскочит менюшка пре-конфигурации ядра, которую можно благополучно пропустить.
1.4. Далее выскочит меню программы установки. В нем выберите custom -> partition
1.5. Создайте раздел FreeBSD на весь диск клавишей A.
1.6. Выберите загрузчик standard.
1.7. Разбейте раздел в пункте меню label. Создайте своп сервера мегабайт на 100-300 командой c 200MB SWAP и корневой раздел командой c <enter> FS с точкой монтирования /. Выход Q.
1.8. Список устанавливаемых на сервер программ выберите в меню distributions. Для сервера или файрволла будут нужны [x]minimal, затем в пункте >>custom добавьте [x]doc, [x]man, [x]ports и в подменю [ ]src исходники ядра [x]sys. Выйдите в меню установки <<<exit <<<exit <<<exit.
1.9. Выбор дистрибутива: media -> CD/DVD
1.10. Выполнение установки: Commit [yes].
1.11. После того, как будут выполнены все операции, система спросит, не хотите ли вы вернуться в меню, чтобы сделать еще какие-нибудь настройки. Ответьте на вопрос "Visit the..." [y]
1.12. Установите пароль для пользователя root.
1.13. Добавьте своего рабочего пользователя. Это необходимо для того, чтобы безопасно работать впоследствии на сервере, не боясь того, чтобы как-то повредить систему. Выберите рабочую группу wheel и обязательно укажите членство в этой группе.
1.14. Настройте консоль: console: Font: ibm866; Saver: snake (или любой другой по вкусу); Screen map: koi8-r to ibm866.
1.15. Настройте часовой пояс. Time zone: UTC? [NO] -> Asia ->Russian Federation -> Moscow+4 -> KRAT [YES]. Если вы живете в другом регионе, у вас будет по-другому. Разберетесь.
1.16. Сетевые настройки. Сначала нужно настроить интерфейс, смотрящий в локальную сеть, а потом смотрящий в инет, чтобы в качестве шлюза по умолчанию был роутер или файрволл.
Networking -> Interfaces -> xl1 -> IPv6 [NO] -> DHCP [NO] -> HOST: www.mydomain.ru; DOMAIN: mydomain.ru; IPv4 Gateway: 192.168.1.1; Name Server:10.0.0.1; IPv4 Address: 10.0.0.1; Netmask: 255.0.0.0 [OK] -> Would you like to bring... [YES]
Interfaces -> xl0 -> IPv6 [NO] -> DHCP [NO] -> HOST: www; DOMAIN: mydomain.ru; IPv4 Gateway: 192.168.1.1; Name Server:10.0.0.1; IPv4 Address: 192.168.1.2; Netmask: 255.255.255.252 [OK] -> Would you like to bring... [YES]
[x]Exit [x]Exit [x]Exit Install
1.16.1. Если у вас сетевые карточки не 3com, имена сетевых интерфейсов будут другие, а не xl...
1.16.2. Вместо mydomain.ru напишите свое имя домена.
1.16.3. Вместо www напишите свое имя сервера (если другое).
1.16.4. Вместо адресов 192.168.1.1 и 192.168.1.2 с маской 255.255.255.252 напишите адреса своего роутера (или файрволла), сетевой карточки интерфейса, обращенного к роутеру (файрволлу) и маску.
1.16.5. Вместо адреса 10.0.0.1 с маской 255.0.0.0 напишите адрес вашего сервера в локальной сети и маску.
1.17. Перезагрузка
2. Конфигурирование
2.1. Зайдите в систему под именем root и с паролем, который был установлен в П.1.12.
2.2. Проверьте правильность настройки протокола IP. Пропингуйте ваш роутер командой
ping 192.168.1.1
См. п.1.16.4
2.2.1. Если ping не проходит, запустите программу конфигурации и проверьте настройку ip:
/stand/sysinstall
2.3. Установите Demos Commander из коллекции портов. Для этого перейдите в каталог портов и сделайте установку:
cd /usr/ports/misc/deco
make
make install
2.3.1. Установщик портов обратится в интернет для получения пакета исходных текстов. Если у вас есть откомпилированный пакет программы, можно установить ее командой:
pkg_add decoXXXXXXXX.tgz
или:
pkg_add ftp://servername/serverpath/decoXXXXXXXX.tgz
где XXXXXXXX - номер версии программы, например, deco-3.8.3_1.tgz
2.4. Установите аналогично п.2.3. сервер apache:
cd /usr/ports/www/apache13
make
make install
2.5. Установите аналогично п.2.3. прокси-сервер squid:
cd /usr/ports/www/squid25
make
make install
/usr/local/sbin/squid -z
Последняя команда запускает прокси-сервер squid в режиме инициализации каталогов, в которых будет размещаться кэш.
2.6. Создание ядра сервера.
2.6.1. Запустите Демос Коммандер командой:
/usr/local/bin/deco
2.6.2. Зайдите в каталог /usr/src/sys/i386/conf и скопируйте текущий файл конфигурации ядра сервера GENERIC в файл с другим именем. Чтобы отслеживать изменения, удобно давать файлу имя, соответствующее текущей дате изменения, например, 20021120.
2.6.3. Сконфигурируйте новое ядро, выделив его файл курсором и нажав F4. В редакторе закомментируйте все ненужные строки. А также внесите изменения в существующие:
#cpu I386_CPU# - если процессор 486 или новее.
#cpu I486_CPU# - если процессор Pentium, MMX, Cyrix MII или новее.
#cpu I586_CPU# - если процессор Pentium II, AMD K6 или новее.
maxusers 16# - от этой переменной зависит количество выделяемой памяти для пользовательских сессий. 16 хватит за глаза.
#options MATH_EMULATE# - в современных процессорах уже есть встроенный сопроцессор.
#options INET6# - наверняка, вам пока не нужна поддержка протокола IP6?
#options FFS# - и этой файловой системы...
#options FFS_ROOT# - и этой ее фичи...
#options NFS# - сетевая файловая система в настоящее время не нужна.
#options NFS_ROOT# - и эта фича тоже.
########## NATD ######### все это нужно для работы в качестве файрволла
options IPFIREWALL
options IPDIVERT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
######### PPPCOMP ####### а это нужно для сжатия пакетов при работе с модемом, если на нас позвонит рабочая станция или сервер unix
options PPP_BSDCOMP#PPP BSD-compress support
options PPP_DEFLATE#PPP zlib/deflate/gzip support
######### TRAFD ######### еще одна фича - для подсчета траффика
pseudo-device bpf 4# Berkeley packet filter
######################### а это нужно для регулировки скорости сетевых потоков, чтобы админу жилось не просто хорошо, но и быстро
options DUMMYNET
Все остальное нужно комментировать с осторожностью, потому что, например, исключение упоминания устройств SCSI из файла конфигурации может привести к невозможности его компиляции.
2.6.4. Запустите команду:
config 20021120
Будет прочитан файл конфигурации, который вы написали и в специальном каталоге будут собраны исходные тексты всех необходимых для его загрузки модулей. Перейдите в каталог /usr/src/sys/compile/20021120 и вы их увидите. Теперь в этом каталоге запустите команду:
make depend
Все модули будут прочитаны и для каждого из них будут найдены библиотеки, необходимые для компиляции. Этот процесс займет некоторое время. Теперь можно компилировать ядро:
make
Компиляция ядра, как говорят, может занять порядка 20 минут или даже более. Но на хорошем компе может выполниться и за 5 минут. Все. ядро готово.
2.6.4.1. Если возникли ошибки в процессе сборки или компиляции ядра, проверьте список добавленных и закомментированных строк. Скорее всего, вы написали ссылку на модуль, которого нет, или допустили ошибку.
2.7. Перейдите в каталог /etc/ здесь хранится подавляющее большинство файлов настройки сервера. Создайте файл natd.conf командой:
touch natd.conf
со следующими строками:
same_ports yes
use_sockets yes
2.8. Для работы с дискетой добавьте строку в файл /etc/fstab :
/dev/fd0 /floppy msdos rw,noauto 0 0
и создайте каталог /floppy
2.9. Добавьте записи ваших компьютеров в сети, к которым вы хотели бы обращаться в файл /etc/hosts :
10.0.0.1 www.mydomain.ru mydomain.ru ns.mydomain.ru ftp.mydomain.ru
10.0.0.2 vovka vovka.mydomain.ru
10.0.0.3 boss
и т.п.
2.10. Для пользователей, которые будут логиниться на сервер через модемы и использовать окно терминала, добавьте вместо оболочки вызов pppd в файл /etc/shells:
/usr/sbin/pppd
2.11. Измените файл /etc/ttys строки:
ttyd0 "/usr/libexec/getty std.115200" dialup on
ttyd1 "/usr/libexec/getty std.115200" dialup on
... (для всех модемных линий) ...
ttyp0 none network off insecure
ttyp1 none network off insecure
... несколько штук надо прописать ...
Строки ttyp* запретят соединяться с сервером по сети с помощью telnet с правами root. Для управления сервером используйте логин вашего пользователя (входящего в группу wheel) и потом выполняйте команду su, чтобы получить права root.
2.12. Измените строки в файле /etc/inetd.conf :
ftpd stream tcp nowait root /usr/libexec/ftpd ftpd -l
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
pop3 stream .............
imap4 stream .............
2.13. Добавьте строки в файл /etc/newsyslog.conf :
/var/log/httpd-access.log 644 2 * 168 B
/var/log/httpd-error.log 644 2 * 168 B
/var/log/named.log 644 2 100 * B
/var/log/routed/log 644 2 100 * B
/var/log/ppp.log ..... 644 .....
/var/log/slip.log ..... 644 .....
2.14. Дописать строки в файл /etc/rcconf :
defaultrouter="192.168.1.1"
firewall_enable="yes"
firewall_type="open"
natd_enable="yes"
natd_interface="xl1"
natd_flags="-f /etc/natd.conf"
sshd_enable="no"
usbd_enable="no"
2.15. Создайте файл /etc/resolv.conf с содержимым :
domain mydomain.ru
nameserver 10.0.0.1
2.16. Добавьте строки в файл /etc/syslog.conf:
!pppd
*.* /var/log/ppp.log
!named
*.* /var/log/named.log
!routed
*.* /var/log/routed.log
2.17. Создайте в каталоге /var/log файлы:
touch named.log
touch routed.log
2.18. Измените права доступа для файлов:
chmod 600 ppp.log
chmod 600 slip.log
2.19. Запишите правила для файрволла в файле rc.firewall:
...
##
# это правила для модемных номеров
${fwcmd} add 90 allow tcp from 10.0.0.3 to any
${fwcmd} add 91 allow tcp from any to 10.0.0.3
${fwcmd} add 92 allow tcp from 10.0.0.5 to any
${fwcmd} add 93 allow tcp from any to 10.0.0.5
##
# это правила для меня
${fwcmd} add 94 allow tcp from 10.0.0.16 to any
${fwcmd} add 95 allow tcp from any to 10.0.0.16
##
# это правила для сетевого юзверя, имеющего ограничение по скорости входящего трафика на 24000бит/с
${fwcmd} add 100 allow tcp from 10.1.1.10 to any via xl0
${fwcmd} add 105 pipe 1 tcp from any to 10.1.1.10 out xmit xl0
${fwcmd} pipe 1 config bw 24000bit/s
# И Т.Д.
##
# а всем остальным запретим лазить в инет
${fwcmd} add 799 deny tcp from any to any via xl0
...
2.20.
(продолжение следует)