Добрый день!
Так сложились обстоятельства, что на третьем курсе обучения в институте мне пришлось переезжать в другой город. В общежитии в котором я поселился предоставлялся интернет с суровыми 1,5 рубля за 1 мегабайт. Конечно же это меня не устраивало, так как в городе уже были доступные безлимитные тарифы. В связи с этим было решено проводить свой интернет, с максимально возможной скоростью, и раздавать его по сети всем таким же жаждущим юзверям безлимитного интернета.
В наличии имелся ноутбук и простенький компьютер (intel 1,5Ghz / 512Mb ОЗУ / 80Gb HDD), который и решено было использовать в качестве сервера. К компьютеру докупилась еще одна сетевая карта. Одна соединялась с модемом. Вторая была пущена в локалку. Из за незнания linux, изначально на него ставилась винда в комплекте с usergate, затем прокси заменил kwf, который жутко подвешивал систему. В конечном итоге, из за постоянных подвисаний и жалоб пользователей, было решено потратить пару выходных для перехода на linux и по рекомендации знакомого на биллинговую систему stargazer. О том как установить и настроить stargazer пожалуйста сюда
Установка производилась на системе ubuntu 9.04, сейчас система также полноценно функционирует на ubuntu 10.04 LTS.
Для правильной работы нам необходимо установить: серверную часть, конфигуратор, авторизатор. Следуя установке по документации на сайте у меня ничего не вышло. Чтение google помогло найти следующие этапы установки системы.
Установку всю производил под root.
1. Необходимо доставить в систему несколько пакетов, делал я это строчкой вида:
apt-get install gcc gccxml expat expat*-dev libexpat make
2. Для сборки системы необходим пакет gmake, здесь используем ln для создания ссылки:
ln —s /usr/bin/make /usr/bin/gmake
3. Создаем в любом удобном для Вас месте папку куда будем закачивать: cd /home/root
mkdir stargazer
cd /stargazer
4. Качаем сам сервер:
wget http://stg.dp.ua/download/server/2,406/stg-2.406.src.tgz
5. Распаковываем
tar —zxvf stg-2.406.src.tgz
6. Собираем сервер:
cd /stg-2,406/projects/stargazer
./build
7. Устанавливаем:
make install
8. Для запуска пользуемся:
stargazer
eth0, 192.168.10.1/24, к нему подключены клиенты
eth1, 192.168.1.2/24, через него происходит выход во внешний мир. На этом же интерфейсе производится маскарадинг
Будем считать, что: направлекние №0 — локальный трафик (DIR0)
направлекние №1 — остальной трафик (DIR2)
Для начала редактируем файлик /etc/stargazer/rules:
# Самые скоростные ресурсы распологаем в самом верху наших правил
# Это позволит уменьшить нагрузку на процессор
#ПРОТОКОЛ АДРЕС НАПРАВЛЕНИЕ
# Трафик на роутер ALL 192.168.1.2 DIR0
ALL 192.168.10.1 DIR0
# Пинги не считаем ICMP 0.0.0.0/0 NULL
# Весь остальной траффик, те всё что не попало под предыдущие правила ALL 0.0.0.0/0 DIR2
Сохраняем закрываем. Далее настраиваем фаервол.
Назовем этот фвйл fw, сделаем его исполняемым и разместим в директории /etc/stargazer
#!/bin/bash
#Мой комп, комп второго админа
albert=192.168.10.105
zona7o=192.168.10.77
#Адреса роутера
server0=192.168.10.1
server1=192.168.1.2
# Интерфейс смотрящий на клиентов
iface_cli=eth1
# Интерфейс смотрящий во внешний мир
iface_world=eth0
#Порты, на которых работает конфигуратор и авторизатор
conf_port=5555
user_port1=5555
# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых — запрещен
# Если мы подстрахуемся, хуже не бкдет
echo «1» > /proc/sys/net/ipv4/ip_forward
# Очищаем правила файрвола, у меня кроме этой системы ничего больше сервер пока не делает поэтому следующие вещи делаем без проблем.
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# Разрешаем всё на локальном интерфейсе
iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT
# Разрешить серверу общаться со внешним миром
iptables -t filter -A INPUT -i $iface_world -j ACCEPT
iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT
# DNS.
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
# SSH
iptables -t filter -A INPUT -p tcp -s $office -d $server0 --dport 23688 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $office -s $server0 --sport 23688 -j ACCEPT
iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 23688 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 23688 -j ACCEPT
# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s 192.168.10.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.10.0/24 -s $server0 --sport $conf_port -j ACCEPT
# UDP stargazer InetAccess
iptables -t filter -A INPUT -p udp -s 192.168.10.0/24 --sport $user_port1 -d $server0 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.10.0/24 --dport $user_port1 -s $server0 -j ACCEPT
#Маскарад
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE
Далее по очереди правим файлы лежащие тут /etc/stargazer/
OnConnect
#!/bin/bash
ip=$2
iptables -t filter -A INPUT -s $ip -j ACCEPT
iptables -t filter -A FORWARD -s $ip -j ACCEPT
iptables -t filter -A FORWARD -d $ip -j ACCEPT
iptables -t filter -A OUTPUT -d $ip -j ACCEPT
#Также здесь разрешаем пинги, то есть после подключения к серверу
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
OnDisconnect
#!/bin/bash
ip=$2
iptables -t filter -D INPUT -s $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D INPUT -s $ip -j ACCEPT
done
##################################
iptables -t filter -D FORWARD -s $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D FORWARD -s $ip -j ACCEPT
done
##################################
iptables -t filter -D FORWARD -d $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D FORWARD -d $ip -j ACCEPT
done
##################################
iptables -t filter -D OUTPUT -d $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D OUTPUT -d $ip -j ACCEPT
done
stargazer.conf
# Файл настроек сервера stargazer
# Имя файла в котором определяются правила подсчета трафика
rules=/etc/stargazer/rules
# Рабочая директория сервере, тут содержатся данный о тарифах, изерах и админах
WorkDir=/var/stargazer/
# Имя лог файла куда пушутся события
LogFile=/var/log/stargazer.log
# Если юзер в течение UserTimeout секунд не подает признаков жизни, сервер отключит его
# (естественно, если клиент был подключен до этого)
UserTimeout=60
# Время через которое сервер повторяет проверку того, жив ли клиент. Также это время
# через которое у клиента обновляется его статитстика. UserDelay должно быть в
# 3...10 раз меньше чем UserTimeout
UserDelay=10
# Эта опция действительна только для сервера работающего со вторым типом тарифных планов
# Она определяет что будет передаватся программе InetAccess от сервера
# FreeMb = 0 — кол-во бесплатных мегабайт в пресчете на цену нулевого направления
# FreeMb = 1 — кол-во бесплатных мегабайт в пресчете на цену первого направления
# FreeMb = 2 — кол-во бесплатных мегабайт в пресчете на цену второго направления
#…
# FreeMb = 9 — кол-во бесплатных мегабайт в пресчете на цену девятого направления
# FreeMb = cash — кол-во денег на которые юзер может бесплатно качать
# FreeMb = none — ничего не передавать
FreeMb=2
# Время через которое пишется детальная статистика
# возможные значения 3, 2, 1, 1/2, 1/4, 1/6
# 3 — раз в три часа, 1 — раз в чаc, 1/2 — раз в пол часа, 1/6 — раз в 10 мин
StatTime=1/6
# Номер порта по которому сервер слушает обращения конфигуратора
adminPort=5555
# Номер порта по которому сервер ожидает обращения авторизатора
userPort=5555
# Максимальное кол-во юзеров. Эта величина влияет на кол-во памяти необходимой серверу
MaxUsers=50
# Опция определяющая менять ли местами upload и download
TurnTraff=no
# День снятия абонплаты
DayFee=1
# День, в который происходит обнуление счетчиков трафика, и
# перехода на новый тариф
DayResetTraff=1
# Имена направлений. Пустые имена не будут отображаться
# ни в авторизаторе, ни в конфигураторе
DirName0=Локаль
DirName1=Город
DirName2=Мир
DirName3=
DirName4=
DirName5=
DirName6=
DirName7=
DirName8=
DirName9=
# «Разамазанное» снятие абонплаты. Каждый день
# 1/30 (1/31, 12/28) часть абонплаты
SpreadFee=no
# Владелец, группа и права доступа на файлы
# статистики у пользователей
StatOwner=root
StatGroup=stg_stat
StatMode=640
# Владелец, группа и права доступа на файлы
# конфигурации у пользователей
ConfOwner=root
ConfGroup=root
ConfMode=640
# Владелец, группа и права доступа на логи
# у пользователей
UserLogOwner=root
UserLogGroup=root
UserLogMode=640
# Разрешение на доступ конфигуратором
AdminOrder=allow,deny
AdminAllowFrom=192.168.10.105 192.168.10.77 192.168.10.1
AdminDenyFrom=all
# Разрешение на доступ авторизатором
UserOrder=allow,deny
UserAllowFrom=192.168.10.0/24
UserDenyFrom=all
# Запрет на слишком частые обращения на порт авторизатора
FloodControl=yes
Теперь добавляем в /etc/rc.local
/etc/stargazer/fw
stargazer
Теперь остается конфигуратором добавить тарифы, пользователей. У конфигуратора есть интерфейс там все просто не думаю что нужно рассказывать как это делать а то статья будет просто огромной.
Так выглядит окно конфигуратора:

Окно авторизатора:

Конфигуратор существует под windows и linux, так же как и авторизатор.
Вот впринципе и все что я хотел Вам рассказать.
Так сложились обстоятельства, что на третьем курсе обучения в институте мне пришлось переезжать в другой город. В общежитии в котором я поселился предоставлялся интернет с суровыми 1,5 рубля за 1 мегабайт. Конечно же это меня не устраивало, так как в городе уже были доступные безлимитные тарифы. В связи с этим было решено проводить свой интернет, с максимально возможной скоростью, и раздавать его по сети всем таким же жаждущим юзверям безлимитного интернета.
В наличии имелся ноутбук и простенький компьютер (intel 1,5Ghz / 512Mb ОЗУ / 80Gb HDD), который и решено было использовать в качестве сервера. К компьютеру докупилась еще одна сетевая карта. Одна соединялась с модемом. Вторая была пущена в локалку. Из за незнания linux, изначально на него ставилась винда в комплекте с usergate, затем прокси заменил kwf, который жутко подвешивал систему. В конечном итоге, из за постоянных подвисаний и жалоб пользователей, было решено потратить пару выходных для перехода на linux и по рекомендации знакомого на биллинговую систему stargazer. О том как установить и настроить stargazer пожалуйста сюда
Установка
Установка производилась на системе ubuntu 9.04, сейчас система также полноценно функционирует на ubuntu 10.04 LTS.
Для правильной работы нам необходимо установить: серверную часть, конфигуратор, авторизатор. Следуя установке по документации на сайте у меня ничего не вышло. Чтение google помогло найти следующие этапы установки системы.
Установку всю производил под root.
1. Необходимо доставить в систему несколько пакетов, делал я это строчкой вида:
apt-get install gcc gccxml expat expat*-dev libexpat make
2. Для сборки системы необходим пакет gmake, здесь используем ln для создания ссылки:
ln —s /usr/bin/make /usr/bin/gmake
3. Создаем в любом удобном для Вас месте папку куда будем закачивать: cd /home/root
mkdir stargazer
cd /stargazer
4. Качаем сам сервер:
wget http://stg.dp.ua/download/server/2,406/stg-2.406.src.tgz
5. Распаковываем
tar —zxvf stg-2.406.src.tgz
6. Собираем сервер:
cd /stg-2,406/projects/stargazer
./build
7. Устанавливаем:
make install
8. Для запуска пользуемся:
stargazer
Конфигурируем
eth0, 192.168.10.1/24, к нему подключены клиенты
eth1, 192.168.1.2/24, через него происходит выход во внешний мир. На этом же интерфейсе производится маскарадинг
Будем считать, что: направлекние №0 — локальный трафик (DIR0)
направлекние №1 — остальной трафик (DIR2)
Для начала редактируем файлик /etc/stargazer/rules:
# Самые скоростные ресурсы распологаем в самом верху наших правил
# Это позволит уменьшить нагрузку на процессор
#ПРОТОКОЛ АДРЕС НАПРАВЛЕНИЕ
# Трафик на роутер ALL 192.168.1.2 DIR0
ALL 192.168.10.1 DIR0
# Пинги не считаем ICMP 0.0.0.0/0 NULL
# Весь остальной траффик, те всё что не попало под предыдущие правила ALL 0.0.0.0/0 DIR2
Сохраняем закрываем. Далее настраиваем фаервол.
Назовем этот фвйл fw, сделаем его исполняемым и разместим в директории /etc/stargazer
#!/bin/bash
#Мой комп, комп второго админа
albert=192.168.10.105
zona7o=192.168.10.77
#Адреса роутера
server0=192.168.10.1
server1=192.168.1.2
# Интерфейс смотрящий на клиентов
iface_cli=eth1
# Интерфейс смотрящий во внешний мир
iface_world=eth0
#Порты, на которых работает конфигуратор и авторизатор
conf_port=5555
user_port1=5555
# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых — запрещен
# Если мы подстрахуемся, хуже не бкдет
echo «1» > /proc/sys/net/ipv4/ip_forward
# Очищаем правила файрвола, у меня кроме этой системы ничего больше сервер пока не делает поэтому следующие вещи делаем без проблем.
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# Разрешаем всё на локальном интерфейсе
iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT
# Разрешить серверу общаться со внешним миром
iptables -t filter -A INPUT -i $iface_world -j ACCEPT
iptables -t filter -A OUTPUT -o $iface_world -j ACCEPT
# DNS.
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
# SSH
iptables -t filter -A INPUT -p tcp -s $office -d $server0 --dport 23688 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $office -s $server0 --sport 23688 -j ACCEPT
iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 23688 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 23688 -j ACCEPT
# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s 192.168.10.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.10.0/24 -s $server0 --sport $conf_port -j ACCEPT
# UDP stargazer InetAccess
iptables -t filter -A INPUT -p udp -s 192.168.10.0/24 --sport $user_port1 -d $server0 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.10.0/24 --dport $user_port1 -s $server0 -j ACCEPT
#Маскарад
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE
Далее по очереди правим файлы лежащие тут /etc/stargazer/
OnConnect
#!/bin/bash
ip=$2
iptables -t filter -A INPUT -s $ip -j ACCEPT
iptables -t filter -A FORWARD -s $ip -j ACCEPT
iptables -t filter -A FORWARD -d $ip -j ACCEPT
iptables -t filter -A OUTPUT -d $ip -j ACCEPT
#Также здесь разрешаем пинги, то есть после подключения к серверу
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
OnDisconnect
#!/bin/bash
ip=$2
iptables -t filter -D INPUT -s $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D INPUT -s $ip -j ACCEPT
done
##################################
iptables -t filter -D FORWARD -s $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D FORWARD -s $ip -j ACCEPT
done
##################################
iptables -t filter -D FORWARD -d $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D FORWARD -d $ip -j ACCEPT
done
##################################
iptables -t filter -D OUTPUT -d $ip -j ACCEPT
while [ $? -eq 0 ]
do
iptables -t filter -D OUTPUT -d $ip -j ACCEPT
done
stargazer.conf
# Файл настроек сервера stargazer
# Имя файла в котором определяются правила подсчета трафика
rules=/etc/stargazer/rules
# Рабочая директория сервере, тут содержатся данный о тарифах, изерах и админах
WorkDir=/var/stargazer/
# Имя лог файла куда пушутся события
LogFile=/var/log/stargazer.log
# Если юзер в течение UserTimeout секунд не подает признаков жизни, сервер отключит его
# (естественно, если клиент был подключен до этого)
UserTimeout=60
# Время через которое сервер повторяет проверку того, жив ли клиент. Также это время
# через которое у клиента обновляется его статитстика. UserDelay должно быть в
# 3...10 раз меньше чем UserTimeout
UserDelay=10
# Эта опция действительна только для сервера работающего со вторым типом тарифных планов
# Она определяет что будет передаватся программе InetAccess от сервера
# FreeMb = 0 — кол-во бесплатных мегабайт в пресчете на цену нулевого направления
# FreeMb = 1 — кол-во бесплатных мегабайт в пресчете на цену первого направления
# FreeMb = 2 — кол-во бесплатных мегабайт в пресчете на цену второго направления
#…
# FreeMb = 9 — кол-во бесплатных мегабайт в пресчете на цену девятого направления
# FreeMb = cash — кол-во денег на которые юзер может бесплатно качать
# FreeMb = none — ничего не передавать
FreeMb=2
# Время через которое пишется детальная статистика
# возможные значения 3, 2, 1, 1/2, 1/4, 1/6
# 3 — раз в три часа, 1 — раз в чаc, 1/2 — раз в пол часа, 1/6 — раз в 10 мин
StatTime=1/6
# Номер порта по которому сервер слушает обращения конфигуратора
adminPort=5555
# Номер порта по которому сервер ожидает обращения авторизатора
userPort=5555
# Максимальное кол-во юзеров. Эта величина влияет на кол-во памяти необходимой серверу
MaxUsers=50
# Опция определяющая менять ли местами upload и download
TurnTraff=no
# День снятия абонплаты
DayFee=1
# День, в который происходит обнуление счетчиков трафика, и
# перехода на новый тариф
DayResetTraff=1
# Имена направлений. Пустые имена не будут отображаться
# ни в авторизаторе, ни в конфигураторе
DirName0=Локаль
DirName1=Город
DirName2=Мир
DirName3=
DirName4=
DirName5=
DirName6=
DirName7=
DirName8=
DirName9=
# «Разамазанное» снятие абонплаты. Каждый день
# 1/30 (1/31, 12/28) часть абонплаты
SpreadFee=no
# Владелец, группа и права доступа на файлы
# статистики у пользователей
StatOwner=root
StatGroup=stg_stat
StatMode=640
# Владелец, группа и права доступа на файлы
# конфигурации у пользователей
ConfOwner=root
ConfGroup=root
ConfMode=640
# Владелец, группа и права доступа на логи
# у пользователей
UserLogOwner=root
UserLogGroup=root
UserLogMode=640
# Разрешение на доступ конфигуратором
AdminOrder=allow,deny
AdminAllowFrom=192.168.10.105 192.168.10.77 192.168.10.1
AdminDenyFrom=all
# Разрешение на доступ авторизатором
UserOrder=allow,deny
UserAllowFrom=192.168.10.0/24
UserDenyFrom=all
# Запрет на слишком частые обращения на порт авторизатора
FloodControl=yes
Теперь добавляем в /etc/rc.local
/etc/stargazer/fw
stargazer
Теперь остается конфигуратором добавить тарифы, пользователей. У конфигуратора есть интерфейс там все просто не думаю что нужно рассказывать как это делать а то статья будет просто огромной.
Так выглядит окно конфигуратора:

Окно авторизатора:

Конфигуратор существует под windows и linux, так же как и авторизатор.
Вот впринципе и все что я хотел Вам рассказать.