Возможно вы искали: 'Pferd & Pony: Mein Pfe...'

May 15 2025 18:39:37
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Создаём шлюз с системой учёта трафика на слабом компьютере (traffic freebsd gateway squid proxy arp mac limit ipcad ipfw)

Создаём шлюз с системой учёта трафика на слабом компьютере (traffic freebsd gateway squid proxy arp mac limit ipcad ipfw)

Ключевые слова: traffic, freebsd, gateway, squid, proxy, arp, mac, limit, ipcad, ipfw, (найти похожие документы)

From: Николай Емашев
Date: Mon, 25 May 2009 17:02:14 +0000 (UTC)
Subject: Создаём шлюз с системой учёта трафика на слабом компьютере

Материал предоставлен редакцией журнала Системный администратор.
Опубликовано в журнале "Системный администратор" N 3 2009


Как поставить и настроить шлюз для небольшой сети на основе FreeBSD.

Вводные данные

Собственно, что мы имеем:

* локальная сеть из 60 машин, из которых только 15-20 нужно выпускать
в Интернет;


* старенький компьютер (процессор Celeron 1100 МГц, 256 Мб RAM, 30 Гб
HDD, хотя стабильно работало на процессоре PII 300 МГц, только сеть не
более 9-10 машин).



Задачи:

* организовать доступ в Интернет для 20 машин из сети;
* вести детальную статистику по трафику;
* отключать пользователя при превышении лимита;
* настроить доступ по MAC-адресу;
* резать рекламу и нежелательные сайты для сокращения расходов трафика.


Теперь все по порядку. Ввиду слабенького оборудования ставить будем
FreeBSD. Многие, конечно, скажут, что для такого железа может и Gentoo
пойти, но, на мой взгляд, FreeBSD является более гибкой в этом
отношении. Итак, приступим...


Установка и настройка

Как установить систему, я объяснять не буду, это не должно вызывать
вопросов, скажу лишь, что для логов нужно выделять размер побольше.
Если с этим сложности - handbook вам в помощь.

Если вы выдержали установку, приступаем к настройке сети. Первым делом
поставим веб-сервер и PHP - пригодятся для сбора статистики. Возможно,
придется поставить PHP5 EXTENSIONS.

Ставим прокси-сервер SQUID:

# cd /usr/ports/www/squid/


По умолчанию ставится версия 2.7, другие версии находятся на каталог
выше.

Далее даем команду:

# make install clean


Выбираем опции:

SQUID_DELAY_POOLS Enable delay pools - ограничение пользователям
скорости канала.

SQUID_FOLLOW_XFF Follow X-Forwarded-For headers - разрешить
изменение http-заголовков. Может понадобиться, если вы захотите скрыть
от общественности свой прокси-сервер.

Все остальное можно оставить как есть.

Замечание: чтобы впоследствии было меньше проблем с настройкой учетных
записей пользователей, будем делать прозрачный прокси.

Так, установили, теперь поставим статистику (кто какие сайты посещал,
какой объем данных скачал и т. п.). Выбирать скрипт для сбора
статистики - дело каждого. Их достаточное количество, но, по моему
мнению, заслуживают внимания только LightSquid и Free-SA. Расскажу
вкратце о них.


LightSquid

Запуская программу, мы получаем следующие отчёты:

* Количество соединений и скачанных байт в день, в месяц и в год по
каждому пользователю, для группы и для прокси-сервера в целом.


* Популярные сайты дня, месяца и года. В этом отчёте приятно
порадовала возможность сортировки списка по количеству запросов либо по
объёму данных.


* Таблица времени доступа пользователей к сайтам, то есть время
активности в Интернете.


* Отчёт о "больших" скачанных файлах.


Также хочется отметить удобный интерфейс.


Интерфейс LightSquid

Из недостатков можно отметить низкую скорость обработки логов и, как
было замечено на многих форумах, плохую работу с большими логами Squid,
что приводит порой к неправильному подсчету. Эту проблему мы исправим
позже - будем делать ротацию логов.


Free-SA

Написан на языке Си, по функциональности и назначению похож на
LightSquid. Главное отличие - скорость формирования отчетов от 7 до 20
раз выше по сравнению с LightSquid (7х - для 50 Мб файла access.log,
20x - для 1 Гб).

Присутствуют дополнительные отчеты (в том числе для оценки
эффективности сервера), изменяемые "на лету" темы оформления, имеется
поддержка различных форматов файлов журналов (Squid, CLF, Postfix,
Qmail, CGP). Доступен в портах. Сайт - http://free-sa.sourceforge.net





Может осуществлять:

* контроль расхода трафика по пользователям;
* контроль выполнения политик безопасности (в части доступа к ресурсам Интернета);
* оценку эффективности работы серверов.


Но о Free-SA поговорим в следующий раз, пока рассмотрим вопрос о сборе
статистики, имея слабый компьютер. Я не говорю, что эта программа будет
плохо работать, но LightSquid по своей функциональности устраивает меня
больше.

Эти программы локализованы, могут предоставлять отчеты в графическом
виде, поддерживают шаблоны. Их можно использовать вместе, но, по-моему,
это так же, как велосипеду поставить дополнительные колеса...

Я остановился на Light Squid - для небольшой сети это, пожалуй, самый
оптимальный вариант, и скрипты для лимита по трафику также будут под
эту статистику.


Работа с LightSquid

По установке вопросов обычно не возникает, ежели возникнут - скажу
словами Фоменко: "Если руки золотые, то не важно, откуда они растут"
- обращайтесь к документации.

# /usr/ports/www/lightsquid
# make install clean


Приступим к настройке. Для начала в httpd.conf добавим alias, чтобы
можно было обратиться к нему из браузера:

Alias /statistica "/usr/local/www/lightsquid"
<Directory "/usr/local/www/lightsquid">
AddHandler cgi-script .cgi
AllowOverride All
</Directory>


Позже статистику можно посмотреть, набрав в браузере:
http://your_server/statistica.

Далее необходимо немножко подправить конфигурационный файл:
/usr/local/etc/lightsquid/lightsquid.cfg. Он небольшой, основное
внимание следует обратить на следующие строки:

$logpath ="/usr/local/squid/logs/";


Каталог, в котором находятся логи прокси-сервера.

$skipurl = "get.theon.ru|91.144.144.|penzadom.ru";


Домены и IP, с которых не будет собираться статистика - у меня это
внутренние ресурсы провайдера, где не идет учет трафика. На работе -
служебные сайты.

$lang ="ru-koi8";


Язык в кодировке koi8, если поставить "$lang ="ru"", то будет в
windows-1251. У меня в koi8, потому что я редактирую списки
пользователей через консоль, которая в этой самой кодировке. Если
выбрать потом "ru", то получатся крякозяблы.

$templatename ="ric";


Html-шаблон можно будет скачать на сайте журнала [2]www.samag.ru в
разделе "Исходный код". Стандартный не очень блещет красотой
дизайнерской мысли:

$bigfilelimit = 20*1024*1024;


Какие файлы будем считать большими - у меня 20 Мб.

$perusertrafficlimit = 300*1024*1024;


Лимит трафика в день на пользователя, его, конечно, не отключат, но в
статистике он будет выделен как враг народа, определенным цветом. Так
что можно знать - кто в рабочее время больше всего расхищает трафик.

В папке /usr/local/etc/lightsquid находятся настройки групп
пользователей, так как у нас сеть небольшая, то их мы не будем
затрагивать. Внесем изменения только в realname.cfg. Формат записи
такой - "IP-адрес имя", например:

192.168.2.7 Есин Виктор
192.168.2.8 Калинин Владимир


Статистику теперь можно получать, запуская скрипт
/usr/local/www/lightsquid/lightparser.pl, что не очень удобно, поэтому
его следует добавить в задания cron (команда "crontab -e"), но об
этом чуть позже.


Настройка коллектора для сбора трафика, идущего в обход прокси-сервера

Прокси-сервер со статистикой теперь есть (далее сделаем его
прозрачным). Как известно, в лог попадает в основном http-трафик, но
как быть с той категорией пользователей, которые могут и с других
сервисов (ftp, jabber, почта, ssh-трафик и т. п.) тонны данных
скачать?! Некоторое время я бился над этой проблемой, пока... как-то
вечером гугля в Интернете в поисках очередной программы, улучшившей бы
мне жизнь, не наткнулся на ipcad ([3]http://lionet.info/ipcad). Вкратце
- он сможет посчитать трафик, идущий в обход прокси, и записать его в
логи Squid. Программа имеется в портах - /usr/ports/net-mgmt/ipcad.

Помимо ipcad есть еще много коллекторов, но пересборка ядра, куча
ненужных перловых скриптов, web-gui с базой MySQL и несколько убитых
банок пива меня как-то не вдохновили. Поэтому пойдем по пути
наименьшего сопротивления.

После установки коллектора добавим его в автозагрузку:

# echo 'ipcad_enable="YES"' " /etc/rc.conf


Теперь правим конфигурационный файл /usr/local/etc/ipcad.conf


capture-ports enable;
// Интерфейс заменить на свой
interface rl0 filter "ip and dst net 192.168.2.0/24 and not src net 192.168.2.0/24";
// Считаем все адреса
aggregate 0.0.0.0/0 strip 32;
// Теперь укажем, какие порты как отображать
aggregate 1-19 into 65535;
aggregate 20-21 into 21;
aggregate 22-23 into 22;
aggregate 25 into 25;
aggregate 24 into 65535;
aggregate 26-79 into 65535;
aggregate 80-81 into 0;
aggregate 82-109 into 65535;
aggregate 110 into 110;
aggregate 111-442 into 65535;
aggregate 443 into 443;
aggregate 444-3127 into 65535;
aggregate 3128 into 0;
aggregate 3129-65535 into 65535;
// Настройки rsh-сервера, с помощью которого будет просматриваться статистика
rsh enable at 127.0.0.1;
rsh root@127.0.0.1 admin;
rsh root@127.0.0.1 backup;
rsh root@127.0.0.1;
rsh 127.0.0.1 view-only;
rsh ttl = 3;
rsh timeout = 30;
chroot = /var/log/ipcad;
dumpfile = ipcad.dump;
pidfile = ipcad.pid;


Скрипт для запуска назовем ipcad.sh и разместим в /usr/local/scripts.
Для удобства строки пронумерованы:

1. #!/bin/sh
2. # Диапазон адресов локальной cети, указываем подсеть
3. net="192.168.2"
4. ttime=`/usr/bin/rsh localhost sh ip acco|grep 'Accounting data saved'|awk '{print ($4)}'`
5. /usr/bin/rsh localhost clear ip accounting
6. /usr/bin/rsh localhost show ip accounting checkpoint|grep $net|awk /
-v vtime=$ttime '{print (vtime".000",1,$2,"TCP_MISS/200",$4,"CONNECT",$1":"$5,"-","DIRECT/"$1,"-")}'
"/usr/local/squid/logs/access.log

Делаем прокси-сервер прозрачным и настраиваем брандмауэр. Так,
определимся с брандмауэром, для этого нужно пересобрать ядро с опциями:

options IPFIREWALL
# Логгинг пакетов, если в правиле написано `log`
options IPFIREWALL_VERBOSE
# Защита от атак типа флудинга
options IPFIREWALL_VERBOSE_LIMIT=50
# Перенаправление пакетов
options IPFIREWALL_FORWARD
# Трансляция адресов
options IPDIVERT
# Разрешающее последнее правило, что делает брандмауэр открытым
# (на случай каких-либо ошибок в конфигурационных скриптах)
options IPFIREWALL_DEFAULT_TO_ACCEPT


Нам брандмауэр понадобится в основном для настройки прозрачного прокси,
доступ остальных пользователей к серверу будет контролироваться по
MAC-адресам сетевых карт.

Если хотите защитить свой сервер от атак извне (хотя маловероятно для
обычного шлюза на несколько машин, другое дело сервер в крупной
компании, но чем черт не шутит), можно воспользоваться готовым
конфигурационным файлом. Взять можно здесь: http://www.lissyara.su/?id=1127.

Если не хочется возиться со всеми настройками, подойдет и такой:

# Сбросим список
ipfw -q -f flush
# Установим префикс команды для набора правил
cmd="ipfw add"

# squid
# Разрешаем исходящий трафик с сервера
$cmd 50 allow all from me to any
# Разрешаем входящий трафик к серверу
$cmd 50 allow all from any to me
# Делаем прозрачный прокси
$cmd 100 fwd 127.0.0.1,3128 tcp from 192.168.2.0/24 to any 80


Чтобы брандмауэр нормально выполнял эти правила, их нужно поместить в
файл.

К примеру, в /usr/local/scripts/firewall.sh, сделать его исполняемым:

chmod 755 /usr/local/scripts/firewall.sh


и прописать загрузку в /etc/rc.conf:

firewall_enable="YES"
firewall_script="/usr/local/scripts/firewall.sh"


Хотя он у меня лежит в /usr/local/etc/firewall.sh, но это кому как
удобнее.


Контроль доступа к серверу по MAC-адресам

Следующим этапом нужно сделать доступ к нашему шлюзу только избранным,
которые потом и кровью выбивали у начальства старенький Celeron ну или
приносили пиво админу, когда он пытался заставить его нормально
работать.

Делать это будем при помощи arp. Вкратце - это программа, которая
сопоставляет IP-адреса с их физическими адресами. Как ею пользоваться и
с чем применять, я рассказывать не буду - это дело отдельной статьи,
тут укажу лишь последовательность действий с объяснением
конфигурационного файла. Если нужно что-то еще, то поможет man arp,
если с английским плохо - поиск по [5]opennet.ru.

Используем команду:

# arp -an | awk -v OFS="t" '{print(substr($2, 2, length($2)-2), $4)}' > /usr/local/etc/mac_control


Результат ее выполнения запишет файл mac_control, в котором с
IP-адресами будут сопоставляться их физические адреса. (Если все машины
в сети включены или хотябы те, которые нам нужны.) Далее немного
подправим его руками - удалим IP, которым знать о существовании нашего
сервера совсем не обязательно.

Если адреса нужного компьютера не оказалось в списке, достаточно
пропинговать его, затем посмотреть на вывод команды "arp -a".

Очистим arp-таблицу и заполним ее из нашего файла:

# arp -d -a
# arp -f /usr/local/etc/mac_control


Но каждый раз это проделывать как-то не по-нашему, так что, погуглив, я
набрел на скрипт автозапуска.

Создадим такой файл - /usr/local/etc/rc.d/staticarp.sh и сделаем его
исполняемым:

#!/bin/sh
# Static ARP-table loader
# http://www.opennet.ru/base/net/arp_fix_bsd.txt.html
# Сергей Супрунов amsand@yandex.ru.
case $1 in
start)
arp -d -a > /dev/null
arp -f /usr/local/etc/mac_control > /dev/null
echo 'Static ARP-table is loaded'
;;
stop)
arp -d -a > /dev/null
echo 'Static ARP-table is unloaded'
;;
restart)
arp -d -a > /dev/null
arp -f /usr/local/etc/mac_control > /dev/null
echo 'Static ARP-table is reloaded'
;;
status)
arp -an
;;
*)
echo "Usage: `basename $0` {start|stop|restart|status}" >&2
;;
esac
exit 0


Сейчас нужно сделать так, чтобы другие компьютеры вообще не замечали
наш сервер, для этого в rc.conf пропишем для локальной cети:

ifconfig_rl0="inet 192.168.x.x netmask 255.255.255.0 staticarp"


где rl0 - внутренний интерфейс. То есть сервер не будет делать
arp-запросы на этом интерфейсе, и те компьютеры, которые не окажутся в
файле, видеть его не смогут.

Теперь остальным будет трудновато достучаться до нашего шлюза. Если
только пытать не будут.


Настройка прокси-сервера

Многие тут же скажут: почему бы еще не установить squidGuard или
rejik3? Я, конечно, не против этого, скорее даже за, но запускать все
это на старенькой машине не решился. Если хотите - в Сети полно статей
на эту тему, все решается добавлением пары строк в конфигурационный
файл прокси-сервера. Я же опишу, как сделать редиректы средствами
самого Squid.

Следующй этап - правка squid.conf. Вы спросите, почему сейчас, а не в
начале статьи? Потому что не совсем удобно после установки
определенного софта каждый раз приводить его куски. К тому же многие
новички боятся настраивать Squid, посмотрев на конфигурационный файл, а
он ни много ни мало несколько десятков страниц А4. Все это потому, что
в нем находятся примеры настроек и man. Поэтому вот мой рабочий
конфигурационный файл с подробными комментариями:


# СЕТЕВЫЕ ОПЦИИ
# Указываем, на каком порту будет крутиться наш прокси и делаем его прозрачным

http_port 3128 transparent

# Указываем, какие url не кэшировать, а отправлять запросы напрямую
acl QUERY urlpath_regex cgi-bin ? cmd dst dk?st.cmd
no_cache deny QUERY

# РАЗМЕРЫ КЭША И ПАМЯТЬ
# Объем занимаемой памяти
cache_mem 23 MB

# При достижении данного уровня заполнения кэша - в процентах,
# начинается ускоренный процесс удаления старых объектов
cache_swap_high 95

# Процесс удаления старых объектов заканчивается, если достигнут данный уровень
cache_swap_low 90

# Максимальный и минимальный объект в кэше
maximum_object_size 1096 KB
minimum_object_size 37 KB

# Максимальный объект в памяти
maximum_object_size_in_memory 1024 KB

# ЛОГ-ФАЙЛЫ И ПАПКИ С КЭШЕМ
# Расположение папки с кэшем и его размер (в данном случае 400 Мб)
cache_dir ufs /usr/local/squid/cache 400 16 256

# Формат логов
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

# Папка с логами
access_log /usr/local/squid/logs/access.log squid
cache_log /usr/local/squid/logs/cache.log
cache_store_log /usr/local/squid/logs/store.log

# Ротация логов (не забудьте добавить задание в cron)
logfile_rotate 1

# НАСТРОЙКИ ДЛЯ ВНЕШНИХ ПРОГРАММ

# Под каким анонимным пользователем заходить на ftp
ftp_user anonimous@mail.ru

# Ширина листинга ftp
ftp_list_width 64

# Пассивный или активный режимы
ftp_passive off
hosts_file /etc/hosts

# ТОНКАЯ НАСТРОЙКА КЭША

# Используется для определения устаревания объекта в кэше
# (подробнее о значениях можно узнать здесь - http://www.bog.pp.ru/work/squid.html)
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

# Некоторые негативные ответы тоже кэшируются - connection refused и 404 not found - ttl
# задает их время жизни в кэше
negative_ttl 5 minutes
positive_dns_ttl 15 hours
negative_dns_ttl 1 minute

# КОНТРОЛЬ ДОСТУПА
# -------------------------------------------------------
#acl password proxy_auth REQUIRED
acl fileupload req_mime_type -i ^multipart/form-data$
acl javascript rep_mime_type -i ^application/x-javascript$

# Обозначаем диапазоны адресов:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8

# К каким портам разрешать доступ
acl SSL_ports port 443 563 5223
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 5190 # icq
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 5222 # jabber
acl Safe_ports port 1025-65535 # unregistered ports
acl CONNECT method CONNECT

# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_reply_access allow all
icp_access allow all

# АДМИНСКИЕ ПАРАМЕТРЫ

# Почтовый адрес, на который будет послано письмо, если в Squid возникнут проблемы
cache_mgr schmel@xak-faq.info

# Если запустить Squid от имени root, то поменять UID на указанный
cache_effective_user squid

# Не показывать версию Squid
httpd_suppress_version_string on

# Отображаемое имя хоста
visible_hostname unknown

# Память для пулов, можете поставить свое значение, в зависимости от мощности машины
# memory_pools on
# memory_pools_limit 25 MB

# Скрываем, что идем через прокси
forwarded_for off
header_access Via deny all

# Сбор статистики о клиентах
client_db on
coredump_dir /usr/local/squid/cache

## НАСТРОЙКА ПУЛОВ И ДОСТУПА К ОПРЕДЕЛЕННЫМ САЙТАМ##

# В этом файле записываются url, которым мы не будем резатьскорость
# (чаще - это внутренние ресурсы провайдера)
acl provider url_regex -i "/usr/local/etc/squid/acl/provider"

# Белый список
acl good_url url_regex "/usr/local/etc/squid/acl/good_url"

# Список слов, запрещенных в url
acl bad_urlpath urlpath_regex "/usr/local/etc/squid/acl/bad_urlpath"

# Список запрещенных сайтов
acl bad_url url_regex "/usr/local/etc/squid/acl/bad_url"

# Список сайтов с клубничкой
acl porno_url url_regex "/usr/local/etc/squid/acl/porno_url"

# Рекламные сайты
acl banner_url url_regex "/usr/local/etc/squid/acl/banner_url"

# Все вышеперечисленные файлы можно брать из баз rejik или SquidGuard

# Доступ к локальному веб-серверу (для статистики и ошибок)
acl web_server_users src 192.168.2.0/24
acl web_server src 192.168.2.1
http_access allow good_url
http_access allow provider

## ЗАПРЕТ ДОСТУПА И ОШИБКИ ##

http_access deny bad_urlpath !good_url
http_access deny bad_url !good_url
http_access deny porno_url !good_url
http_access deny banner_url !good_url

# Поставим редирект на прозрачную картинку
deny_info http://192.168.2.1/squid/rek/1x1.gif bad_urlpath
deny_info http://192.168.2.1/squid/rek/1x1.gif bad_url
deny_info http://192.168.2.1/squid/rek/1x1.gif banner_url
deny_info http://192.168.2.1/squid/rek/1x1.gif porno_url

## ДЕЛИМ КАНАЛ НА ВСЕХ ПОЛЬЗОВАТЕЛЕЙ ##

# В этом файле IP-адрес тех, кому разрешим доступ
acl InternetUsers src "/usr/local/etc/squid/acl/InternetUsers"

# Админу отдельный пул, без ограничений
acl admin src 192.168.2.3

# В этом файле сайты, доступные всем разрешенным, даже тем, кто попал в бан-лист
acl no_quota url_regex -i "/usr/local/etc/squid/acl/no_quota_url"

# Список пользователей, превысивших лимит трафика и попавших в бан-лист
acl banusers src "/usr/local/etc/squid/acl/user_deny"

# Дневное время
acl day time 08:00-23:59

## ДЕЛИМ КАНАЛ В ДНЕВНОЕ ВРЕМЯ ##

# Количество пулов - 2 (дневной и ночной)
delay_pools 2

# Класс пула 2й
delay_class 1 2

# Первые 300 Кб закачиваются на максимальной скорости, потом скорость не более 18 Кбс
delay_parameters 1 -1/-1 18000/300000

# Сайты в provider и пользователь admin обходят эти ограничения
delay_access 1 allow InternetUsers day !provider !admin
delay_access 1 deny all

## НОЧНОЙ ДОСТУП ##

# Здесь снимаем ограничения на скорость скачивания

delay_class 2 2
delay_parameters 2 -1/-1 -1/-1
delay_access 2 allow !day InternetUsers !admin
delay_access 2 deny all

# А здесь - наоборот, режем до минимума тем, кто решил закачку на ночь поставить
#delay_class 2 2

# Первые 50 Кб - на максимальной скорости, далее не более 4 Кбс
#delay_parameters 2 -1/-1 4000/50000
#delay_access 2 allow !day InternetUsers !admin
#delay_access 2 deny all

# ---------------------------

http_access allow admin

# Разрешим пользователям внутренней сети доступ к веб-серверу, для
# отображения статистики и ошибок

http_access allow web_server_users web_server
# Блокировка пользователей, которые превысили лимит (файл user-deny),
# и разрешение доступа только к тем IP и сайтам, которые перечислены в файле
# no_quota_url

http_access allow InternetUsers !banusers
http_access allow no_quota banusers
http_access deny banusers all
http_access deny all

# Cоздадим файл ERR_DENIED. Представляет собой html-страницу с грозными заявлениями о вреде расхищения
# корпоративного трафика. Поместить в папку с другими ошибками (например /usr/local/etc/squid/errors/Russian-1251)

deny_info ERR_DENIED all

## РЕДИРЕКТОР ##
# Если вы все-таки решили установить rejik
#url_rewrite_program /usr/local/rejik/redirector /usr/local/rejik/redirector.conf
#url_rewrite_children 15
# Директория с ошибками
error_directory /usr/local/etc/squid/errors/Russian-1251




Отключение пользователей, превысивших лимит

Создадим скрипт отключения пользователей, превысивших квоту на трафик.
Статистика будет сниматься с LightSquid (конфигурационный файл и
скрипты взяты с opennet.ru).

В /etc/squid создадим папку traf_limit и в ней создадим два файла:

traf_limit.pl


#!/usr/bin/perl
# Довесок на LightSquid Project (c) 2004-2005 Sergey Erokhin aka ESL
# Скрипт создает файл user_deny для ограничения Интернета по трафику
# Автор: Иван Лонин loninia@apksouz.ru 2008 год

use File::Basename;

# Не очень хорошо напрямую писать путь к конфигурационному файлу, но не
# хотелось sh-файл для сron делать

require "/etc/squid/traf_limit/config";

#($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime(time);
@dat=localtime(time);
$year =1900+$dat[5];
$month=1 + $dat[4];
$filter="$year$month";

#print "$log_path/$filter*n";
@daylist=glob("$log_path/$filter*");

foreach $daypath (sort @daylist) {

open FF,"<$daypath/.total";
$totaluser=<FF>;chomp $totaluser;$totaluser=~s/^user: //;
$totalsize=<FF>;chomp $totalsize;$totalsize=~s/^size: //;

while (<FF>) {

($user,$size,$hit)=split;
$h{$user}{size}+=$size;
$h{$user}{hit}+=$hit;
}
close FF;
}
#
$cummulative=0;
open RES,">$res_file";
print RES "# файл содержит пользователей, превысивших квоту.n
# автоматически переписывается скриптом
traf_limit.plndolzhen_bit_odin_usern";

foreach $user (sort {$h{$b}{size}<=>$h{$a}{size}} keys %h) {
$all4user=$h{$user}{size}/1024/1024;
if ($vip_user{$user}{size} > 0) {
$limit=$vip_user{$user}{size};
}else{
$limit=$all_limit;
}
if ($all4user >= $limit) {
print RES "$usern";
# print "$h{$user}{size}n";
};
}




И конфигурационный файл для скрипта traf_limit.pl -
/etc/squid/traf_limit/config:


#!/usr/bin/perl
# путь к логам lightsquid
$log_path="/www/lightsquid/report";

# Файл, в который пишутся пользователи, превысившие лимит
$res_file="/usr/local/etc/squid/acl/user_deny";

# Лимит трафика в мегабайтах
$all_limit=1500;

# Привилегированные пользователи с повышенным или пониженным
# лимитом для каждого пользователя строка формата:
#$vip_user={<имя_пользователя}{size}=<лимит_в_мегабайтах>;
$user1="192.168.2.3";
$vip_user{user1}{size}=7000;




Назначим файлам права на запуск:

# chmod 775 /etc/squid/traf_limit/config
# chmod 775 /etc/squid/traf_limit/traf_limit.pl


Следует отметить, что пользователя, превысившего лимит, отключат только
после того, как выполнится скрипт. Так что, если вам дорог каждый
мегабайт, следует почаще снимать статистику и запускать traf_limit.pl.
Но чем чаще это проделывать, тем выше нагрузка на сервер. Хотя если
мощность позволяет, то почему бы и не попробовать.

Также отмечу, что скрипт работает на текущую дату. Так что его запуск
вечером категорически не рекомендуется (первого числа будут
использоваться данные за прошлый месяц).

Запись всех заданий в планировщик

Наконец-то все установили и настроили, осталось связать все это вместе.

Вот то, что должно быть записано в заданиях cron:

# crontab -e

# В 4:55 сбрасывать трафик из коллектора ipcad в логи прокси-сервер
55 04 * * * /usr/local/scripts/ipcad.sh
# В 5:05 снимать статистику LightSquid
05 05 * * * /usr/local/www/lightsquid/lightparser.pl
# В 5:15 запускать скрипт лимита по трафику
15 05 * * * /usr/local/etc/squid/traf_limit/traf_limit.pl
# 5:25 производить ротацию логов
25 05 * * * /usr/local/sbin/squid -k rotate
# Запуск скрипта, удаляющего старые логи
35 05 * * * /usr/local/scripts/rmsquidlogs.sh


Содержимое скрипта /usr/local/scripts/rmsquidlogs.sh:

#!/bin/sh
rm /usr/local/squid/logs/access.log.0
rm /usr/local/squid/logs/cache.log.0
rm /usr/local/squid/logs/store.log.0


Вот в принципе и все. Шлюз настроен, трафик считается, начальство
довольно, и все это на стареньком селерончике.
1447 Прочтений •  [Создаём шлюз с системой учёта трафика на слабом компьютере (traffic freebsd gateway squid proxy arp mac limit ipcad ipfw)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Создаём шлюз с системой учёта трафи... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка