Возможно вы искали: 'Croc 2'

May 15 2025 18:58:29
  • Как сделать 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
Главная » Статьи » Разное » Поднимаем шлюзовой сервер для локальной сети (PPPoE, HTP, Radius, биллинг) (pppoe gate linux radius traffic squid billing dhcp dns iptables htb)

Поднимаем шлюзовой сервер для локальной сети (PPPoE, HTP, Radius, биллинг) (pppoe gate linux radius traffic squid billing dhcp dns iptables htb)

Ключевые слова: pppoe, gate, linux, radius, traffic, squid, billing, dhcp, dns, iptables, htb, (найти похожие документы)

From: Морозов Иван <mi6@bk.ru.>
Newsgroups: http://lug.kmv.ru
Date: Mon, 29 Aug 2005 18:21:07 +0000 (UTC)
Subject: Поднимаем шлюзовой сервер для локальной сети (PPPoE, HTP, Radius, биллинг)

Оригинал: http://lug.kmv.ru/content.php?article.65

Поднимаем шлюзовой сервер для локальной сети
(PPPoE - Server + Radius + Nacctd +htb+squid+billing).


Пролог.

Итак разбираемся с тем что у нас имеется:

1. Сервер с Suse 9.x только что поднятый.

2. Куча клиентских машин в рабочей группе настроенных на получение адреса по DHCP.

3. /dev/hands требуется, желательно версией попрямее.

4. Пакеты rp-pppoe, freeradius, radiusclient, pppd(с поддержкой
radius(библиотека radius.so)), nacctd, iptables, htb(со скриптом
запуска), dhcp-server, named, mysql, также потребуется биллинг,
который работает с radius.(FreeNIBS, UTM(кстати в случае с UTM лучше
использовать его radius-server(тогда freeradius не нужен)Но UTM
платный и это его главный минус )).

5. Опыт в редактировании конфигов, пользования MySQL, опыт в
первоначальной настройке сервера: сетевые интерфейсы и .т.п.

Ставим пакеты, перечисленные в пункте 4 , удовлетворяем все
зависимости которые они запросят. Надеюсь с установкой пакетов все
справятся. Тем более что почти все они есть в Suse.

Условимся, что ip интерфейса eth0 сервера, который смотрит в инет, 21x.9x.1xx.23.
Условимся, что ip интерфейса eth1 сервера, который смотрит в локалку, 192.168.1.1.
Условимся, что локальный домен: byte.local
Сеть 192.168.2.10/24 будет использоваться для pppoe.


Настройка DHCP сервера.

Если кому хочется бегать от машины к машине и прописывать на них ip
адреса, то можно пропустить данных шаг. Но я человек ленивый и считаю,
что на клиентских машинах никаких настроек не должно быть Чтобы не
бегать =)

Ставим dhcp-server. Конфиг /etc/dhcpd.conf делаем примерно таким:

authoritative;
default-lease-time 259200; # 3 days
max-lease-time 604800; # 1 week
option domain-name "byte.local"; #имя локального домена
option routers 192.168.1.1; #маршрут по умолчанию
option domain-name-servers 192.168.1.1; #DNS сервер
option broadcast-address 192.168.1.255; #Адрес широковещательных пакетов
subnet 192.168.1.0 netmask 255.255.255.0 { # Подсеть
range 192.168.1.10 192.168.1.254; #С какого по какой ip выделять адреса.
# записи ниже нужны если вдруг у кого есть жгучее желание иметь постоянный ip в
# локалке
host baltazar.byte.local { #имя хоста
hardware ethernet 00:50:BF:44:27:D5; # MAC адрес клиента
fixed-address 192.168.1.10; # ip который хотим ему давать.
}
}


Вот и все.

Запускаем демон dhcpd: /etc/init.d/dhcpd start

Если что не так - смотрим логи, ищем ошибки.

Кого мучает паранойя или есть умники в сети c DHCP-серверами =),
кое-что в конфиг придется добавить. Search Google.


Настройка DNS-сервера.

Зачем DNS? Ну во-первых кеш, во-вторых удобно, если есть биллинг юзер
заходит stat.byte.local, вводит логинпасс, попадает на статистику.
Красиво... Можно также поставить апач и сделать небольшую
информ-страничку с новостями для юзеров, типа "с 00:00 до 02:00 в
пятницу будет проходить профилактика", ну и т.п.

Итак ставим named, идем править /etc/named.conf

options {
directory "/var/lib/named";
dump-file "/var/log/named_dump.db";
statistics-file "/var/log/named.stats";
!!!!!!!!!!!!forwarders { ЗДЕСЬ IP ВАШЕГО ПРОВА; 192.168.1.1; };
forward first;
listen-on port 53 { any; };
notify no;
};
zone "." in {
type hint;
file "root.hint";
};
zone "localhost" in {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
};
zone "byte.local" in {
type master;
file "byte.local.zone";
};
zone "1.168.192.in-addr.arpa" in {
type master;
file "192.168.1.zone";
};
zone "2.168.192.in-addr.arpa" in {
type master;
file "192.168.2.zone";
};


Теперь идем создавать файлы в директории "/var/lib/named"

byte.local.zone
192.168.1.zone
192.168.2.zone


Короче те, что описали с named.conf.
Итак содержимое этих файлов:

byte.local.zone

$TTL 1W
@ IN SOA @ root (
42 ; serial (d. adams)
2D ; refresh
4H ; retry
6W ; expiry
1W ) ; minimum
IN NS @
IN A 192.168.1.1
ice A 192.168.1.1
ns1 CNAME ice
ns2 A 192.168.2.1
stat CNAME ns2


192.168.1.zone

$TTL 1W
@ IN SOA ice. root.ice. (
42 ; serial (d. adams)
2D ; refresh
4H ; retry
6W ; expiry
1W ) ; minimum
IN NS ice.
1 IN PTR ice-ns1.
2 IN PTR ap2100-1


192.168.2.zone

$TTL 1W
@ IN SOA ice. root.ice. (
42 ; serial (d. adams)
2D ; refresh
4H ; retry
6W ; expiry
1W ) ; minimum
IN NS ice.
1 IN PTR stat-pppoe.


Вот и все.
Запускаем демон named: /etc/init.d/named start

Если что не так - смотрим логи, ищем ошибки.

Повторюсь, что кого мучает паранойя или есть умники в сети, кое-что
для безопасности в конфиг named придется добавить. Search Google.


Настройка PPPoE-сервера и демона pppd.

Здесь начинается самое сложное А именно найти radius.so под Вашу
версию pppd. В принципе можно пересобрать pppd из сырцов c поддержкой
mschap,mppe и библиотеку тоже. Короче эту часть я оставляю на откуп
Вам.

Вот линк: http://www.opennet.ru/base/net/pptp_mppe_mppc.txt.html.
Хоть там и про pptpd, но установка pppd таким же образом.

Если у вас лежит в /usr/lib/pppd/версия pppd/ библиотека radius.so, то
можно не беспокоиться и спокойно продолжать настройку дальше.

Ставим rp-pppoe.

Конфиг /etc/ppp/pppoe-server-options:

# PPP options for the PPPoE server
# LIC: GPL
logfile /var/log/pppoe.log
debug
mtu 1472
mru 1472
auth
require-pap
#require-chap
default-asyncmap
ktune
lcp-echo-interval 20
lcp-echo-failure 2
ms-dns 192.168.1.1
ms-dns ЗДЕСЬ IP ВАШЕГО ПРОВА
plugin radius.so
plugin radattr.so
192.168.2.1:
nobsdcomp
noccp
noendpoint
noipdefault
noipx
novj
receive-all


К конфиге /etc/ppp/options: lock
Для запуска сервера pppoe создадим скриптик pppoed запуска в
/etc/init.d

Скриптик для Suse. Для других систем подгоняйте сами

pppoed

#!/bin/bash
# init file for rp-pppoe server
#
# description: PPPOE kernel mode server
#
# processname: pppoe-server
# chkconfig: - 45 45
# source function library
. /etc/rc.status
case "$1" in
start)
echo -n "Starting PPPOE server: "
/usr/sbin/pppoe-server -I eth1 -L 192.168.2.1 -R 192.168.2.10
#Здесь eth1 - ваш pppoe server интерфейс
#192.168.2.1 - IP PPPoE сервера
#192.168.2.10 - Первый IP адрес клиента
touch /var/lock/subsys/pppoed
rc_status -v
;;
stop)
echo -n "Shutting down PPPOE server: "
killproc pppoe-server
rm -f /var/lock/subsys/pppoed
rc_status -v
;;
restart)
$0 stop
$0 start
;;
status)
status pppoe-server
;;
*)
echo "Usage: pppoed {start|stop|restart|status}"
exit 1
esac
exit 0


При желании вместо pppoe-server можно использовать pptpd. Опции
практически те же

Конфиги даны только с поддержкой PAP. При желании и возможностях можно
прикрутить и CHAP(MSCHAP).

Для проверки работает ли pppoe-сервер можно в файле
/etc/ppp/pppoe-server-options закомментировать строку "plugin
radius.so" и в файле /etc/ppp/pap-secrets написать

test * test 192.168.2.10


Запускаем pppoe-server: /etc/init.d/pppoed start

На любом клиенте создаем PPPoE соединение и используя логинпароль
test подключаемся. Смотрим дал ли нам сервер ip 192.168.2.10, и есть
ли DNS-сервера и есть ли default route на 192.168.2.1

Если что не так копаем логи. После экспиримента строчку из pap-secrets
удалить, в файле /etc/ppp/pppoe-server-options строку "plugin
radius.so" разкомментировать и перезапустить pppoed.


Настройка HTB.

Подробнее о htb можно узнать здесь:
http://www.opennet.ru/base/net/htb_saga.txt.html
Скрипт запуска htb можно скачать здесь:
http://freshmeat.net/projects/htb.init

Копируем этот скрипт в /etc/init.d
Создаем директорию /etc/sysconfig/htb
Создаем там файлы:

ppp0
ppp0-2.root
ppp0-2:10.ppp


тут и прописывается ограничение пропускной способности для клиентов.

ppp0

DEFAULT=30
R2Q=10


ppp0-2.root

RATE=96Kbit
BURST=9k


ppp0-2:10.ppp

RATE=96Kbit
BURST=9k
LEAF=sfq
RULE=*,192.168.2.0/24


Эти файлы рассчитаны на пропуск примерно 11-12 kbsec. Я не буду
рассказывать про то, как настраивается htb. Про это отлично написано в
статье, указанной выше.

Также я написал небольшой скриптик для того, чтобы создавать такие
файлы для всех интерфейсов ppp с 0 по 254

create.ppp.shapers

#!/bin/bash
COUNTER=1
while [ $COUNTER -lt 254 ]; do
echo Shaper for interface ppp$COUNTER created!
rm -f /etc/sysconfig/htb/ppp$COUNTER
rm -f /etc/sysconfig/htb/ppp$COUNTER-2.root
rm -f /etc/sysconfig/htb/ppp$COUNTER-2:10.ppp
cp /etc/sysconfig/htb/ppp0 /etc/sysconfig/htb/ppp$COUNTER
cp /etc/sysconfig/htb/ppp0-2.root
/etc/sysconfig/htb/ppp$COUNTER-2.root
cp /etc/sysconfig/htb/ppp0-2:10.ppp
/etc/sysconfig/htb/ppp$COUNTER-2:10.ppp
let COUNTER=COUNTER+1
done
/etc/init.d/htb.init restart


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

Для того чтобы правила применялись при подключении клиента, необходимо
создать в директории /etc/ppp/ip-up.d скрипт shaper.start

#!/bin/bash
/etc/init.d/htb.init restart


а в директории /etc/ppp/ip-down.d скрипт shaper.stop

#!/bin/bash
/etc/init.d/htb.init restart


Настройка Iptables.

Вот скрипт, который я использую для настройки файрволла.

main.rules.iptables

#!/bin/sh
iptables --flush
iptables -t nat --flush
clear
######################################################################
#####
#
# 1. Configuration options.
#
#
# 1.1 Internet Configuration.
#
INET_IP="21x.9x.1xx.23"
INET_IFACE="eth0"
#
# 1.2 Local Area Network configuration.
#
#
LAN_IP="192.168.1.1"
LAN_IP_RANGE="192.168.1.0/24"
LAN_IFACE="eth1"
#
# 1.3 VPN Configuration.
#
VPN_IP="192.168.2.1"
VPN_IP_RANGE="192.168.2.0/24"
VPN_IFACE="ppp+"
#
# 1.4 Localhost Configuration.
#
LO_IFACE="lo"
LO_IP="127.0.0.1"
#
# 1.5 IPTables Configuration.
#
IPTABLES="iptables"
######################################################################
#####
#
# 2. Module loading.
#
/sbin/depmod -a
#
# 2.1 Required modules
#
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
#
# 2.2 Non-Required modules
#
#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
#/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
######################################################################
#####
#
# 3. /proc set up.
#
#
# 3.1 Required proc configuration
#
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# 3.2 Non-Required proc configuration
#
#echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
#echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
######################################################################
#####
#
# 4. rules set up.
#
######
# 4.1 Filter table
#
#
# 4.1.1 Set policies
#
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
#
# 4.1.2 Create userspecified chains
#
$IPTABLES -N bad_tcp_packets
#
# Create separate chains for ICMP, TCP and UDP to traverse
#
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
#
# 4.1.3 Create content in userspecified chains
#
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m
state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j
LOG --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
#
# allowed chain
#
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
#
# TCP rules
#
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
#$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
#
# UDP ports
#
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#
# ICMP rules
#
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
#
# 4.1.4 INPUT chain
#
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
#
# Rules for special networks not part of the Internet
#
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
#$IPTABLES -A INPUT -p ALL -i $VPN_IFACE -s $VPN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $VPN_IP -j ACCEPT
#
# Special rule for DHCP requests from LAN, which are not caught properly
# otherwise.
#
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
#
# Rules for incoming packets from the internet.
#
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
#
#SQUID
#
$IPTABLES -A INPUT -s 192.168.1.0/24 -p tcp --dport 3128 -j DROP
#$IPTABLES -A INPUT -p tcp --dport 3128 -s 192.168.2.0/24 -j ACCEPT
#
# Log weird packets that don't match the above.
#
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG
--log-level DEBUG --log-prefix "IPT INPUT packet died: "
#
# 4.1.5 FORWARD chain
#
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
#
# Accept the packets we actually want to forward
#
$IPTABLES -A FORWARD -s 192.168.1.10 -d 192.168.0.1 -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# Log weird packets that don't match the above.
#
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
#
# 4.1.6 OUTPUT chain
#
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#
# Special OUTPUT rules to decide which IP's to allow.
#
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $VPN_IP -j ACCEPT
#
# Log weird packets that don't match the above.
#
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG
--log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
######
# 4.2 nat table
#
#
# 4.2.1 POSTROUTING chain
#
#
# Enable simple IP Forwarding and Network Address Translation
#
$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source
$INET_IP
$IPTABLES -t nat -A PREROUTING -i $VPN_IFACE -d ! $VPN_IP_RANGE -p tcp
--dport 80 -j REDIRECT --to-port 3128


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

/etc/ppp/ip-up.d/iptables

#!/bin/bash
IPT=/usr/sbin/iptables
UIP=$5
$IPT -A FORWARD -s $UIP -j ACCEPT
$IPT -A INPUT -s $UIP -j ACCEPT


/etc/ppp/ip-down.d/iptables

#!/bin/bash
IPT=/usr/sbin/iptables
UIP=$5
$IPT -D FORWARD -s $UIP -j ACCEPT
$IPT -D INPUT -s $UIP -j ACCEPT


Кстати, мысль для создания собственного биллинга: громим правило из
скрипта(который кроном проходит по базе трафика и лимитов) при
привышении лимита, пишем в базу пользователей что этот юзер залочен.
Трафик перестает бежать, пользователь пытается переподключится и
получает ошибку о неправильном логинепароле, т.к. его аккаунт
заблокирован. Я так и сделал, возможно, даже выложу скрипты и
Web-интерфейс как только приведу в божеский вид. Проект типа сделаю.


Настройка прозрачного прокси SQUID.

В принципе эту часть можно и пропустить, если вам не интересно
кеширование и блокирование баннеров, порно, а также статистика по
посещенным адресам. Вот конфиг моего сквида, здесь все просто.

squid.conf

#Порт HTTP-PROXY
http_port 3128
#Порт ICP
icp_port 0
#Не кешировать скрипты
acl QUERY urlpath_regex cgi-bin/?
no_cache deny QUERY
#Кол-во ОЗУ для SQUID
cache_mem 128 MB
#Путь к директории кеша и его размер(1000)
cache_dir ufs /var/cache/squid 10000 16 256
#Путь к лог-файлу доступа к SQUID(Статистика работы через SQUID)
cache_access_log /var/log/squid/access.log
#Путь к лог-файлу SQUID - в нем события запуска SQUID и дочерних программ
cache_log /var/log/squid/cache.log
#Путь к лог-файлу Strore
cache_store_log /var/log/squid/store.log
#Ротация логов
logfile_rotate 10
#Таблица MIME-типов для SQUID
mime_table /etc/squid/mime.conf
#PID-файл SQUID
pid_filename /var/run/squid.pid
#Пользователь для анонимного доступа к FTP
ftp_user anonymous@
#SQUID формирует страницу с папками на FTP - этот параметр - кол-во папок
ftp_list_width 32
#Пассивный режим FTP
ftp_passive on
#Проверка подлинности FTP
ftp_sanitycheck on
#redirect_program /usr/local/rejik3/redirector /usr/local/rejik3/rejik.conf #это для режика
#Списки контроля доступа
acl server src 192.168.1.1/255.255.255.255 #Наш сервер
acl clients src 192.168.2.1-192.168.2.254/255.255.255.255
#Стандартные ACL
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 #Адрес localhost
acl SSL_ports port 443 563 #Порты SSL
acl SMTP port 25 #Для защиты от спама Оказывается SQUID может делать relay
#Служебные ACL
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#Теперь разрешаем доступ тому, кто указан в ACL
http_access allow server
http_access allow clients
http_access deny !Safe_ports
http_access deny SMTP
http_access deny all
#Разрешаем ICP-доступ всем
icp_access deny all
error_directory /etc/squid/errors
#Акселерация(для transparent прокси)
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on


На этом настройка squid завершена, его можно запустить. Если нужна
статистика по посещенным URL, советую использовать SARG (он есть в
дистрибутиве)


Настройка FreeRADIUS (NetUP Radius) + RadiusClient

Решил написать различные варианты настройки с 2-мя серверами radius.
Вы можете выбрать один из них. Хочу напомнить, что NetUP Radius входит
в состав платного биллинга UTM. Поэтому советую использовать его,
только если он куплен у производителя, а не украден в ближайшем
варезнике. Тем более самописных биллинг можно очень легко заточить под
свои задачи и сеть.

Итак, настраиваем radius client. Правим /etc/radiusclient/servers и
/etc/radiusclient/radiusclient.conf

servers

127.0.0.1 oh2iFa


Последовательность символов после ip это секрет для соединения сервера
и клиента. Т.е. на сервере и на клиенте последовательность должна быть
одинаковой.

radiusclient.conf

auth_order radius,local
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /etc/radiusclient/issue
# RADIUS settings
authserver localhost:1812
acctserver localhost:1812
servers /etc/radiusclient/servers
dictionary /etc/radiusclient/dictionary
login_radius /usr/sbin/login.radius
# RADIUS server
seqfile /var/run/radius.seq
mapfile /etc/radiusclient/port-id-map
default_realm
radius_timeout 10
radius_retries 3
login_local /bin/login


Настройка сервера NetUP Radius:

В /netup/utm/utm.cfg добавляем строки:

radius_port=1812
radius_host=127.0.0.1
radius_secret_key=oh2iFa
password_store_method=plain_text


и в автозагрузку добавляем /netup/utm/bin/netup_radius/netup_radiusd
Настройка сервера FreeRADIUS(с поддержкой MySQL).
Конфиг радиус сервера следующий(взято и опробовано из статьи Алекса Б.
Юдкина):

radiusd.conf

prefix = /usr
exec_prefix = ${prefix}
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = ${localstatedir}/log/radius
raddbdir = ${sysconfdir}/raddb
radacctdir = ${logdir}/radacct
# Месторасположение конфигурационных и лог файлов.
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/radiusd
# Каталог с подгружаемыми модулями.
libdir = ${exec_prefix}/lib
# Месторасположение pid-файла. Содержащего идентификатор процесса.
pidfile = ${run_dir}/radiusd.pid
# Имя пользователя и группа от которых запускается FreeRADIUS
user = radius
group = radius
# Максимальное время (в секундах) используемое для обработки запроса.
max_request_time = 30
# Удалить запросы которые обрабатываются более чем max_request_time
delete_blocked_requests = no
# Время ожидания (в секундах) перед очисткой reply запроса отправленного NAS.
cleanup_delay = 5
# Максимальное количество запросов хранимых сервером. Это число должно быть равно
# количеству клиентов помноженному на 256.
# К примеру для четырех клиентов оно будет 1024.
max_requests = 5120
# Закрепить за ip адресом. По умолчанию RADIUS сервер при старте принимает
# запросы со всех ip адресов.
bind_address = 127.0.0.1
# Закрепить за FreeRADIUS конкретный port. Если указан ноль,
# то значение берется из /etc/services
port = 0
# Запретить/разрешить ip адреса в dns имена.
# Включение этой опции может сильно снизить производительность.
hostname_lookups = no
# Создавать/несоздавать отладочные файлы при падении сервера.
allow_core_dumps = no
# Разрешить использование регулярных выражений.
regular_#expression#sis = yes
extended_#expression#sis = yes
# Записывать полный User-Name аттрибут если найден в запросе.
log_stripped_names = no
# Записывать в лог попытки авторизации.
log_auth = yes
# Записывать в логи пароли при авторизации.
# log_auth_badpass - не корректные пароли
# log_auth_goodpass - корректные пароли
log_auth_badpass = yes
log_auth_goodpass = no
# Включить/выключить коллизию пользователей.
usercollide = no
# конвертировать логин и/или пароль до или после авторизации.
lower_user = no
lower_pass = no
# удалить пробелы в логине и/или пароле.
nospace_user = no
nospace_pass = no

# настройки безопасности от возможных DoS аттак.
security {
# Максимальное допустимое количество аттрибутов в RADIUS пакете.
max_attributes = 200
# Задержка (в секундах) перед отправкой Access-Reject пакета.
reject_delay = 1
# Не отвечать на запросы Status-Server
status_server = no
}

# Конфигрурация клиентов RADIUS сервера.
# Описывается в отдельном файле.
$INCLUDE ${confdir}/clients.conf
# Отключить snmp поддержку.
snmp=no

# Настрока пула процессов.
thread pool {
# количество первоначально запущенных процессов.
start_servers = 5
# Максимально возможное количество процессов.
max_servers = 32
# Динамическая регулировка количества процессов.
min_spare_servers = 3
max_spare_servers = 10
# Количество принимаемых запросов процессом. МОжет помочь при утечках памяти в
# RADIUS сервере. Если выставить 300, процессы будут периодически перегружаться
# для уборки мусора.
max_requests_per_server = 0
}

# Секция конфигурации динамических модулей.
modules {
# Модуль PAP авторизации.
# Необходим для обработки запросов с PAP авторизацией.
# encryption_scheme указывает в каком виде хранятся пароли.
# clear - подразумевает в открытом виде.
pap {
encryption_scheme = clear
}
# Модуль CHAP авторизации.
# Необходим для обработки запросов с CHAP авторизацией.
# authtype подразумевает обработку запросов только с аттрибутом
Auth-Type=CHAP
chap {
authtype = CHAP
}
# Модуль преобработки запросов.
# Т.е. перед авторизацией пакета.
preprocess {
# huntgroups - хинт группы см. файл huntgoups.
# hints - хинты.
huntgroups = ${confdir}/huntgroups
hints = ${confdir}/hints
# Обработка Cisco VSA.
with_cisco_vsa_hack = no
}
# Модуль Microsoft CHAP авторизации.
# Поддерживает так же еще и Microsoft CHAP v2
# authtype подразумевает обработку запросов только с аттрибутом
Auth-Type=MS-CHAP
# use_mppe = no указывает на отсутствие компресии VPN туннеля.
mschap {
authtype = MS-CHAP
use_mppe = no
}
# Модуль записей Livingston RADIUS типа.
# usersfile содержит авторизационные записи пользователей.
# Рекомендуется использовать только для тестов и выставления значений по умолчанию.
# acctusersfile содержит пользователей подлежащих учету (аккаунтингу).
# compat - совместимость. При использовании файлов только FreeRADIUS можно отключить.
files {
usersfile = ${confdir}/users
compat = no
}
# Запись детального лога аккаунтинговых пакетов.
detail {
detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
detailperm = 0600
}
# Запись детального лога пакетов авторизации.
detail auth_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d
detailperm = 0600
}
# Запись детального лога reply пакетов.
detail reply_log {
detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d
detailperm = 0600
}
# Создать уникальный ключ для аккаунтинг сессии.
# Многие NAS повторно используют Acct-Session-ID.
# key перечисление аттрибутов для генерации Acct-Session-ID
acct_unique {
key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
}
# Конфигурация авторизации и аккаунтинга посредством СУБД
# содержится в отдельном файле cakesql.conf
$INCLUDE ${confdir}/sql.conf
}

# Авторизация
# сначала идет пакет передается в preprocess
# где может быть модифицирован.
# Далее chap mschap обрабатывают chap и mschap авторизацию.
authorize {
preprocess
chap
mschap
# Не ведем логи пакетов авторизации.
# auth_log
files
mysql
}

# Аунтификация
# Секция содержит модули доступные, для аунтификации.
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
}

# Преобразование аккаунтинговых пакетов.
preacct {
preprocess
}
# Секция ведения аккаунтинга.
accounting {
# Создание Acct-Session-Id если ваш NAS генрит их вполне корректно можете убрать.
acct_unique
# Не создаем detail лог.
detail
# Помещать аккаунтинговые пакеты в СУБД
mysql
}

# Секция ведения логов reply-пакетов.
post-auth {
# Не ведем детальный лог репли пакетов.
reply_log
}


Редактируем sql.conf:

sql mysql {
# Database type
# Current supported are: rlm_sql_mysql, rlm_sql_postgresql,
# rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds
driver = "rlm_sql_mysql"
# Connect info
server = "localhost"
login = "root"
password = "ВАШ ПАРОЛЬ НА MySQL"
# Database table configuration
radius_db = "radius"
}


Файл naslist:

localhost local other


Файл clients:

localhost oh2iFa


В пакете с радиусом идет дамп базы для него:

/usr/share/doc/freeradius/db_mysql.sql


Создаем базу данных radius и применяем sql-файл к ней.

Теперь в базу можно забивать пользователей. Руками или через
самописный Web-интерфейс . Описание полей БД можно найти в
документации по FreeRADIUS.


Настройка NetAcct

Скачать netacct можно здесь:
http://netacct-mysql.gabrovo.com/?section=download

Рекомендую скачать последний stable. Там же есть русская дока по нему.
Для пользователей NetUP UTM рекомендую использовать именно этот
коллектор. Подробно о его конфигурировании можно прочитать в
документации по UTM.

Net-acct необходимо сконфигурировать с опцией "--with-mysql" с
указанием пути к mysql(для UTM собираем без поддержки mysql).
После компиляции и установки программы создаем базу данных для
net-acct с помощью sql-файла netacct.sql, который присутствует в
архиве. Также можно добавить пользователя netacct в MySQL и
предоставить ему права на базу netacct.

Правим конфиг /etc/naccttab

flush 60 #Через какой интервал кидать в базу инфу(сек)
fdelay 60 #Время (cек),через которое, после завершения сетевой активности,
#данные о трафике могут быть записаны в базу.
database mysql
mysql_user netacct #пользователь в MySQL
mysql_password netacct #пароль пользователя для базы
mysql_host localhost #хост
mysql_database netacct #имя базы данных
mysql_table accounting #имя таблицы
notdev eth0 #какой интерфейс не слушать, что бы не было двойного обсчета
device eth1 #интерфейс на котором будет считаться трафик
ignoremask 255.255.255.0 # исключить из подсчета трафик идущий внутри сети
ignorenet 127.0.0.0 255.0.0.0 # игнор для loopback
debug 2 # уровень отладки
debugfile /tmp/nacctd.debug # куда класть лог отладки
headers tr 40 38
headers lo 14 12
headers isdn 4 0
headers eth 14 12
headers plip 14 12
# For dynamic slip/ppp
dynamicip /var/run # где хранятся файлы динам. ip
dynamicnet 202.36.94.0 255.255.255.0
exclude-name-lookup 202.36.94.1 255.255.255.255
exclude-name-lookup 202.36.94.253 255.255.255.255
# For disabling certain fields
# This is commented out by default
# Field 7 is disabled by default so we match the old (pre 0.5) output format
# disable 2 # disable output of protocol
# disable 3 # disable output of source address
# disable 4 # disable output of source port
# disable 5 # disable output of destination address
# disable 6 # disable output of destination port
disable 7 # disable output of packets count
# disable 8 # disable output of byte count
# disable 9 # disable output of device name
# disable 10 # disable output of user name


Запускаем nacctd. В случае проблем проверяем права на базу, и копаем
логи.


Эпилог.

Ну вот и готов наш сервер. Осталось только написать скрипты для
биллинга, и почту, jabber прикрутить.
Пожелания и предложения можете отправлять на mi6@bk.ru. Можете
дополнить мою статью, и я сделаю другую ее версию. Пиво отправляйте
бочками =)

Автор: Морозов Иван(aka Morph), 2005 год.
1303 Прочтений •  [Поднимаем шлюзовой сервер для локальной сети (PPPoE, HTP, Radius, биллинг) (pppoe gate linux radius traffic squid billing dhcp dns iptables htb)] [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 | Донейт | Статистика | Команда | Техническая поддержка