Введение
Будем использовать следующую версию системы для решения нашей задачи по настройке шлюза:
# uname -v FreeBSD 10.2-RELEASE-p8 #0 r292756M: Sat Dec 26 22:49:34 MSK 2015 root@freebsd:/usr/obj/usr/src/sys/GENERIC
Если вы еще не установили систему, то рекомендую мою статью с подробным описанием установки Freebsd 10 с видео в конце. Если вдруг будете устанавливать в качестве виртуальной машины на Hyper-V, то у меня есть отдельная заметка на эту тему с описанием поддержки ядром freebsd гипервизора Hyper-V.
На сервере установлены 2 сетевые карты:
- hn0 — внешний интерфейс, получает интернет от провайдера, настройки по dhcp
- hn1 — локальная сеть, адрес 10.20.30.1, установлен вручную
В нашу задачу по настройке программного freebsd роутера будет входить настройка маршрутизации на сервере, установка и настройка ipfw, включение nat, настройка локального dhcp и dns сервера.
Если у вас недостаточно опыта и вы не чувствуете в себе сил разобраться с настройкой шлюза самому с помощью консоли сервера — попробуйте дистрибутив на основе centos для организации шлюза и прокси сервера в локальной сети — clearos. С его помощью можно через браузер настроить весь необходимый функционал. В отдельной статье я подробно рассказал о настройке и установке clearos.
Подготовка сервера к настройке шлюза
Подробно вопрос настройки сервера Freebsd 10 я рассмотрел отдельно. Рекомендую ознакомиться с материалом. Здесь я не буду останавливаться на нюансах, а просто приведу команды, которые нам необходимы, без комментариев и подробных пояснений.
Любую настройку я предпочитаю начинать с обновления системы. Выполним его:
# freebsd-update fetch # freebsd-update install
Теперь установим mc, я привык работать в нем:
# pkg install mc
Включаем синхронизацию времени. Для этого добавляем в /etc/rc.conf
ntpd_enable="YES"
И запускаем демон ntpd:
# service ntpd start
Теперь проверим сетевые настройки. Первый сетевой интерфейс я настроил еще во время установки, поэтому доступ в интернет на сервере уже есть. Вот мой конфиг сети:
hostname="freebsd" ifconfig_hn0="SYNCDHCP" ifconfig_hn1="inet 10.20.30.1 netmask 255.255.255.0" defaultrouter="192.168.1.1"
Не забываем добавить dns сервер в /etc/resolv.conf.
Подготовительный этап завершен. Прежде чем двигаться дальше, я рекомендую проверить все, что было настроено тут, чтобы потом не отвлекаться. Убедитесь, что на самом сервере есть интернет, что он доступен в локальной сети — пингует другие машины и они его. После этого двигайтесь дальше.
Анализ сетевой активности в freebsd с помощью iftop
Иногда хочется посмотреть, что происходит на роутере и кто использует интернет в данный момент. По-умолчанию, в системе нет готового средства для получения этой информации. На помощь нам придет простая программа iftop, которая позволяет в режиме реального времени посмотреть активность на сетевом интерфейсе.
Устанавливаем iftop на настроенный Freebsd шлюз:
# pkg install iftop
Запускаем iftop с указанием интерфейса и отображением используемых портов:
# iftop -i hn1 -P
Видим любопытную картину — кто, куда, по какому порту и с какой скоростью лезет.
Я для примера на одном из компьютеров запустил генератор трафика интернета. Он занял почти весь канал и это стало отлично видно на роутере с помощью iftop. Конечно, эта простая утилита не решает всех вопросов по мониторингу сетевой активности, но для представления текущей картины подходит, если вам не нужно что-то большее.
Просмотр сетевых интерфейсов.
Для начала проясним: Есть два состояния сетевой карты UP(задействована) и DOWN(не задействована).
Первым делом стоит посмотреть наши сетевые интерфейсы, смотреть будем командой ifconfig.(Рис.1) Вывод команды показывает все интерфейсы UP и DOWN.
ifconfig
ifconfig -a покажет вам тоже самое.
ifconfig -a
Вот тут есть некоторые отличия от ifconfig в Ubuntu server.(в Ubuntu server «ifconfig» показывает только интерфейсы UP, «ifconfig -a» показывает все интерфейсы и UP и DOWN)
Рис.1 — Результат ввода команды ifconfig.
И так что же мы видим:
- em0 — наша сетевая карта, с IP адресом 192.168.3.11.
- em1 — вторая сетевая карта, не настроенная.
- lo — локальная петля, она у всех присутствует по умолчанию.
Для того чтобы посмотреть интерфейсы только UP, используется команда ifconfig -u (Рис.2):
ifconfig -u
а для просмотра интерфейсов только DOWN, используется команда ifconfig -d (Рис.3):
ifconfig -d
Рис.2 — Результат ввода команды ifconfig -u.Рис.3 — Результат ввода команды ifconfig -d.
В дальнейшем я буду показывать примеры настройки на интерфейсе «em0».
Для включения интерфейса используется команда ifconfig «НАЗВАНИЕ-ИНТЕРФЕЙСА» up.
ifconfig em0 up
Для выключения интерфейса используется команда ifconfig «НАЗВАНИЕ-ИНТЕРФЕЙСА» down.
ifconfig em0 down
«Поиграйтесь» с интерфейсом, если вы конечно же не подключены по ssh, и оставьте его в состоянии UP.
Настройка ipfw и ядерного nat на Freebsd 10
Для того, чтобы включить firewall и nat на будущем freebsd маршрутизаторе можно просто подгрузить необходимые модули ядра. Так сделать проще всего и быстрее, но есть нюанс. Как только вы загружаете модуль ipfw, вы теряете доступ к серверу. Если вы работаете не за консолью, а скорее всего это так, тем более если у вас вообще нет доступа к консоли сервера, то делать так не рекомендуется по понятным причинам. Поэтому мы поступим по-другому. Добавим необходимые опции в ядро, в том числе и опцию, которая делает по-умолчанию фаервол открытым, соберем новое ядро и установим его. Так мы не потеряем удаленный доступ к серверу.
Перед сборкой ядра обновим исходники системы. Я предпочитаю это делать через svn. Если он у вас не установлен, то установите:
Теперь обновляем исходники:
Копируем стандартное ядро и добавляем туда новые строки:
Собираем и устанавливаем новое ядро:
Добавляем в файл /boot/loader.conf строку:
Добавляем в /etc/rc.conf следующие строки (комментарии уберите):
Идем в указанную папку и создаем там файл для правил ipfw:
Содержание этого конфига приведу в виде ссылки на скачивание уже готового файла с подробными комментариями. Думаю, вы без проблем разберетесь в настройках. Здесь не хочу на этом подробно останавливаться, все же тема настройки ipfw это отдельный разговор, у нас задача настроить роутер. Вот готовый набор правил — rc.firewall. Не забудьте указать свои интерфейсы и ip адреса. Если ошибетесь, потеряете доступ к серверу. Когда все настроите, отключите логирование. Там по-умолчанию стоит запись логов на правила nat и deny all.
Копируем скрипт безопасного редактирования правил и делаем его исполняемым:
Подробно о том, что это за скрипт и как он работает я рассказал в теме по настройке freebsd, ссылку на которую давал в начале. Активируем новые правила запуском скрипта:
Откроется список правил в редакторе по-умолчанию. Там уже будут все правила. Можете еще раз их проверить и если все в порядке, сохраняете файл и выходите из редактора. В консоли вы увидите следующее:
Проверим примененные правила:
Если доступ к роутеру не потеряли, значит все в порядке. Можно перезагрузить сервер и все добавленные параметры в rc.conf активируются. Сделайте это и попробуйте на каком-нибудь компьютере в сети пропинговать адрес в интернете по ip, к примеру 8.8.8.8. Если пинги пройдут, значит все в порядке.
Поле того, как убедитесь, что ipfw настроен корректно, правила применятся и доступ к серверу есть, можете перевести его из открытого режима работы (последнее правило автоматически устанавливается allow all from any to any) в закрытый. Для этого в файл /boot/loader.conf добавьте строку и перезагрузите сервер:
На этом основная настройка шлюза на Freebsd 10 окончена. Клиенты смогут выходить в интернет. Но для удобства необходимо на шлюз установить и настроить dhcp и dns сервер, для обслуживания запросов пользователей. Иначе придется вручную забивать сетевые параметры и использовать сторонний dns сервер.
Настройка DHCP snooping на коммутаторах Cisco
sw2(config)# ip dhcp snooping
1 | sw2(config)# ip dhcp snooping |
Включить DHCP snooping в VLAN, которые должны быть защищены с его помощью:
sw2(config)# ip dhcp snooping vlan 10
1 | sw2(config)# ip dhcp snooping vlan 10 |
После включения DHCP snooping в VLAN, коммутатор перестает отправлять DHCP-сообщения от клиента на все порты VLAN. Сообщения по-прежнему отправляются на широковещательный адрес, но теперь коммутатор будет передавать их только на доверенные порты, так как только на них может находиться DHCP-сервер.
Настройка доверенных и ненадёжных портов
По умолчанию на коммутаторе все порты ненадёжные, поэтому доверенные порты надо явным образом указывать.
Указать доверенные порты:
sw2(config)# interface fa 0/1
sw2(config-if)# ip dhcp snooping trust
1 |
sw2(config)# interface fa 0/1 sw2(config-if)# ip dhcp snooping trust |
(Опционально) Указать адрес авторизованного DHCP-сервера, доступного через доверенный порт:
sw2(config)#ip dhcp-server 10.84.168.253
1 | sw2(config)#ip dhcp-server 10.84.168.253 |
По умолчанию, после включения DHCP snooping, на коммутаторе включена проверка соответствия MAC-адресов. Коммутатор проверяет соответствие MAC-адреса в DHCP-запросе MAC-адресу клиента. Если они не соответствуют, то коммутатор отбрасывает пакет.
При необходимости можно отключить эту проверку:
switch(config)# no ip dhcp snooping verify mac-address
1 | switch(config)# no ip dhcp snooping verify mac-address |
Добавление статических записей в базу данных привязки DHCP
Добавление статической записи в базу данных привязки DHCP:
sw2#ip dhcp snooping binding <mac-address> vlan <vid> <ip-address> interface <interface-id> expiry <seconds>
1 | sw2#ip dhcp snooping binding <mac-address> vlan <vid> <ip-address> interface <interface-id> expiry <seconds> |
Настройка опции 82
С опцией 82 связаны две настройки:
- Настройка значения remote ID;
- Настройка политики обработки пакетов с опцией 82.
Настройка remote ID (по умолчанию используется MAC-адрес коммутатора):
sw2(config)# ip dhcp snooping information option format remote-id
1 | sw2(config)# ip dhcp snooping information option format remote-id |
Настройка политики обработки пакетов с опцией 82. Коммутатор не будет отбрасывать пакеты, в которых есть опция 82:
sw2(config)# ip dhcp snooping information option allow-untrusted
1 | sw2(config)# ip dhcp snooping information option allow-untrusted |
Отключить вставку опции 82:
switch(config)# no ip dhcp snooping information option
1 | switch(config)# no ip dhcp snooping information option |
Просмотр настроек и проверка работы DHCP snooping
Просмотр настроек DHCP snooping:
sw2# show ip dhcp snooping
1 | sw2# show ip dhcp snooping |
Просмотр статистики DHCP snooping:
sw2# show ip dhcp snooping statistics
1 | sw2# show ip dhcp snooping statistics |
Просмотр базы данных привязки DHCP:
sw2# show ip dhcp snooping binding
1 | sw2# show ip dhcp snooping binding |
Настройка
Редактируем файл конфигурации:
ee /usr/local/etc/dhcpd.conf
В минимальной конфигурации необходимо задать параметры, выделенные жирным шрифтом, примеры удалить или закомментировать.
# DNS серверы option domain-name-servers 192.168.0.1, 192.168.0.2; # Время в секундах, по истечению которого клиент должен запросить продление аренды default-lease-time 600; # Время аренды IP адреса в секундах # Клиент должен освободить IP-адрес, если в течение заданного времени аренду продлить не удалось # Если аренда не продлена, сервер может выдать этот адрес другому клиенту max-lease-time 7200; # Выдавать клиенту новый адрес, если запрошенный клиентом адрес не входит в пул сервера authoritative; # Источник, который будет указан при отправке сообщений в Syslog log-facility local7; # Декларация подсети subnet 192.168.0.0 netmask 255.255.255.0 { # Пул динамических адресов range 192.168.0.129 192.168.0.189; # Шлюз option routers 192.168.0.1; } # Задать фиксированный IP-адрес для хоста #host Name { # hardware ethernet 00:26:5e:66:6c:08; # fixed-address 192.168.0.190; #}
Временное назначение ip адреса.
Честно говоря я не знаю для чего может пригодиться временное назначение сетевых настроек. Разве что допустим у вас какой-нибудь сервер который предназначен только для вашей локальной сети и вы вдруг решили быстренько обновить ПО через интернет на этом сервере, чтобы не ходить к шлюзу не раздавать интернет на нужный IP адрес итд. Вы можете обойтись парой команд.
Например, мы знаем что на 192.168.3.109 точно есть доступ в интернет, назначаем этот IP адрес нашему интерфейсу, так же нужно указать маску сети(Рис.12):
ifconfig em0 192.168.3.109 netmask 255.255.255.0
или командой с короткой записью маски сети.
ifconfig em0 192.168.3.109/24
Рис.12 — Указание временных настроек для сетевого интерфейса em0.
Интернет может не появиться, так как не указан шлюз по умолчанию. Прописываем его и пингуем гугловкие восьмёрки.(Рис.13)
route add default 192.168.3.1
ping 8.8.8.8
Рис.13 — Указываем шлюз по умолчанию. Проверяем ping.
Правильно ли мы прописали наш шлюз по умолчанию можно посмотреть в таблице маршрутизации. Она выводится с помощью команды «netstat -rn», Шлюз по умолчанию будет обозначен флагом UG.(Рис.14)
netstat -rn
Рис.14 — Вывод таблицы маршрутизации.
Если вы где-то ошиблись в написании или у вас указан другой шлюз, то можно удалить шлюз по умолчанию.
route del default
На этом временная настройка закончена, помните что после перезагрузки сервера или отдельно службы networking, все временные настройки исчезнут.
Добавляем маршрут в сеть 192.168.0.0/16 (Маска 255.255.0.0) через основной шлюз(gateway) 192.168.3.1/24
route add 192.168.0.0/16 192.168.3.1
Вариант добавления маршрута с указанием полной маски.
route add -net 192.168.0.0 -netmask 255.255.0.0 192.168.3.1
Настройка сети через файл конфигурации.
Для настройки статического или динамического IP адреса нам надо отредактировать файл конфигурации сетевых интерфейсов — /etc/rc.conf мы будем редактировать его с помощью текстового редактора vi.(Рис.4) Сразу скажу, для того чтобы редактировать в vi нужно нажать букву «i», а чтобы сохранить и закрыть документ надо нажать «Esc» ввести «:wq!» и нажать «Enter».
vi /etc/rc.conf
Рис.4 — vi /etc/rc.conf.
Получение настроек сети по DHCP.
Чтобы назначить получение настроек по DHCP, нужно вписать( или изменить существующую) строчку в файл /etc/rc.conf.(Рис.5)
ifconfig_НАЗВАНИЕ-ИНТЕРФЕЙСА=»DHCP»
ifconfig_em0="DHCP"
Рис.5 — Получение сетевых настроек по DHCP.
Перезапускаем сетевую службу netif.(Рис.6)
/etc/rc.d/netif restart
Рис.6 — Перезапуск сетевой службы FreeBSD.
Смотрим активные сетевые интерфейсы, видим, полученный по DHCP, IP адрес интерфейса em0 — 192.168.3.6(Рис.7)
ifconfig -u
Проверяем выход в интернет пингуем гугловские восьмёрки.
ping 8.8.8.8
Рис.7 — Проверка активных интерфейсов и доступа к сети.
Пинги идут. Всё отлично!
Указание настроек сети вручную.
Чтобы назначить статичный адрес для нашей Freebsd нужно в файл /etc/rc.conf вписать две строки(Рис.8)
ifconfig_НАЗВАНИЕ-ИНТЕРФЕЙСА=»inet IP-АДРЕС-FREEBSD netmask МАСКА-СЕТИ»
defaultrouter=»IP-АДРЕС-ШЛЮЗА»
ifconfig_em0="inet 192.168.3.11 netmask 255.255.255.0" defaultrouter="192.168.3.1"
Рис.8 — Статичные настройки сетевого интерфейса.
Перезапускаем сетевую службу.
/etc/rc.d/netif restart
Проверяем активные интерфейсы
ifconfig -u
Проверяем выход в интернет пингуем гугловские восьмёрки.
ping 8.8.8.8
Шаг 2: Настройка DHCP-сервера
3. Основной файл конфигурации DHCP — /etc/dhcp/dhcpd.conf, в него нужно внести всю информацию, отправляемую клиентам.
В файле конфигурации DHCP есть два типа данных:
- параметры – указывают, как выполнять задание (например, на какое время выделять адрес), выполнять ли его вообще (например, выделять ли адреса неизвестным клиентам) или какие параметры сетевой конфигурации отправлять DHCP-клиенту.
- декларации – определяют топологию сети, описывают клиентов и предоставляемые им адреса, или применяют группу параметров к группе деклараций.
4. Для определения настроек DHCP-сервера откроем и отредактируем файл конфигурации:
$ sudo vi /etc/dhcp/dhcpd.conf
Установите в начале файла следующие глобальные параметры, они будут действовать для всех указанных ниже деклараций (измените их в соответствии с вашими задачами). Это имя домена domain-name, имена DNS-серверов domain-name-servers, время аренды по умолчанию в секундах default-lease-time (если клиент не запросил его сам), максимальное время аренды в секундах max-lease-time и параметр authoritative, означающий «авторитетность» сервера в сегменте сети. Данный параметр нужен на тот случай, если клиент запросит неправильный IP-адрес — в этом случае сервер ответит ему отказом и предложит получить новый адрес.
option domain-name "itproffi.lan"; option domain-name-servers ns1.itproffi.lan, ns2.itproffi.lan; default-lease-time 3600; max-lease-time 7200; authoritative;
Обратите внимание, что перед некоторыми параметрами указано слово option, а перед некоторыми — нет. Это слово задает параметры, которые передаются клиенту в сетевой конфигурации
5. Теперь нужно указать подсеть, в нашем примере мы будем использовать DHCP в локальной сети 192.168.10.0/24.
subnet 192.168.10.0 netmask 255.255.255.0 { option routers 192.168.10.1; option subnet-mask 255.255.255.0; option domain-search "itproffi.lan"; option domain-name-servers 192.168.10.1; range 192.168.10.10 192.168.10.100; range 192.168.10.110 192.168.10.200; }
Здесь мы использовали следующие параметры:
routers — IP-адрес маршрутизатора по умолчаниюsubnet-mask — маска подсетиdomain-search — имя доменаdomain-name-servers — имена DNS-серверовrange — диапазон IP-адресов, выделяемый клиентам (можно указывать несколько диапазонов, но обязательно указать хотя бы один)
Запуск ISC DHCP Server
Редактируем rc.conf:
ee /etc/rc.conf
Включаем запуск ISC DHCP Server, и задаем сетевые интерфейсы, обслуживаемые нашим сервером:
dhcpd_enable="YES" dhcpd_ifaces="fxp0"
Запускаем dhcpd:
service isc-dhcpd start
В случае успешного запуска видим следующий текст:
Internet Systems Consortium DHCP Server 4.1-ESV-R3 Copyright 2004-2011 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Wrote 1 leases to leases file. Listening on BPF/fxp0/08:00:27:a9:a8:7d/192.168.0.0/24 Sending on BPF/fxp0/08:00:27:a9:a8:7d/192.168.0.0/24 Sending on Socket/fallback/fallback-net
Если ошибок при запуске не возникло, проверяем, раздаются ли IP-адреса.
Для принудительного обновления IP-адреса в Windows, в командной строке используем команды:
ipconfig /release ipconfig /renew
Проверяем лог-файл:
cat /var/log/dhcpd.log
В случае проблем, анализируем DHCP трафик:
tcpdump -vni
fxp0
udp port 67
ОПИСАНИЕ
Файл dhcpd.conf содержит информацию о настройкахdhcpd, сервера DHCP разработанного в ISC
Файл dhcpd.conf имеет простой текстовый формат. Разбор файла производится
встроенным в dhcpd парсером. Файл может содержать дополнительные пробелы,
символы табуляции и пустые строки для придания более читабельного вида.
Ключевые слова не чувствительны к регистру. Комментарии могут располагаться
в любом месте, он только не в кавычках. Комментарии начинаются с символа #
и продолжаются до конца строки.
По существу файл состоит из секций-объявлений вида: имя_секции {…}.
В фигурных скобках могут быть заключены другие секции(подсекции) и параметры
Параметры используются для что бы определить поведение сервера:
- что и как делать (например на какой срок выдавать адрес)
- делать ли вообще (например выдавать ли адреса неизвестным клиентам)
- какие дополнительные параметры, кроме IP адреса, предоставлять клиенту
(например шлюз по умолчанию или адреса серверов DNS).
Секции-объявления используются для:
- описания топологии сети
- описания клиентов сети
- описания адресов которые должны предоставлены клиентам
- присвоить группу параметров одновременно в нескольким секциям
При присвоении параметров нескольким секциям одновременно, все параметры должны быть
определены перед определением любых секций зависящих от этих параметров.
Секции описывающие топологию сети включают следующие подсекции:
shared-network и subnet.
Если клиентам в подсети адреса назначаются динамически, то
инструкция range должна быть использована в секцииsubnet. Для клиентов со статически назначенными адресами, или для конфигураций
в которых обслуживаются только известные клиенты, для каждого из них должен быть
описан параметр host
Если необходимо присвоить значения параметрам, в нескольких подсекциях,
которые не сгруппированы на основе принадлежности к одной подсети, то их можно
сгруппировать, поместив в секцию group.
Для каждой обслуживаемой подсети, и для каждой подсети к которой подключен dhcp сервер,
должны быть объявлены секции subnet, которые говорят серверу как распознать
какой адрес к какой подсети относится. Секция subnet требуется для каждой подсети
даже если в ней нет динамически выделяемых адресов.
Иногда случается что в одном физическом сегменте сосуществуют несколько IP подсетей.
Например в организации существует требование использовать 8-битные маски подсетей,
но сеть разрослась до размеров превышающих 254 хоста, в этом случае необходимо использовать
две подсети с 8-битными масками до тех пор пока новый ethernet сегмент не будет добавлен.
В этом случае секции subnet описывающие две эти подсети могут быть заключены в
секцию shared-network.
В некоторых случаях встречаются топологии когда клиенты находятся болле чем в одной
подсети, и в этом случае бывает предпочтительно назначить этим клиентам набор параметров
отличный от тех что назначаются другим клиентам в той же подсети. Клиенты которые
явно объявляются в подсекциях host, могут быть объединены в группу
с помощью объявления group, и в этой секции указываются параметры общие для
всей группы. Для клиентов чьи адреса назначаются динамически не существует способа
назначения параметров всей группе иначе как сгруппировав в соответствии в топологией сети.
Когда клиент загружается, начальные параметры определяются в соответствующем клиенту
объявлении host, затем проверяется секция group (если она существует)
которая содержит в себе host, далее проверяется секция subnet соответствующая
подсети в которой находится клиент, после этого проверяется указаны ли какие-нибудь параметры
в секции shared-network(если есть), содержащей нашу подсеть, ну и наконец
проверяются глобальные параметры, которые могут быть указаны перед всеми объявлениями.
Когда dhcpd ищет секцию host для соответствующего клиента, он следует
следующим правилам:
сперва ищется объявление host где указан параметр fixed-address
и секция subnet или shared network совпадает с подсетью в которой
находится клиент. Если нет соответствующих записей, dhcpd ищет объявление host
без параметра fixed-address. Если подходящих записей не найдено, то dhcpd считает
что нет записей для этого клиента, даже если они есть для этого клиента в другой подсети.
Подготовка сервера к настройке шлюза
Подробно вопрос настройки сервера Freebsd 10 я рассмотрел отдельно. Рекомендую ознакомиться с материалом. Здесь я не буду останавливаться на нюансах, а просто приведу команды, которые нам необходимы, без комментариев и подробных пояснений.
Любую настройку я предпочитаю начинать с обновления системы. Выполним его:
Теперь установим mc, я привык работать в нем:
Включаем синхронизацию времени. Для этого добавляем в /etc/rc.conf
Теперь проверим сетевые настройки. Первый сетевой интерфейс я настроил еще во время установки, поэтому доступ в интернет на сервере уже есть. Вот мой конфиг сети:
Не забываем добавить dns сервер в /etc/resolv.conf.
Часть 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. прошу не судить строго это первый опыт написание статьи