Информационные технологииStfw.Ru 🔍

Настройка шлюза на FreeBSD 5.4 (freebsd install squid gateway)

freebsd, install, squid, gateway Shapovalov Victor
🕛 01.12.2005, 02:29
Задача

1) организовать доступ в Интернет пользователям локальной сети
2) Вести учёт трафика: всего + отдельно web (кто, сколько и где был в Интернете)
3) Сократить затраты на Интернет путём использования прокси сервера.

 # команды // коментарии


Часть 1 Начнём с установки FreeBSD

Вставим установочный диск в CD-ROM, в BIOS выставим загрузку с CDROM.
После загрузки выберем Express -> Kernel-Developer
Ответим положительно на вопрос является ли машина шлюзом в Интернет
Ответим положительно на о запуске INETD
После установки извлечём диск из CDROM и перегрузимся.


Часть 2 Сборка ядра.

После перезагрузки войдём в систему как root
Изменим пароль root
 # passwd


Перейдём в каталог /usr/src/sys/i386/conf

 # cd /usr/src/sys/i386/conf


Создадим копию конфигурационного файлы ядра

 # cp GENERIG GATEWAY


Отредактируем файл под наши нужды
 # ee GATEWAY


Добавляем следующие опции в файл GATEWAY
 ident GATE
 //Firewall
 options IPFIREWALL //firewall options IPFIREWALL_DEFAULT_TO_ACCEPT //allow everything by default
 //IPDIVERT система NAT
 options IPDIVERT //divert sockets

Собираем
 # config GATEWAY # cd ../compile/GATEWAY # make depend all install # shutdown -r now


Устанавливаем временную зону во FreeBSD и точное время в BIOS
Редактируем файл /etc/rc.conf

# ee /etc/rc.conf
 defaultrouter="192.168.5.1" //Шлюз провайдера hostname="gate.plc.net" //Имя компьютера gateway_enable="YES" // Компьютер являеться шлюзов в интреннет ifconfig_rl0="inet 192.168.0.250 netmask 255.255.255.0" //Внутренний интерфейс ifconfig_rl1="inet 192.168.5.15 netmask 255.255.255.0" //внешний интерфейс firewall_enable="YES" //Включение firewall #firewall_type="OPEN" //Если не хотите его настраивать или не нет в этом необходимости можно сделать его открытым т.е. пропускающим все пакеты firewall_script="/etc/firewall.sh" //Настройки firewall (либо firewall_type="OPEN") natd_enable="YES" // Включаем NAT natd_interface="rl1" // NAT вешаем на внешний интерфейс natd_flags="" sendmail_enable="NONE" //отключаем sendmail usbd_enable="YES" //Включаем поддержку USB если нужно linux_enable="YES" //Включаем поддержку Linux если нужно trafd_enable="YES" // Включаем поддержку trafd trafd_ifaces="rl0 rl1" //Вешаем его на внутренний и внешний интерфейс trafd_flags="" trafd_log="/usr/local/var/trafd.log" //логи trafd inetd_enable="YES" //Включаем суперсервер INETD


отключим sendmail
 # chmod -x /etc/rc.d/sendmail


Создадим /etc/firewall.sh

 #ee /etc/firewall.sh


Содержание файла /etc/firewall.sh

 #!/bin/sh /sbin/ipfw -f flush /sbin/ipfw add 1000 pass all from any to any via lo0 /sbin/ipfw add 1100 deny all from any to 127.0.0.0/8 /sbin/ipfw add 1200 deny icmp from any to any frag /sbin/ipfw add 1300 deny icmp from any to any in icmptype 5,9,13,14,15,16,17 /sbin/ipfw add 1400 deny tcp from any to any not established tcpflags fin /sbin/ipfw add 1500 deny tcp from any to any tcpflags fin,syn,rst,psh,ack,urg /sbin/ipfw add 1600 deny tcp from any to any tcpflags !fin,!syn,!rst,!psh,!ack,!urg /sbin/ipfw add 4000 deny udp from any 137-139 to any via rl0 /sbin/ipfw add 4100 deny udp from any to any 137-139 via rl0 /sbin/ipfw add 5000 divert natd ip from 192.168.0.0:255.255.255.0 to any out xmit rl1 /sbin/ipfw add 5100 divert natd ip from any to 192.168.5.15 #/sbin/ipfw add 5200 deny all from 192.168.0.0/24 to not 192.168.0.0/24 80 /sbin/ipfw add 5500 deny all from 192.168.0.0/24 to not 192.168.0.0/24 80,21,443 /sbin/ipfw add 6000 allow all from any to any


Сделаем файл исполняемым

 # chmod 100 /etc/firewall.sh


Часть 4 Настройка FTP (отчеты будем забирать по FTP)

Редактируем /etc/inetd.conf
 # ee /etc/inetd.conf


Раскоментируем строчку
 ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l


Создадим файл /etc/ftpchroot

//Туда пишем пользователей чтобы они не вышли за пределы домашнего каталога
 # ee /etc/ftpchroot


Добавим в него пользователя stat
Добавим пользователя stat в систему
 # adduser


Часть 5 Установка приложений

Далее ставим прокси сервер SQIOD
 # cd /usr/ports/www/squid # make # make install

Базовая настройка прокси сервера
Для этого отредактируем файл /usr/local/etc/squid/squid.conf

#ee /usr/local/etc/squid/squid.conf
 http_port 192.168.0.250:8080 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 выноситься в отдельный файл то необходимо указывать путь к файлу в кавычках. 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.168.0.0/24

Создадим swap директорию
 # /usr/local/sbin/squid -z


Добавим SQUID в автозагрузку (в /etc/rc.conf)
 squid_enable=YES


Запустим squid
 # /usr/local/sbin/squid -D


Добавим записи о DNS серверах

# ee /etc/resolv.conf 
 nameserver 82.1.2.3 // DNS провайдера


После перезагрузки прокси сервер и шлюз должны работать.

Для получения данных о всех прошедших пакетах через ваш шлюз воспользуемся trafd
 # cd /usr/ports/net-mgmt/trafd # make # make install # 


Соберем генератов отчетов по работе 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


Настроим сохранения статистики trafd и генерации отчетов SARG //Crontab это планировщик заданий. //Параметры минута, час, число, месяц, день недели, выполняемый скрипт или команда. //Crontab -e начало редактирование планировщика для выполнения заданий с правами текущего пользователя.
 #crontab -e
 0 8,12,16,20 * * 1-7 /usr/local/bin/trafsave rl0 rl1 10 9,17 * * 1-7 /usr/local/bin/sarg

Включаем ротацию логов squid первого числа каждого месяца //Crontab -u squid -e начало редактирование планировщика для выполнения заданий с правами пользователя squid.
 # crontab -u squid -e
 0 0 1 * * /usr/local/sbin/squid -k rotate

Просмотр информации собранной trafd и сохранённой trafsave существляеться программой traflog

P.S. прошу не судить строго это первый опыт написание статьи


Список источников

1. Журнал информационных технологий CHIP Special 8/2004(17).

2. Дмитрий Новиков ( is@nnz.ru) , "Простая и эффективная система подсчёта трафика в ОС FreeBSD" 03/05/2005.

3. Перевод руководства по IPFW (IPFW firewall FreeBSD)

4. FreeBSD Handbook на русском языке

5. Игорь Чубин Журнал системный администратор №6(7) июль 2003 стр. 26-34

6. Сергей Яремчук Журнал системный администратор №7(8) июль 2003 стр. 44-47

7. Сергей Супрунов Журнал системный администратор №4(17) апрель 2004 стр. 10-14

Разное в ИТ   Теги: Freebsd

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉