Документация по ОС FreeBSD Пятница, 07.02.2025, 19:41
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

Настройка шлюза на FreeBSD 5.4 [2005]
Задача

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

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


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

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


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

* в версии FreeBSD 6.x пересборка ядра не требуеться
После перезагрузки войдём в систему как  root
Изменим пароль root

        # passwd


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

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


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

        # cp GENERIG GATEWAY


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

        # ee GATEWAY


Добавляем следующие опции  в файл  GATEWAY

       
        //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!!! Так лучше не делать!!!
!!! Правильно отключить sendmail: /etc/rc.conf sendmail_enable="NONE"
Создадим /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 Установка приложений
* при установке другим способом(пакеты, исходники) возможно другое расположение конфигурационных файлов
* например /usr/local/squid/etc/squid.conf вместо /usr/local/etc/squid/squid.conf
Далее ставим прокси сервер SQIOD

        # 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.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 выноситься в отдельный файл то необходимо указывать путь к файлу в кавычках.
      //Вид файла 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.168.0.0/24

Создадим swap директорию

        # /usr/local/sbin/squid -z


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

        squid_enable=YES


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

# ee /etc/resolv.conf

        nameserver 82.1.2.3 // DNS провайдера


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


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

Для получения данных о всех прошедших пакетах через ваш шлюз воспользуемся 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. прошу не судить строго это первый опыт написание статьи


Источник: http://www.opennet.ru/base/net/freebsd_gateway_setup.txt.html
Категория: Net | Добавил: oleg (07.02.2008) | Автор: Shapovalov Victor
Просмотров: 1319 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2025