Наверх

Настройка интернет-шлюза на ОС FreeBSD

Настройка шлюза на FreeBSD 5.4

В статье предлагается решение для организации совместного доступа к Интернет-каналу с учетом трафика и прокси-сервером

Задача

  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) , "" 03/05/2005.
  3. (IPFW firewall FreeBSD)
  4. Игорь Чубин Журнал системный администратор №6(7) июль 2003 стр. 26-34
  5. Сергей Яремчук Журнал системный администратор №7(8) июль 2003 стр. 44-47
  6. Сергей Супрунов Журнал системный администратор №4(17) апрель 2004 стр. 10-14

Статья взята с сайта OpenNet.ru




Страница сгенерирована за 0,0309 s
FAQed Google + FAQed FaceBook FAQed Twitter FAQed Live Journal FAQed My.Mailru FAQed Одноклассники FAQed Вконтакте FAQed RSS