 |
Installing FBSD
tested with FBSD 5.1
Pre-scriptum
Да, да, я знаю, нужно читать Handbook с freebsd.org.
Но imho, это не самый быстрый путь. Даже (или особенно ?) после опыта общения
с Linux'ами и Wind'ами. Ниже кратко описана последовательность установки и настройки
некого базового (но рабочего) варианта FBSD Server'а. Вот заработает, выйдет в
inet, а потом уже можно играться с настройками, читать Handbook и заниматься прочими
извращениями и непристойностями.
Чего мы вообще хотим ?
- поставить Free BSD :)
- сделать из нее router
- настроить user environment (russian/midnight/joe)
- mysql server (и/или клиент)
- web-server
- proxy-server
- mail-server
а еще хотим
- видеть диски сервера на виндовых машинах через 'Network Neighborhood'
(Сетевое Окружение)
- видеть диски виндовых машин
- доступ к серверу через FTP
- доступ к серверу через SSH (если поставили FBSD и настроили сеть, то уже работает)
- ограничение трафика с помощью ipfw/pipe/queue
- почитать комментарии ;)
Что для этого надо ?
- Поставить FBSD:
- Загрузиться с Free BSD boot CD и выбрать пункт 1. Boot Free BSD [default]
Для машин с кривым ACPI можно попробовать 2. (disabled ACPI)
- далее в sysinstall Main Menu выбрать пункт 2. Custom и настроить параметры установки:
- 2. Options. Можно включить/выключить IPv6 и DHCP. DHCP нужно, если провайдер выдает
IP адреса динамически. Если это так, то вы это должны знать.
- 3. Partition. Выделить место на диске. В терминологии
Windows и DOS - создать раздел (primary или extended).
В терминологии FBSD - slice. Позже, в следующем пункте, в этом разделе
будет создано несколько файловых систем (в отличие от Windows world в FBSD такое возможно).
Можно отдать весь диск под Free BSD: A - Entire disk
Когда все сделано: Q - Ok.
Note: пока еще ничего с диском не делается и изменения можно отменить.
- В ответ на вопрос, куда ставить Boot Manager imho стоит выбрать boot-sector.
- 4. Label. Создать в slice'е файловые системы:
| mount-point | размер |
| / | корневая файловая система.
Содержит необходимый минимум исполнимых и конфигурационных файлов.
512Mb хватит с головой. |
| swap | virtual memory. Размер физической
памяти * 1.5 - 2 |
| /var | Здесь хранятся временные файлы,
очередь почтовых сообщений, логи и т.п.
Размер - где-то 1-2Gb |
| /usr | Исходники, устанавливаемый софт. 4-6Gb |
| /home | Каталоги пользователей, FTP, File-server, что еще в голову придет.
Все остальное место. |
Когда все закончено - Q - Finish
Note: с диском по прежнему ничего не делается.
- 5. Distributions
Выбрать список предустанавливаемых packages. Чтобы волосы были мягкими и шелковистыми,
полезно добавить Developer и Kern-Developer. Это позволит в будущем
пересобрать ядро с нужными опциями.
Еще стоит включить User. Х-овые компоненты по вкусу.
- 6. Media Откуда ставить. Т.к. ставим с CD, то CD-ROM там уже выбран.
- 7. Commit
Запустить инсталяцию. При этом будет создан slice, как было указано в п.3.
В slice'е будут созданы файловые системы согласно п.4.
Далее инсталятор скопирует необходимые системные файлы.
При возвращении в general config menu смело выбирать Exit.
- После перезагрузки заходить root'ом, пароль пустой.
- Включить (по желанию) автоматическое продолжение проверки
и восстановления файловой системы после аварийной перезагрузки.
Очень полезно для машин, работающих в автопилоте.
Для тех, кто не дружит с редактором vi (установлен by default) есть ee.
Если вы уже в vi, выйти из него можно так: 'Esc' 'Esc' ':' 'q' '!' 'Enter'.
Еще полезная штука: переключение между консольками Alt-F1/Alt-F2/etc...
Итак, редактируем:
ee /etc/rc.conf
В /etc/rc.conf заносится
fsck_y_enable="YES"
- Временно отключить почтовый сервер sendmail.
В /etc/rc.conf заносится
sendmail_enable="NO"
- Отключить login на 1-ю консоль (ту, которая вызывается по Alt-F1). Туда
должны сыпаться только системные сообщения. Работать - на 2-й, 3-й и т.п. Переключение
между консольками соответственно Alt-F2, Alt-F3, etc.
В /etc/ttys меняется on на off вот в такой строчке:
console none unknown on secure
Изменения станут заметны после перезагрузки. Делается вот так:
shutdown -r now
Более детально про команду shutdown и ее ключи (а также про многие другие команды)
можно почитать сделав
man shutdown
или
man <какая-нибудь другая команда>
Выход из просмотра - 'q'.
- Включить логи по максимуму. Чтобы сразу было видно, что и где происходит.
В /etc/syslog.conf строчка
*.err;kern.debug;auth.notice;mail.crit /dev/console
меняется на
#*.err;kern.debug;auth.notice;mail.crit /dev/console
*.* /dev/console
После этого исполняем
killall -HUP syslogd
- Настроить сеть:
- TCP/IP
- Ввести команду ifconfig. Вам будет выдан список всех доступных
интерфейсов и их текущих настроек. Интерфейсом зовется любое
физическое
или виртуальное устройство, пригодное для передачи данных между
компьютерами:
- Сетевые карточки (NICs - Network Interface Cards, могут называться очень поразному)
- loopback interface lo0 - виртуальный инткрфейс для работы сетевых протоколов внутри самого
компьютера. Не трогайте его настройки!
- lp0 - сеть через LPT порт.
- fwe0 - сеть через FireWire (IEEE-1384) порт.
Например можно увидеть такое:
fwe0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 02:40:63:03:26:70
ch 1 dma -1
vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:40:63:ca:92:0d
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:fc:a2:92:79
media: Ethernet 10baseT/UTP
status: active
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
В данном случае сетевыми карточками являются vr0 и rl0. Об этом
свидетельствуют записи ether xx:yy:zz:aa:bb и
media: Ethernet Xxxxxxx.
Признаком наличия сетевого кабеля является status: active.
Если нет уверенности в том, какая карточка как называется,
соответствие можно установить по ответам ifconfig'а поочередно
включая и выключая сетевые кабели.
- Настроить IP-адреса и netmask'и на интерфейсах. Все как в linux'е
или винде, Только чуть по-другому:
ifconfig <имя интерфейса> inet <IP-адрес> <netmask>
например
ifconfig rl0 inet 10.0.0.1 netmask 255.255.255.0
Если все хорошо, то машины из диапазона 10.0.0.1 - 10.0.0.254 должны
отзываться на ping.
- Правильные (проверенные) настройки IP-адресов записать в файл
/etc/rc.conf.
Добавляем в конец rc.conf'а для каждого интерфейса строки вида
ifconfig_<имя интерфейса>="inet <IP-адрес> <netmask>"
для приведенного выше примера это будет
ifconfig_rl0="inet 10.0.0.1 netmask 255.255.255.0"
Очень похоже на то, что вводилось в командной строке. Еще раз: настройки lo0 не трогать.
- Настроить interface IP и default gateway (шлюз). Делается добавлением в конец
/etc/rc.conf'а строчки
ifconfig_<uplink interface name>="inet <IP-address> <netmask>"
defaultrouter="IP-of-internet-provider"
Если вы добрались сюда, то что это такое знать должны. Проверяется
так:
route -n flush - сброс таблицы маршрутизации
route add default <IP-of-internet-provider>
netstat -nr - показать текущую таблицу маршрутизации
Должно получиться что-то такое:
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.78.1 UGSc 2 14784 rl0
.........
-
Если провайдер выдает IP-адрес автоматически (DHCP), то в
/etc/rc.conf пишется немного другое:.
ifconfig_<имя uplink-интерфейса>="DHCP"
для приведенного выше примера это будет
ifconfig_vr0="DHCP"
после этого нужно запустить DHCP-клиент или же перезагрузить машину:
/etc/rc.d/dhclient start
Должно работать ping 68.180.206.184
68.180.206.184. Это yahoo.com.
- Включить routing. Для этого либо добавить в /etc/rc.conf строчки
router="/sbin/routed"
router_flags=-"q"
router_enable="YES"
gateway_enable="YES"
либо запустить /stand/sysinstall (в FBSD 6 - /usr/sbin/sysinstall)
и в меню Configure->Networking
включить gateway, routed. Все настройки - by default.
- DNS
Предельно просто. В файл /etc/resolv.conf дописывается строка
nameserver <IP-of-internet-provider-DNS>
Опять таки, вы должны знать это значение.
После этого должно работать ping yahoo.com (а также любых других серверов
по имени).
- NAT+firewall
Firewall - для защиты от гостей и для работы NAT'а.
NAT - прозрачный выход в мир для машин из внутренней подсети.
Идея такая - все машины ломятся в мир от имени сервера. С точки зрения мира
вся подсеть выглядит как одна машина.
- Заранее прописываем в rc.conf настройки:
natd_enable="YES"
natd_interface="<world_iface>"
natd_flags="-u -f /etc/natd.conf"
firewall_enable="YES" # Set to YES to enable firewall functionality
firewall_script="/etc/rc.firewall" # Which script to run to set up the firewall
firewall_type="/etc/firewall.conf" # Firewall type (see /etc/rc.firewall)
firewall_quiet="NO" # Set to YES to suppress rule display
firewall_logging="YES" # Set to YES to enable events logging
где <world_iface> - имя интерфейса, смотрящего в мир.
- Создаем пустой файл /etc/natd.conf:
touch /etc/natd.conf
- Создаем конфигурационный файл для firewall'а /etc/firewall.conf
примерно следующего содержания:
add 00100 allow ip from any to any via lo0
add 00200 deny ip from any to 127.0.0.0/8
add 00500 divert natd all from any to any via <world_iface>
add 10600 allow ip from 10.0.0.0/24 to any via <local_iface>
add 10600 allow ip from me to any via <world_iface>
add 10700 allow tcp from any to me 22,25,80,53 via any
add 10705 allow tcp from me to any 22,25,80,53 via any
add 10701 allow udp from any to me 22,25,80,53 via any
add 10706 allow udp from me to any 22,25,80,53 via any
add 10710 allow tcp from any to me 110,143,443,495,587 via any
add 10715 allow tcp from me to any 110,143,443,495,587 via any
add 10730 allow tcp from me 25 to any via any
add 30800 deny tcp from any to me 3306,3307 via <world_iface>
add 30801 deny tcp from any to me 3128,3130 via <world_iface>
add 30800 deny tcp from any to me 1-1024 via <world_iface>
add 30801 deny udp from any to me 1-1024 via <world_iface>
add 30900 allow tcp from any to me 1024-65535 via <world_iface>
add 30901 allow udp from any to me 1024-65535 via <world_iface>
add 51000 allow ip from any to any
где <local_iface> и <world_iface> - имена интерфейсов (см. ifconfig).
Данные настройки открывают SSH, SMTP, HTTP, DNS, POP3, SHTTP и закрывают доступ
извне к локальному proxy и привелигированным портам (1-1024). Поскольку
sendmail отключен (см. выше) и by default он не relay'ит почту от кого попало,
спамеры вас не поимеют. (Если кончено не найдется свежего exploit'а ;)
- Пересобираем kernel с опциями, необходимыми для NAT+firewall. Создаем
файл со полным списком опций LINT и создаем собственную конфигурацию ядра.
cd /usr/src/sys/i386/conf
make LINT
GENERIC
cp GENERIC MY_SERVER_v1
ee MY_SERVER_v1
Поубирать лишнее.
Все что выше Pentium/AMD 586/K6 это будет I686_CPU. Соответственно
поддержку младших процессоров I386_CPU - I586_CPU можно смело выкинуть.
Так же скорее всего вам не нужен IPv6 (опция INET6 и все, что сней связано. Посмотрите,
там видно).
Зато нужно вот что:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPDIVERT
options LIBICONV
options SC_DISABLE_REBOOT
options SC_HISTORY_SIZE=3000
options VESA
options VGA_WIDTH90
остальное - по вкусу. читайте также LINT и NOTES в том же каталоге (/usr/src/sys/i386/conf). Собираем ядро:
config MY_SERVER_v1
cd ../compile/MY_SERVER_v1
make depend
make
make install
shutdown -r now
после перезагрузки если на машине из локальной сети поставить Default Gateway'ем
наш сервер, то с нее должны пинговаться мировые сервера. Например все тот же
ping 216.109.127.29. Если на этой же машине в качестве DNS сервера указать
DNS сервер провайдера, то должен заработать и ping yahoo.com.
- Локальный name-server - named. Зачем всей подсети ломиться к провайдеру ?
Спросим у собственного сервера. Он пороется у себя в голове и может найдет,
что ответить. А если нет - сам спросит и ответ запомнит на будущее.
cd /etc/namedb
sh make-localhost
а в rc.conf
named_enable="YES" # Run named, the DNS server (or NO).
Запускаем named из командной строчки. Проверяем, что запустился при помощи
ps -ax|grep named. Должна присутствовать строчка вида
4603 ?? Ss 0:00,00 named
теперь если на той же машине из локальной сети поставить DNS сервером
наш FBSD сервер, то с нее должны пинговаться мировые сервера уже по именам.
Например ping yahoo.com.
- FTP
Запустить /stand/sysinstall или /usr/sbin/sysinstall и в меню Configure->Networking
включить inetd. В ответ на вопрос редактировать ли inetd.conf прямо сейчас сказать 'No'.
В /stand/sysinstall в меню Configure->Networking включить Anonymous FTP.
Все можно по умолчанию кроме каталога (/var/ftp стоит заменить на /home/ftp).
теперь запускаем inetd. Из локальной подсети должно быть возможно зайти на сервер
с anonymous FTP. После перезагрузки inetd запустится автоматически.
- Полезности.
Собираются из ports (иерархия каталогов в /usr/ports). Очень рекомендую почитать /usr/ports/README
Все порты собираются одинаково: make; make install. Если необходимого архива с исходниками не найдется
в /usr/ports/distfiles, make сам попытается вытащить его из inet'а.
- joe
cd /usr/ports/editors/joe
make
make install
- Midnight comander
cd /usr/ports/misc/mc
make
make install
- trafshow
cd /usr/ports/net/trafshow
make
make install
- ARP-ping (arping)
cd /usr/ports/net/arping
make
make install
- mtr
cd /usr/ports/net/mtr
make
make install
- Поддержка russian/ukrainian.
В rc.conf:
font8x14="cp866u-8x14"
font8x16="cp866u-8x16"
font8x8="cp866u-8x8"
keymap="ua.koi8-u.shift.alt"
scrnmap="koi8-u2cp866u"
- SSH
Включить SSHD:
В /etc/rc.conf заносится (или редактируется)
sshd_enable="YES"
И можно сразу же его запустить:
/etc/rc.d/sshd start
- sudo
Имеет смысл создать admin user'а и запретить вход под root'ом. Для пущей безопасности.
- Создаем юзера admin (или как-нибудь еще его назовите) при помощи команды
adduser. Там задается куча вопросов. Среди них - shell. Какой выбирать
дело ваше. Лично я пользуюсь tcsh. Поэтому его конфигом могу поделиться :)
Все останые вопросы - можно смело выбирать предложеные по умолчанию варианты.
Если все ok, в каталоге /home создастся пользовательский подкаталог <username>.
- В пользовательском каталоге создается config-файл для shell'а. Для tcsh это
будет .tcshrc.
Можно взять отсюда, а в browser'е посмотреть здесь.
- Собираем sudo
cd /usr/ports/security/sudo
make
make install
в /usr/local/etc/sudoers записываем
admin ALL=(ALL) ALL
Т.к. /usr/local/etc/sudoers должен быть read-only для всех,
на время редактирования RO нужно снять, а после - восстановить:
chmod u+w /usr/local/etc/sudoers
ee /usr/local/etc/sudoers
chmod u-w /usr/local/etc/sudoers
-
Теперь пользователь admin заходит в систему со своим собственным паролем.
Если ему необходимы root'овые права, исполняется команда
sudo -s
и снова вводится собственный пароль. Таким образом мы избавились
от необходимости выдавать пароль root'а. Можно завести сколько
угодно административных польователей простым добавлением (или удалением ;)
записей в /usr/local/etc/sudoers.
-
Проверяем, что можно зайти в систему под созданным пользователем и получить root'а.
На всякий случай.
- Запрещаем вход под root'ом. Команда vipw позволяет редактировать
базу данных пользователей. Находим root'а
root:$1$xxxxxxxxxxxxxxxxxxxxxxxxxx/:0:0::0:0:Charlie &:/root:/bin/csh
и добавляем ему в пароль '*':
root:*$1$xxxxxxxxxxxxxxxxxxxxxxxxxx/:0:0::0:0:Charlie &:/root:/bin/csh
^
смотреть сюда
- MySQL
Наверное это плохо, выдавать 12-ю версию (от MySQL 4.0) за 10-ю (от MySQL 3.23)....
но работает. Это будет нужно PHP т.к. он хочет 10-ю, а она не собирается.
cd /usr/ports/databases/mysql40-server
make
make install
cd /usr/local/lib/mysql/
ln -s libmysqlclient.so.12 libmysqlclient.so.10
ln -s libmysqlclient_r.so.12 libmysqlclient_r.so.10
Клиент должен собраться автоматически, но на всякий случай
cd /usr/ports/databases/mysql40-client
make
make install
- Установить Apache (web-server) + PHP
- Apache собственной персоной
cd /usr/ports/www/apache2
make
make install
Он установится и создаст в /usr/local/etc/rc.d управляющий скрипт apache2.sh.
При загрузке системы Apache запустится автоматически. А сейчас можно запустить Apache так:
/usr/local/etc/rc.d/apache2.sh start
После этого у вас должно получиться зайти на сервер по http. (например http://10.0.0.1).
Проверяем: ps -ax|grep httpd. Должно получиться что-то такое:
459 ?? Ss 1:08,98 /usr/local/sbin/httpd -k start
521 ?? I 0:00,13 /usr/local/sbin/httpd -k start
522 ?? I 0:00,14 /usr/local/sbin/httpd -k start
- pdflib
Если в PHP нужна поддержка PDF, то соберем для начала pdflib. Если нет - пропускаем это пункт.
По идее все должно было быть так:
cd /usr/ports/print/pdflib
make
make install
Попробуйте, может получится. А у меня произошло вот что:
при сборке pdflib из портов FBSD 5.1 Release вылезла глюка: Старая версия
pdflib.5 (PDFlib-Lite-5.0.0-Unix-src.tar.gz) была убрана с сайта Adobe и заменена на новую.
Скачал с freebsd.org новый порт, положил его на место старого (в /usr/ports/print/pdflib).
Собираю - говорит, что
неизвестный компонент lthack. Смортю в Makefile и вижу
INSTALLS_SHLIB= yes
USE_LIBTOOL_VER=13
USE_GNOME= lthack
USE_REINPLACE= yes
Поменял на
INSTALLS_SHLIB= yes
USE_LIBTOOL_VER=13
USE_GNOME=
USE_REINPLACE= yes
Собралось и установилось. Но оказалось, собралась pdflib.6 что очень не понравилось PHP.
Пришлось обманывать:
cd /usr/local/lib/
ln -s libpdf.so.6 libpdf.so.5
- PHP
cd /usr/ports/www/mod_php4
setenv WITH_APACHE2
make
В ответ вы получите меню, где можно выбрать, какие модули будут включены в PHP.
Я бы поставил вот что:
[X] GD2 GD 2.x library support
[X] zlib zlib library support
[X] bzip2 bzip2 library support
[X] mcrypt Encryption support
[X] mhash Crypto-hashing support
[X] MySQL MySQL database support
[X] OpenSSL OpenSSL support
[X] FTP File Transfer Protocol support
[X] gettext gettext library support
[X] iconv iconv support
[X] recode recode support
[X] mbregex multibyte regular expressions module
[X] mbstring multibyte string module
[X] BCMath BCMath support
[X] sockets sockets support
[X] transsid Transparent session id
Можно конечно еще pdflib, XML, другие Databases и т.п. Нельзя только
одновременно ставить GD (старый, но поддерживает GIF)
и GD2 (новый, но из-за лицензионных граблей без GIF'а).
Жмем OK и поехали собираться.
После успешной сборки в /usr/local/etc/apache2/httpd.conf добавляем
строчку (туда, где уже есть другие строчки LoadModule ....)
LoadModule php4_module libexec/apache2/libphp4.so
заменяем строчку
DirectoryIndex index.html index.html.var
на
DirectoryIndex index.php index.html index.html.var
и добавляем строчку (туда, где уже есть другие строчки AddType ....)
AddType application/x-httpd-php .php
Теперь перезапускаем Apache:
killall -HUP httpd
Аминь.
- Squid (proxy-server)
cd /usr/ports/www/squid24
make
make install
chmod u+w /usr/local/etc/squid/squid.conf
joe /usr/local/etc/squid/squid.conf
В первую очередь imho имеет смысл поправить следующие настройки:
#http_port 3128
#icp_port 3130
cache_mem 8 MB
cache_dir ufs /usr/local/squid/cache 100 16 256
Например на такие:
http_port 127.0.0.1:3128
http_port 10.0.0.1:3128
icp_port 127.0.0.1:3130
icp_port 10.0.0.1:3130
cache_mem 32 MB
cache_dir ufs /usr/local/squid/cache 1024 16 256
Разрешить доступ из локальной сети. Для этого после строчек
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
следует добавить
acl home_net src 10.0.0.0/255.255.255.0
http_access allow home_net
Теперь инициализируем cache и запускаем squid:
/usr/local/sbin/squid -z
/usr/local/etc/rc.d/squid.sh start
После этого в browser'е можно установить в качестве proxy-сервера
наш сервер.
- mail-server (sendmail)
Включить sendmail:
В /etc/rc.conf заносится (или редактируется)
sendmail_enable="YES"
Настроить список локальной доставки:
В /etc/mail/mailertable заносится
.my.domain local:
my.domain local:
Если ваш провайдер запрещает прямое обращение к чужим SMTP серверам (борьба со спамом, однако),
то следует добавить еще и такую строчку:
. smtp:smtp.server.your.provider
Настроить права дступа к SMTP серверу:
В /etc/mail/access заносится
127.0.0.1 RELAY
10.0.0 RELAY
Теперь перестраиваем базы данных sendmail'а:
cd /etc/mail
make mailertable.db
make access.db
Запускаем sendmail:
/usr/sbin/sendmail
ps -ax | grep sendmail
или (в FBSD 6)
/etc/rc.d/sendmail stop
/etc/rc.d/sendmail start
ps -ax | grep sendmail
Если все хорошо, в полученом списке процессов должно быть что-то вида:
3153 ?? Is 0:00,32 sendmail: Queue runner@00:30:00 for /var/spool/clientmqueue (sendmail)
3155 ?? Ss 0:12,06 sendmail: accepting connections (sendmail)
Comments
Comments from Taren
Вот тебе обещанные комментсы:
1. По поводу нарезки слайсов:
Тут для начала стоит определиться с тем, для чего собственно будет
использоваться компьютер. От этого зависит как будем дальше плясать.
Если ставим машинку "для себя" - отрезаем мегабайта 64 под '/', все
остальное под /usr - так намного меньше потом будет головной боли
по поводу распределения свободного места.
Почему не все в один слайс?
Ну хотя-бы потому, что для '/' softupdates лучше держать выключенными,
а вот для всего остального наоборот softupdates пригодятся.
Если машина с притензией на сервер - под '/' - аналогично (еще не видел
ни одной нормально сконфигурированной системы где бы под / не хватало
64 метра с головой).
/var - в зависимости от предполагаемых задач от 64 метров до 2ГБ.
В большинстве случаев 128-256 хватает с головой.
/tmp - также в зависимости от задач от 64МБ до гига (/tmp очень
желательно
выделить на сервере в отдельный слайс для нужд а) накручивания на него
соотв. гаек в /etc/fstab - noexec,nodev,... (на /var все это также стоит
навернуть, кстати, мешать не будет, а секьюрность выше) - очень
положительно сказывается на безопасности системы - незакрытый правильно
/tmp - излюбленное место какеров для компилирования и пускания локальных
эксплоитов. Впрочем есть еще финт ушами с /tmp -> /var/tmp, но так мы
не б) решаем проблему с возможностью переполнения FS (и тем самым
либо вообще вывода системы из строя, либо имения серьезных проблем с
производительностью).
Если на сервере предполагается наличие шелл юзеров окромя собственно
админов, делаем отдельным партишином /home, причем особо разгоняться
с его размером не стоит, если не предполагается что юзеры будут
использовать сервер в качестве хламохранилища. Делать где-нибуть так
из расчета 2-32 МБ * <предполагаемое число непривилигированных юзеров>
Соответственно на данный слайс также рекомендуется в последствии
навернуть соотв. гайки в /etc/fstab дабы лишить их возможности пускать
чего ни попадя из своего домашнего каталога.
Если непривилигированные юзеры не предполагаются - то и не делаем
отдельного слайса для них и имеем дефаултное /home -> /usr/home.
Соттветственно в случае сервера с и привилигированными и непривелигированными
юзерами в /usr/home селим привелигированных.
Как следует из всего выше сказанного, все что до этого не роздано,
отдаем под /usr (обычно, как показывает практика, самая жадная до
места часть файловой системы).
А, да, чуть не зыбыл про своп.
Рекомендация касательно его размера (n * ram_size) кочует уже очень
давно, и похоже с времен когда 16 МБ памяти были роскошью.
Реально же таковой размер свопа далеко не всегда оправдан - что смыслу
с того, что несколько сотен мегабайт места на диске безвозвратно гуляет?
В общем опять же, рекомендовать что-то "на все случаи жизни" не берусь,
но обычно 128-256МБ свопа хватает с запасом. А вообще общий принцип -
размер свопа прямо пропорционален предполагаемым потребностям системы
в памяти и обратно пропорционален количеству памяти в машине.
Да, своп создавать стоит самым первым - чем ближе к началу диска, тем
шустрее все будет проворачиваться.
Плюс, если в системе стоит несколько дисков - можно сделать
своп-партишены
- не на одном а на нескольких - теоретически должно слегка повысить
скорость работы со свопом.
И еще - в tuning(7) очень рекомендуют, чтоб размер свопа был кратен
степени
2 - говорят положительно на производительности сказывается.
2. Для отключения логина на первую консоль on на off вообще-то надо
поменять у ttyv0.
3. Для того, чтоб включить роутинг (если не надо наворотов, а просто
гейтвей
для локальной сетки в интернет) надо просто добавить
gateway_enable="YES"
и все.
Routed пускать смысла нет при любых раскладах - во первых глючит
он местами, во вторых все равно оно ничего окромя уже практически
нигде не пользуемого RIP не умеет. Если нужны динамические навороты -
тогда прямой путь к gated или каким альтернативным вариантам вроде
zebra.
Если же просто надо прописать пару роутов статических - для этого
есть чудесные пункты во все том же /etc/rc.conf:
static_routes="<список роутов>"
route_<имя роута>="<net/mask> <next hop>" # для каждого из списка.
4. Вообще-то я бы порекомендовал для нужд NAT пользовать не natd а
ipnat - он прилично пошустрее, более правильный и фич в нем побольше.
5. Что касается сквида - стоит быть очень осторожным относительно
размера дискового кеша - запросы сквида на отхватываемое им количество
памяти пропорциональны размеру кеша. Как-то наблюдал машинку с 16МБ
памяти, на которой поставили сквиду дисковый кеш в 256МБ. Лампочка
винта на ней горела постоянным ярким красным цветом, на команды с
локальной консоли машинка реагировала крайне вяло - короче ушла с
головой в своппинг.
Иногда бывает полезным вообще отключить дисковый кеш сквиду.
Делается это так:
cache_dir null /tmp
Очень положительно сказывается на скорости доступа к www если проксей
работает слабенькая машинка (а так часто и делают - ставят в качестве
роутера/прокси что-нибуть из уже довольно сильно морально устаревшего,
на чем секретарша директора давно отказалась даже пасьянс раскладывать).
Также иногда бывает полезно сделать transparent proxy - юзеры свято
верят, что ходят в инет напрямую, и не подозревают, что все их запросы
на порт 80 перенаправляются на проксю. Делается при помощи все того
же ipfw. Кстати полезно в случае сети через NAT.
Пока вроде все.
|
 |