тематику сменить решил. Теперь тут буду публиковать для себя и для друзей то. что наработано своим горбом в профессионаьной теме.
итак.
Первое с чего начну. так это со своей любимой серверной системы. FreeBSD!!!
здесь представлен текст по настройке сервера. в принципе достаточно интересный. а самое главное достаточно рабочий:)
1. Установка FreeBSD 6.0
2. Русификация консоли и внесение изменений в rc.conf
3. Настройка ядра
4. Настройка ipfw и natd
5. Установка и настройка trafd
6. Установка и настройка mpd
7. Настройка ssh
8. Настройка DHCP и DNS (форвардинг)
9. Установка и настройка программного RAID 1
10. Установка и настройка SAMBA сервера
11. Установка и настройка Squid
12. Установка и настройка Mysql
13. Установка и настройка Postfix
14. Установка и настройка Sarg
15. Настройка CRONTAB
Реализация :
1. Установка FreeBSD 6.0 производится в компакт диска №1
Сама по себе установка ничего особо сложного в себя не включает, главное установить помимо минимально требуемого самого ядра и основных программ , необходимо поставить порты и исходники(желательно все).
2. Русификация консоли и внесение изменений в rc.conf:
После установки желательно русифицировать консоль, для лучшего понимания того что нам будет писаться разными программами ( поддерживающими русский язык)
Русификация включает в себя 3 шага :
Первый: изменение файла /etc/rc.conf производить это мы будем при помощи текстового редактора ее, он более понятен для новичков.
Итак, приступим:
> ee /etc/rc.conf
Добавляем такие строки :
hostname=”vpn-nat1.kreditnik.ru”
#Назначаем адрес шлюза в интернет
defaultrouter=”212.5.106.158”
#Прописываем статичный роутинг до точек
route_per=”10.34.21.34/29 10.34.21.1”
route_perr=”10.34.21.33/29 10.34.21.1”
route_mol=”10.34.21.10/29 10.34.21.1”
route_molr=”10.34.21.9/29 10.34.21.1”
route_ale=”10.34.21.26/29 10.34.21.1”
route_aler=”10.34.21.25/29 10.34.21.1”
route_kra=”10.34.21.50/29 10.34.21.1”
route_krar=”10.34.21.49/29 10.34.21.1”
route_mar=”10.34.21.18/29 10.34.21.1”
route_marr=”10.34.21.18/29 10.34.21.1”
route_but=”10.34.21.75/29 10.34.21.1”
route_butr=”10.34.21.73/29 10.34.21.1”
route_glbuh=”10.34.21.58/29 10.34.21.1”
route_glbuhr=”10.34.21.57/29 10.34.21.1”
static_routes=”per perr mol molr ale aler kra krar mar marr glbuh glbuhr”
#Настройка сетевой карты rl0 у нас она смотрит в интернет
ifconfig_out0_name=”out0”
ifconfig_rl0=”inet XXX.XXX.XXX.XXX netmask 255.255.255.224”
#настройка сетевой карты rl1 у нас она смотрит в локальную сеть
ifconfig_rl1_name=”of0”
ifconfig_rl1=”inet 192.0.4.2 netmask 255.255.255.0”
#настройка сетевой карты rl2 у нас она смотрит в сеть ТасКом
ifconfig_rl2_name=”tas0”
ifconfig_rl2=”inet 10.34.21.3 netmask 255.255.255.248”
#Включаем функции шлюза ( необходим для nat)
gateway_enable=\"YES\"
#Включаем firewall
firewall_enable=\"YES\"
#firewall_quiet=\"YES\"
#наш скрипт с правилами для firewall
firewall_script=”/etc/firewall/config”
#firewall_type=\"OPEN\"
#Включаем НАТ
natd_enable=\"YES\"
natd_interface=”out0”
natd_flags=”-dynamic”
#Включаем NAT для сети tas0
natd2_enable=”YES”
natd2_interface=”tas0”
natd2_flags=”-p 8669”
tcp_extensions=”NO”
#сброс фрагментированных пакетов
icmp_drop_redirect=”YES”
#логирование фрагментированных пакетов
icmp_log_redirect=”YES”
#Устанавливаем DHCP
dhcp_conf=”/usr/local/etc/dhcpd.conf”
dhcpd_enable=”YES”
dhcpd_flags=”-q”
dhcpd_iface=”of0”
dhcpd_whithuser=”dhcpd”
dhcpd_withgroup=”dhcpd”
dhcpd_withumask=”022”
#включаем удалённый доступ по ssh
sshd_enable=”YES”
#Включаем локальный DNS сервер
named_enable=”YES”
#включаем VPN туннели
mpd_enable=”YES”
#Включаем прокси-сервер SQUID
squid_enable=”YES”
#Файловый сервер для сетей Microsoft
samba_enable=”YES”
#Russian console
font8x16=”cp866b-8x16”
font8x14=”cp866-8x14”
font8x8=”cp866-8x8”
keymap=”ru.koi8-r”
#скорость повторения, есть значения slow, normal и fast
keyrate=”fast”
scrnmap=”koi8-r2cp866”
2 шаг – изменеие файла /etc/ttys , в нём надо изменить все cons25 на cons25r
3 шаг — изменение файла /etc/profile, дописываем туда:
LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET
И изменить надо /etc/csh.login, дописываем туда :
setenv LANG ru_RU.KOI8-R
setenv MM_CHARSET KOI8-R
3. Настройка ядра:
>cd /usr/src/sys/i386/conf
>cp GENERIC old
>ee GENERIC
добавляем строчки :
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPDIVERT
options IPFIREWALL_FORWARD
#options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options NETGRAPH
options NETGRAPH_ASYNC
options NETGRAPH_BPF
options NETGRAPH_ECHO
options NETGRAPH_ETHER
options NETGRAPH_HOLE
options NETGRAPH_IFACE
options NETGRAPH_KSOCKET
options NETGRAPH_L2TP
options NETGRAPH_LMI
options NETGRAPH_MPPC_ENCRYPTION
options NETGRAPH_ONE2MANY
options NETGRAPH_PPP
options NETGRAPH_PPTPGRE
options NETGRAPH_RFC1490
options NETGRAPH_SOCKET
options NETGRAPH_TEE
options NETGRAPH_TTY
options NETGRAPH_UI
options NETGRAPH_VJC
Здесь IPFIREWALL означает включение программы файервола ipfw, IPFIREWALL_VERBOSE означает ведение логов ipfw, IPFIREWALL_VERBOSE_LIMIT=10 ограничичивает максимальное число записей, которые могут быть сделаны в секунду. Учитывайте то, что если вы поставите большое число для IPFIREWALL_VERBOSE_LIMIT, то ваш винчестер может засорится от быстрорастущих логов. IPDIVERT означает включение демона маскарадинга natd, IPFIREWALL_DEFAULT_TO_ACCEPT означает, что ваш файервол по дефолту будет открытым. Если вы не указываете этой опции, то при старте файервола любой доступ из сети к компьютеру будет закрыт.
Советую включить опцию IPFIREWALL_DEFAULT_TO_ACCEPT, потому что как только вы разберетесь с правилами у ipfw, то сможете закрыть все, что не нужно и оставить только используемые порты. DUMMYNET означает, что вы сможете контролировать скорость передачи через ваш компьютер. К примеру, можно будет ограничить скорость для компьютера с ip-адресом 10.0.0.12 до 19К, если он активно качает картинки сомнительного содержания в рабочее время или при платном трафике. А себе и начальнику вырезать из общего канала отдельные каналы по 64К каждому :)
Теперь надо долго и упорно компилировать ядро
config GENERIC
cd ../../compile/GENERIC/
make depend
make
make install
Если на каком-то шаге компиляции команда make depend или make выйдет, сказав вам об ошибке, то не расстраивайтесь, а просто попробуйте перезапустить комманду заного при этом приблизительно запомнив о чем говорилось в тексте ошибки. Если после этого опять возникнет ошибка, то проверьте похожа ли она на предыдущую. В случае несовпадения смело повторяйте последнюю команду.
4. Настройка файрвола и NAT:
Теперь нам нужно заняться файлом правил файрвола:
>mkdir /etc/firewall
>ee /etc/firewall/config
И заносим туда правила:
#Вводим переменную для вызова ipfw
fw=”/sbin/ipfw –q”
#Добавляем некоторые переменные
out_ip=”XXX.XXX.XXX.XXX”
out_net=”XXX.XXX.XXX.XXX/27”
of_ip=”192.0.4.2”
of_net=”192.0.4.0/24”
tas_ip=”10.34.21.4”
tas_net=”10.34.21.0/29”
#сбрасываем все предыдущие настройки файрвола
${fw} –f flush
#строим таблице доступа к точкам
${fw} table 1 flush
${fw} table 1 add 10.34.21.34
${fw} table 1 add 10.34.21.10
${fw} table 1 add 10.34.21.26
${fw} table 1 add 10.34.21.50
${fw} table 1 add 10.34.21.18
${fw} table 1 add 10.34.21.58
#включаем перенаправление пакетов через интерфейсы out0 и tas0
${fw} add divert natd all from any to any via out0
${fw} add divert natd all from any to table\\ (1\\) out via tas0
${fw} add divert natd all from table\\ (1\\) to any in via tas0
#включаем разрешение на всё для внутренней сети и lo0
${fw} add ip from any to any via of0
${fw} add all from any to any via lo0
#разрешаем ТОЛЬКО локальный трафик через lo0
${fw} add deny all from any to 127.0.0.0/8
${fw} add deny all from 127.0.0.0/8 to any
#разрешаем соединения инициированные из локальной сети
${fw} add allow tcp from any to any out xmit out0 setup
${fw} add allow tcp from any to any out xmit tas0 setup
#разрешаем соединениям из внетренней сети оставаться открытыми
${fw} add allow tcp from any to any out out0 established
${fw} add allow tcp from any to any out tas0 estableshed
#разрешаем порты для доступа из интернета к локальной сети
${fw} add allow tcp from any to any 22 setup
#разрешаем VPN
${fw} add ip from any to XXX.XXX.XXX.XXX 47 setup
${fw} add tcp from any to XXX.XXX.XXX.XXX 1723 setup
#сбрасываем попытки идентификации сервера
${fw} add reset log tcp from any to any 113
#разрешаем доступ только к внутреннему ДНС серверу
${fw} add allow udp from any to XXX.XXX.XXX.XXX 53 out xmit out0
${fw} add allow udp from XXX.XXX.XXX.XXX to any in recv out0
#Разрешаем пинг
${fw} add 65434 allow icmp from any to any
#Запрещаем всё остальное
${fw} add 65435 deny log ip from any to any
5. Установка и настройка trafd
Trafd – система подсчёта трафика, она состоит из нескольких частей :
1) Система контроля трафика
2) Система сбора трафика
3) Система построения отчётов
4) Набор скриптов ко всему выше перечисленному
Итак, приступим к установке:
cd /usr/ports/net/trafshow
make install
cd /usr/ports/net-mgmt/trafd
make install
cd /usr/ports/sysutils/rotate
make install
Тем самым мы установили практически всё что требуется. Теперь приступим к настройке.
Первое что нам потребуется – это прописать задания в crontab
6. Установка и настройка mpd
Шаг 1. Компилируем mpd
Компилируем mpd из дерева FreeBSD-портов (можно установить его и из
packages).
PS. Желательно перед компиляцие пакета mpd обновить дерево портов
через cvsup, для того, чтобы установить последнюю версию.
Компилируем и инсталлируем mpd:
cd /usr/ports/net/mpd
make
make install
Шаг 2. Конфигурируем mpd
В принципе, рекомендуется перед конфигурацией mpd включить опции
FreeBSD-ядра для работы с NETGRAPH. Однако компоненты NETGRAPH
загружаются как модули ядра и ядро впринципе пересобирать
необязательно. Как показала практика, все компоненты работают без
пересборуки ядра.
Для того, чтобы настроить mpd нужно создать 3 файла (все файлы должны
по умолчанию находиться в каталоге /usr/local/etc/mpd):
1. mpd.conf — файл описывающий конфигурацию интерфейсов
2. mpd.links — файл, описывающий конфигурацию соединений
3. mpd.secret — файл с паролями пользователей.
Для краткости и конкретики ниже приводятся все 3 файла, взятые с
работающей системы. Конфигурация написана для семи одновременно
входящих соединений (сетевые устройства ng0-ng6).
Mpd.conf:
default:
load pptp0
load pptp1
pptp0:
#так создается новый интерфейс, второй параметр — название
#соединения, который этот интерфейс будет использовать (из файла
mpd.links)
new -i ng0 pptp0 pptp0
#Задается локальный и удаленный ip адреса
set ipcp ranges 192.0.4.2/24 192.0.4.100/24
#Загружаются паремтры, одинаковые для всех интерфейсов
load pptp_standart
pptp1:
new -i ng1 pptp1 pptp1
set ipcp ranges 192.0.4.2/24 192.0.4.101/24
load pptp_standart
pptp_standart:
set iface disable on-demand
set bundle disable multilink
set link yes acfcomp protocomp
#Требуем chap авторизации
set link no pap chap
set link enable chap
set link keep-alive 60 180
set ipcp yes vjcomp
#Устанавливаем DNS и Wins
set ipcp dns 192.0.4.2
#set ipcp nbns 10.128.1.42
#Включаем proxy-arp, чтобы компьютер \"видел\" без маршрутизации
#корпоративную сеть (по протоколу arp)
set iface enable proxy-arp
#Включаем компрессию данных
set bundle enable compression
#Включаем компрессию данных, совместимую с Microsoft-клиентами
set ccp yes mppc
#Включаем шифрование, совместимое с Microsoft-клиентами
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless
set bundle yes crypt-reqd
#Задаем адрес для входящих соединений
set pptp self 0.0.0.0
#Разрешаем входящие соединения
set pptp enable incoming
set pptp disable originate
Как видно, создается 2 \"бандлf\" (pptp0-pptp1), которые обслуживают 2
интерфейсa. На каждый \"бандл\" накладываются определенные параметры
работы на интерфейс. Кроме того к каждому \"бандлу\" прикрепляется
\"линк\" (второй (pptpX) параметр в команде new -i ng5 pptp5 pptp5),
который должен быть описан в файле mpd.links.
mpd.links
pptp0:
set link type pptp
pptp1:
set link type pptp
Т.к. все параметры уже были установлены в файле mpd.conf, то для
\"линков\" достаточно обозначить их тип (pptp).
Авторизация пользователей осуществляется на основе данных из файла
mpd.secret.
Он имеет простой формат:
\"логин\" \"пароль\" IP-пользователя(необязательно)
Например, наш mpd.secret:
root ******* 192.0.4.66
Логин\\пароль могут совпадать с доменными именами, а могут и не
совпадать. Если указано поле IP-пользователя, то пользователю будет
выдан персональный IP-адрес.
8а. Настройка ДНС
В FreeBSD 6.0 по умолчанию идёт BIND 9.3.1 в нём нам надо :
А) включить форвардинг:
>ee /etc/namedb/named.conf
acl “office” { 192.0.4.0/24; 127.0.0.1; } ;
options {
directory “/etc/namedb”;
pid-file “/var/run/named/pid”;
dump-file “/var/dump/named_dump.db”;
statistics-file “/var/stats/named.stats”;
allow-query { “office”; };
forwarders { XXX.XXX.XXX.XXX; };
query-source address * port 53;
};
8б. Настройка DHCP
Сначала устанавливаем DHCP:
> cd /usr/lports/net/isc-dhcp3-server
> make all install
> ee /usr/local/etc/dhcpd.conf
И записываем туда примерно следующее:
default-lease-time 600;
max-lease-time 7200;
authoritative ;#указываем что он один в сети
ddns-update-style ad-hoc;
subnet 192.0.4.0 netmask 255.255.255.0 {
range 192.0.4.20 192.0.4.40;
option routers 192.0.4.2;
option domain-name-servers 192.0.4.2;;
}
host admin {
hardware ethernet 00:20:ed:8e:81:34;
fixed-address 192.0.4.1;
}
После выполнения всех пунктов можно перезагрузить машину и проверять работу роутера.
9. Установка и настройка программного RAID 1 (зеркало)
Первое что надо сделать это внести изменения в /boot/loder.conf
Примерно так:
echo geom_mirror_load=\"YES\" > /boot/loader.conf
Для начала надо сказать что делать я его буду так – 2 одинаковых диска будут поставлены как primary master и primary slave. Адреса этих дисков будут соответсвенно /dev/ad0 и /dev/ad1 . Теперь надо разбить первый диск под наши нужды, я для этого воспользовался утилитой sysinstall.
>sysinstall
Далее выбираем пункт Configure , далее идём в Fdisk. Разбиваем диск на то что нам нужно. Я например создал слайс и потом через меню label создал на нём один единственный большой раздел UFS. После каждого изменения разметки диска не забываем делать запись в структуру кнопкой W !!!
Итак после разбиения первого диска, второй у нас остался чистый. Если нет то делаем его ЧИСТЫМ , без разделов.
Далее надо создать сам RAID массив , делаем это так :
gmirror –v –b round-robin gm0 /dev/ad0
После этого надо добавить в массив второй диск :
gmirror insert –v gm0 /dev/ad1
Cамо создание массива выполнено, теперь в /etc/fstab надо добавить его описание :
/dev/mirror/gm0s1c /mnt/samba ufs rw 3 3
Перезагружаем роутер и любуемся массивом
10.Установка и настройка SAMBA сервера
Для начала надо установить SAMBA сервер :
cd /usr/ports/net/samba
make install clean
Что вы выберите дополнительного для устанвки самбы, уже дело ваше.
После установки :
cp /usr/local/etc/smb.conf.default /usr/local/etc/smb.conf
ee /usr/local/etc/smb.conf
Теперь настроим самбу :
[global]
workgroup = XXX // Имя рабочей группы или домена
netbios name = REZERV // Имя сервера, видимое в NetBIOS сети
server string = REZERV // Комментарии
hosts allow = 192.0.4. // Список разрешённых хостов
# guest account = nobody // Имя гостевого аккаунта
load printers = no // Загружать ли принтеры
log file = /var/log/log.%m // Место хранения логов %m – Имя машины
max log size = 100 // Максимальный размер лог файла
security = domain // Способ авторизации
password server = 192.0.4.12 // Адрес контроллера домена
encrypt passwords = yes // Шифровать ли пароль? Необходимо!!
socket options = TCP_NODELAY // Опции соединения
interfaces = of0 tas0 // интерфейсы на которых работает самба
winbind uid = 10000-20000 // Диапазон ID Для пользователей Самбы
winbind gid = 10000-20000 // Диапазон ID для групп пользователй самбы
winbind enum groups = yes // Регистрация групп
winbind enum users = yes // Регистрация Пользователей
dns proxy = no // Кешировать ли DNS?
client code page = 866 // Кодировка клиентов
[Public] // Имя папки видимое по сети
comment = main share // Коментарии
# browseable = yes // Видимая ли шара?
# writeable = yes // Можно-ли изменять ?
# guest ok = yes // Разрешён-ли доступ для гостей?
# only guest = yes // Разрешён ли доступ ТОЛЬКО гостям
path = /mnt/samba // путь до шары на локальной машине
public = yes // Доступность
writable = yes
read only = no // Доступ только для чтения?
# printable =
# create mask = 0777 // Маска с которой создаются файлы в этой
// папке
11. SQUID
Далее ставим прокси сервер SQUID
cd /usr/ports/www/squid
make
make install
Базовая настройка прокси сервера
Для этого отредактируем файл /usr/local/etc/squid/squid.conf
* сдесь приводяться изменения которые долны быть проведены в файле настроек, а не сам файл настроек squid.
ee /usr/local/etc/squid/squid.conf
http_port 192.0.4.2:3128
cache_mem 64 MB
cache_dir ufs /usr/local/squid/cache 3072 16 256
cache_access_log /usr/local/squid/logs/access.log
cache_log /usr/local/squid/logs/cache.log
cache_store_log /usr/local/squid/logs/store.log
//Access control
//если acl выноситься в отдельный файл то необходимо указывать путь к файлу в кавычках.
//Вид файла InternetUsers
//
//192.168.0.0/24 //если мы хотим вывесли всю сеть
//или так
//192.168.0.1
//192.68.0.5
// если отдельные компьютеры.
acl InternetUsers src \"/usr/local/etc/squid/InternetUsers\"
//http access
http_access allow InternetUsers
http_access deny all
//And finally deny all other acces to this proxy
http_access allow InternetUsers
http_access deny all
Добавим параметр
visible_hostname InternetServer // В имени не использовать пробелы.
Далее поменяем страницу с ошибками
//error_directory
error_directory /usr/local/etc/squid/errors/Russian-1251
Теперь создадим файл с пользователями Интернет
ee /usr/local/etc/squid/InternetUsers
добавим в него нашу локальную сеть 192.0.4.0/24
Создадим swap директорию и запустим squid
/usr/local/sbin/squid –z
/usr/local/sbin/squid -D
14.Sarg
Соберем генератов отчетов по работе SQUIDа
cd /usr/ports/www/sarg
make
make install
Настроим SARG
ee /usr/local/etc/sarg/sarg.conf
//Установим язык который будет использоваться в отчётах
language Russian_windows1251
//Лог по которому строиться отчёт
access_log /usr/local/squid/logs/access.log
//Заголовок отчётов
title \"Internet Statistic Server\"
//Директория где будут храниться отчёты
output_dir /usr/ftp/html/squid-reports
//Дата в формате день месяц год
date_format e
//Топ 200 сайтов
topsites_num 200
//Заменим IP адреса именами пользователей
usertab /usr/local/etc/sarg/usertab
//Установим кодировку отчёта
charset Windows-1251
15.Настройка CRONTAB
Настройка crontab осуществляется командой :
crontab –e
crontab –u squid -e
Формат данных там имеет вид:
0-59 0-23 1-31 1-12 1-7 /run/program/full/path
Минуты часы дни месяца месяц день недели полный путь
к программе
Нам-же надо установить как у нас будет выпольняться построение отчётов. Вот пример из рабочего расписания :
0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave of0
0 0,2,4,6,8,10,12,14,16,18,20,22 * * 1-7 /usr/local/bin/trafsave out0
0 0,2,4,6,8,10,12,14,16,18,20,22 * * 1-7 /usr/traff/alltraf
0 2 1 * * /usr/local/bin/trafrotate
10 9,10,11,12,13,14,15,16,17 * * 1-7 /usr/local/bin/sarg
А вот эта строчка должна выполняться под пользователем squid:
0 0 1 * * /usr/local/sbin/squid -k rotate
Разберём формат попристальней :
0 0,4,8,12,16,20 * * 1-7 /usr/local/bin/trafsave of0
Означает что программа с полным путём /usr/local/bin/trafsave of0 будет запускаться в 0 минут каждые 4 часа каждый день каждый месяц в любой день недели.