SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
Список вопросов ПечатьМетки: freebsd zfs межсетевой экран samba gpart zpool login.conf rc.conf fstab установка системы smb.conf
RemiZOffAlex Создано: 2020-04-12 00:36:12.038954 Обновлено: 2020-04-12 00:36:12.038954 |
---|
В этом руководстве я пошагово расскажу как установить и сделать базовую настройку сервера для офиса, дома или других нужд. На сервер будет возложены следующие функции:
Требования:
Затраты:
Для нашего будущего сервера я использую собранную машину из следующих комплектующих, которые достаточно надежны в работе и недорогие:
При первоначальной установке необходимо подключить монитор и клавиатуру к системному блоку будущего сервера. Вставляем флешку в USB разъем и запускаем ПК. При первой загрузке программа инсталлятор должна сама загрузиться и выдать окно с мастером установки. Мы будем делать это вручную. В выведеном окне выбираем Shell # - означает, что система готова к приему команд. И вот здесь как раз и начинается магия. Команды придется забивать вручную. Конечно можно было бы воспользоваться мастером установки. Но в нём есть нюансы, которые я не буду описывать. Для начала нам необходимо произвести разбивку диска на разделы. Применяемая мною схема GPT, отличается повышенной надежностью в отличие от стандартной схемы MBR. Создадим три раздела: загрузочный (код загрузчика системы), т.н. swap (раздел для хранения части оперативной памяти, которая временно не используется приложениями), основная файловая система ZFS. ZFS выбрана не случайно. ZFS на сегодняшний момент является одной из самых лучших файловых систем. Для неё характерны высокая скорость, достаточная надежность при внештатном отключении питания с алгоритмом самовосстановления при наличии ошибок, большое количество создаваемых файлов и папок, возможность создания резервных копий системы «на лету». Диск по умолчанию в системе определился как ada0. # gpart create -s GPT ada0 # gpart add -s 128 -t freebsd-boot -l boot0 ada0 # gpart add -s 4G -t freebsd-swap -l swap0 ada0 # gpart add -t freebsd-zfs -l disk0 ada0 # gpart create -s GPT ada1 # gpart add -s 128 -t freebsd-boot -l boot1 ada1 # gpart add -s 4G -t freebsd-swap -l swap1 ada1 # gpart add -t freebsd-zfs -l disk1 ada1 Создаем пул с именем zfspool на разделе disk и подключаем к точке монтирования /tmp/mnt, которую создадим. # mkdir /tmp/mnt # zpool create -f -o altroot=/tmp/mnt zfspool raidz /dev/gpt/disk0 /dev/gpt/disk1 # zpool set bootfs=zfspool zfspool # zfs set checksum=fletcher4 zfspool # zfs set atime=off zfspool # zfs set mountpoint=/tmp/mnt zfspool # zpool export zfspool # zpool import -o cachefile=/tmp/zpool.cache zfspool # zfs create zfspool/var # zfs create zfspool/var/db # zfs create -o exec=off -o setuid=off zfspool/var/empty # zfs set readonly=on zfspool/var/empty # zfs create zfspool/var/tmp # zfs create -o compression=gzip-9 zfspool/var/crash # zfs create zfspool/tmp # zfs create zfspool/usr # zfs create -o compression=gzip-9 -o mountpoint=/tmp/mnt/usr/src zfspool/src # zfs create -o compression=gzip-9 -o mountpoint=/tmp/mnt/usr/ports zfspool/ports # zfs create -o mountpoint=/tmp/mnt/usr/ports/distfiles zfspool/distfiles # zfs create -o mountpoint=/tmp/mnt/usr/home zfspool/home # zfs create -o mountpoint=/tmp/mnt/usr/local zfspool/local # zfs create -o mountpoint=/tmp/mnt/usr/obj zfspool/obj # zfs create zfspool/data # chmod 1777 /tmp/mnt/tmp /tmp/mnt/var/tmp # cat /usr/freebsd-dist/base.txz | tar --unlink -xpJf - -C /tmp/mnt # cat /usr/freebsd-dist/kernel.txz | tar --unlink -xpJf - -C /tmp/mnt # gpart bootcode -b /tmp/mnt/boot/pmbr -p /tmp/mnt/boot/gptzfsboot -i 1 ada0 Вносим изменения в файл loader.conf # cat << EOF > /tmp/mnt/boot/loader.conf zfs_load="YES" vfs.root.mountfrom="zfs:'zfspool'" vm.kmem_size="1024M" vm.kmem_size_max="1024M" vfs.zfs.arc="512M" vfs.zfs.arc_max="512M" vfs.zfs.vdev.cache.size="10M" vfs.zfs.prefetch_disable=1 EOF Вносим изменения в файл rc.conf # cat << EOF > /tmp/mnt/etc/rc.conf # ZFS zfs_enable="YES" EOF На этом этапе необходимо узнать у провайдера сетевые настройки. В этом примере я использовал стандартные настройки, которые не являются правильными, исключительно в целях примера. IP 10.0.0.2 MASK 255.255.0.0 DNS 10.0.0.1 Gateway 10.0.0.1 # echo '# Network' >> /tmp/mnt/etc/rc.conf # echo 'ifconfig_em0="inet 192.168.0.1 netmask 255.255.255.0"' >> /tmp/mnt/etc/rc.conf # echo 'ifconfig_em1="inet 10.0.0.2 netmask 255.255.0.0"' >> /tmp/mnt/etc/rc.conf # echo 'defaultrouter="10.0.0.1"' >> /tmp/mnt/etc/rc.conf # echo 'gateway_enable="YES"' >> /tmp/mnt/etc/rc.conf # echo '' >> /tmp/mnt/etc/rc.conf # echo '# Firewall' >> /tmp/mnt/etc/rc.conf # echo 'firewall_enable="YES"' >> /tmp/mnt/etc/rc.conf # echo 'firewall_type="OPEN"' >> /tmp/mnt/etc/rc.conf # echo 'firewall_simple_iif="em0"' >> /tmp/mnt/etc/rc.conf # echo 'firewall_simple_inet="192.168.0.0/24"' >> /tmp/mnt/etc/rc.conf # echo 'firewall_simple_oif="em1"' >> /tmp/mnt/etc/rc.conf # echo 'firewall_simple_onet="10.0.0.0/16"' >> /tmp/mnt/etc/rc.conf # echo '' >> /tmp/mnt/etc/rc.conf # echo '# SSH' >> /tmp/mnt/etc/rc.conf # echo 'sshd_enable="YES"' >> /tmp/mnt/etc/rc.conf Вносим изменения в файл fstab cat << EOF >> /tmp/mnt/etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/gpt/swap0 none swap sw 0 0 /dev/gpt/swap1 none swap sw 0 0 proc /proc procfs rw 0 0 devfs /dev devfs rw 0 0 fdescfs /dev/fd fdescfs rw 0 0 EOF Вносим изменения в файл login.conf # cat << EOF >> /tmp/mnt/etc/login.conf # Russian UTF8 russian_utf8|Russian UTF-8 accounts:\ :charset=UTF-8:\ :lang=ru_RU.UTF-8:\ :LC_ALL=ru_RU.UTF-8:\ :tc=default: EOF Вносим изменения в файл profile # echo 'LANG="ru_RU.UTF-8"; export LANG' >> /tmp/mnt/etc/profile # echo 'LC_CTYPE="ru_RU.UTF-8"; export LC_CTYPE' >> /tmp/mnt/etc/profile # echo 'LC_COLLATE="POSIX"; export LC_COLLATE' >> /tmp/mnt/etc/profile # echo 'LC_ALL="ru_RU.UTF-8"; export LC_ALL' >> /tmp/mnt/etc/profile Вносим изменения в файл csh.cshrc # echo 'setenv LANG ru_RU.UTF-8' >> /mnt/etc/csh.cshrc # echo 'setenv LC_CTYPE ru_RU.UTF-8' >> /mnt/etc/csh.cshrc # echo 'setenv LC_COLLATE POSIX' >> /mnt/etc/csh.cshrc # echo 'setenv LC_ALL ru_RU.UTF-8' >> /mnt/etc/csh.cshrc # zfs unmount -a # zfs set mountpoint=legacy zfspool # zfs set mountpoint=/usr zfspool/usr # zfs set mountpoint=/usr/home zfspool/home # zfs set mountpoint=/usr/local zfspool/local # zfs set mountpoint=/usr/obj zfspool/obj # zfs set mountpoint=/usr/ports/distfiles zfspool/distfiles # zfs set mountpoint=/usr/ports zfspool/ports # zfs set mountpoint=/usr/src zfspool/src # zfs set mountpoint=/var zfspool/var # zfs set mountpoint=/tmp zfspool/tmp # zfs set readonly=on zfspool/var/empty # zfs set mountpoint=data zfspool/data # shutdown -p now После того, как компьютер выключился извлекаем флешку и запускаем нашу систему. Для входа используем логин root и пустой пароль. Проверяем доступность интернет ресурсов: # ping ya.ru Если сеть настроена правильно и доступна, то продолжаем. # cp -R /usr/share/examples/cvsup /usr/local/ # ee /usr/local/cvsup/ports-supfile Здесь нам необходимо изменить строку *default host=CHANGE_THIS.FreeBSD.org на *default host=cvsup2.ru.FreeBSD.org. Сохраняем изменения и загружаем дерево портов: # csup /usr/local/cvsup/ports-supfile # make -C /usr/ports/ports-mgmt/portmaster/ install clean # rehash # portmaster net/samba36 Снять опцию: [ ] IPV6 With IPv6 support. После установки и сборки добавляем пользователя в систему: # pw useradd admin # mkdir /home/admin/share/public # chown nobody:nobody /home/admin/share/public # ee /usr/local/etc/smb.conf В секции [global] редактируем следующее guest account = nobody interfaces = 192.168.0.1/24 hosts allow = 192.168.0. 127. server string = My First Server security = share [public] vfs objects = zfsacl browseable = no printable = no writable = yes only guest = yes public = yes path = /home/admin/share/public Добавляем дополнительные настройки для нашего шлюза: # echo 'samba_enable="YES"' >> /etc/rc.conf # echo 'natd_enable="YES"' >> /etc/rc.conf # echo 'natd_interface="em1"' >> /etc/rc.conf # echo 'ipfw_load="YES"' >> /boot/loader.conf # echo 'ipdivert_load="YES"' >> /boot/loader.conf # echo 'firewall_type="SIMPLE"' >> /etc/rc.conf И перезагрузиться. Зайти на сервер можно даже из под OC Windows, для этого необходимо открыть Проводник и набрать в строке адреса \\192.168.0.1. Примечание: в данном руководстве опущены некоторые детали, которые в разной степени могут повлиять на функционирование сервера. |