Alter.Org.UA
 << Back Home EN en   Donate Donate

Installing FBSD

tested with FBSD 5.1

Pre-scriptum

Да, да, я знаю, нужно читать Handbook с freebsd.org. Но imho, это не самый быстрый путь. Даже (или особенно ?) после опыта общения с Linux'ами и Wind'ами. Ниже кратко описана последовательность установки и настройки некого базового (но рабочего) варианта FBSD Server'а. Вот заработает, выйдет в inet, а потом уже можно играться с настройками, читать Handbook и заниматься прочими извращениями и непристойностями.

Чего мы вообще хотим ?
  1. поставить Free BSD :)
  2. сделать из нее router
  3. настроить user environment (russian/midnight/joe)
  4. mysql server (и/или клиент)
  5. web-server
  6. proxy-server
  7. mail-server
а еще хотим
  1. видеть диски сервера на виндовых машинах через 'Network Neighborhood' (Сетевое Окружение)
  2. видеть диски виндовых машин
  3. доступ к серверу через FTP
  4. доступ к серверу через SSH (если поставили FBSD и настроили сеть, то уже работает)
  5. ограничение трафика с помощью ipfw/pipe/queue
  6. почитать комментарии ;)
Что для этого надо ?
  • Поставить 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 хватит с головой.
      swapvirtual 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
      1. Ввести команду 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'а поочередно включая и выключая сетевые кабели.
      2. Настроить 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.
      3. Правильные (проверенные) настройки IP-адресов записать в файл /etc/rc.conf. Добавляем в конец rc.conf'а для каждого интерфейса строки вида
        ifconfig_<имя интерфейса>="inet <IP-адрес> <netmask>"
        
        для приведенного выше примера это будет
        ifconfig_rl0="inet 10.0.0.1 netmask 255.255.255.0"
        
        Очень похоже на то, что вводилось в командной строке. Еще раз: настройки lo0 не трогать.
      4. Настроить 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
        .........
        
      5. Если провайдер выдает IP-адрес автоматически (DHCP), то в /etc/rc.conf пишется немного другое:.
        ifconfig_<имя uplink-интерфейса>="DHCP"
        
        для приведенного выше примера это будет
        ifconfig_vr0="DHCP"
        
        после этого нужно запустить DHCP-клиент или же перезагрузить машину:
        /etc/rc.d/dhclient start
        
        Должно работать ping 74.6.143.25 74.6.143.25. Это yahoo.com.
      6. Включить 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'ом. Для пущей безопасности.
      1. Создаем юзера admin (или как-нибудь еще его назовите) при помощи команды adduser. Там задается куча вопросов. Среди них - shell. Какой выбирать дело ваше. Лично я пользуюсь tcsh. Поэтому его конфигом могу поделиться :) Все останые вопросы - можно смело выбирать предложеные по умолчанию варианты. Если все ok, в каталоге /home создастся пользовательский подкаталог <username>.
      2. В пользовательском каталоге создается config-файл для shell'а. Для tcsh это будет .tcshrc. Можно взять отсюда, а в browser'е посмотреть здесь.
      3. Собираем 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
        
      4. Теперь пользователь admin заходит в систему со своим собственным паролем. Если ему необходимы root'овые права, исполняется команда
        sudo -s
        
        и снова вводится собственный пароль. Таким образом мы избавились от необходимости выдавать пароль root'а. Можно завести сколько угодно административных польователей простым добавлением (или удалением ;) записей в /usr/local/etc/sudoers.
      5. Проверяем, что можно зайти в систему под созданным пользователем и получить root'а. На всякий случай.
      6. Запрещаем вход под 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.

Пока вроде все.


<< Back Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2024