1. скачал wget
http://stargazer.dp.ua/download/server/2.4...404.9.7.src.tgz2. открыл там внутрях файлик stargazer_help_v2.11.pdf (активно почитал ...)
3. сделал # sudo su -
4. root@zzz:/# apt-get install mysqlclient* (вдруг муСКЛ крутить надо будет)
5. root@zzz:/# apt-get install libexpat* (... написано что без нее никак )) ... )
6. проверил наличие libexpat (читаем pdf)
7. сделал root@zzz:/# ln -s /usr/bin/make /usr/bin/gmake
8. root@zzz:/# apt-get install g++ (тоже нужная весТч ... без нее build - не стартанет ... )
9. root@zzz:/# cd /путь_к_корню_старгейзера//projects/stargazer/
Ошибка в новых заголовочных файлах.
Уже пофикшено. Добавь #include <netinet/in.h> в /projects/stargazer/plugins/capture/ipq_linux/ipq_cap.cpp перед #include <linux/netfilter.h>
Это уже на форуме было. Тоже фиксится просто - добавлением строки #include <cstring> в начало файлов include/user_ips.h и include/admin_conf.h
10. root@zzz:/# ./build
11. root@zzz:/# make install
ПРИМЕР НАСТРОЙКИ СЕРВЕРА ПОД LINUX
Если у вас вызывает сложности понимание iptables, то по ссылке, указанной ниже, находится прекрасная документация по iptables на русском языке:
iptables tutorial (opennet.ru)
iptables tutorial (gazette.lrn.ru)
iptables tutorial в архиве bz2
Дано:
Имеется пользовательская сеть, один сегмент, 192.168.1.0/24. Роутер с установленным stargazer-ом. Сервер имеет связь с внешним миром и сервером, на котором находится музыкальный и видео архивы.
Серврер имеет три сетевых интерфейса:
eth0, 192.168.1.1/24, к нему подключены клиенты
eth1, 10.3.2.111/24, через него происходит выход во внешний мир. На этом же интерфейсе производится маскарадинг
eth2, 172.18.1.1/24, к нему подключен архив с музыкой и фильмами
Ниже дана схема этого сервера:
Городские ресурсы состоят из 4-х подсетей:
195.248.160.0/19
212.86.224.0/19
213.227.192.0/18
217.24.160.0/20
Требуется:
Необходимо настроить сервер таким образом:
Организовать подсчет локального трафика
Организовать подсчет городского трафика
Организовать подсчет мирового(прочего) трафика
Настроить доступ пользователям так, что бы они не авторизовавшись не могли попасть в интернет, внутренние ресурсы, также, должны быть недоступны
Пользователи всегда, независимо от того, авторизованы они или нет, могли пинговать сервер (для нужд диагностики)
С клиентской машины с адресом 192.168.1.18 настроить доступ по ssh на сервер при отсутствии авторизатции. Это домашняя машина админа и ему бывает нужно что-то сделать на сервере не имея авторизации
В офисе расположена машина с адресом 192.168.1.2, настроить для нее доступ по ssh на сервер при отсутствии авторизатции.
Доступ конфигуратором сделать возможным только с хостов 192.168.1.2 и 192.168.1.18
Решение:
Первое что нужно сделать, это определится с правилами подсчета трафика.
Будем считать, что:
направлекние №0 - локальный трафик (DIR0)
направлекние №1 - городской трафик (DIR1)
направлекние №2 - мировой трафик (DIR2)
rules
Файл /etc/stargazer/rules:
# Самые скоростные ресурсы распологаем в самом верху наших правил
# Это позволит уменьшить нагрузку на процессор
# Самыми быстрыми ресурсами, в данном случае, будут архивы видео и музыки
#ПРОТОКОЛ
АДРЕС
НАПРАВЛЕНИЕ
# Трафик на архив
ALL
172.18.1.0/24
DIR0
# Трафик на роутер
ALL
192.168.1.1
DIR0
ALL
10.3.2.111
DIR0
ALL
172.18.1.1
DIR0
# Город
ALL
195.248.160.0/19
DIR1
ALL
212.86.224.0/19
DIR1
ALL
213.227.192.0/18
DIR1
ALL
217.24.160.0/20
DIR1
# Пинги не считаем
ICMP
0.0.0.0/0
NULL
# Мир, те всё что не попало под предыдущие правила
ALL
0.0.0.0/0
DIR3
Настройка фаервола
Назовем этот фвйл fw, сделаем его исполняемым и разместим в директории /etc/stargazer
#!/bin/bash
#Машина в офисе
office=192.168.1.2
#Машина администратора
admin=192.168.1.18
#Адреса роутера
server0=192.168.1.1
server1=10.3.2.111
server2=172.18.1.1
# Адрес файлового архива с mp3 и video
video_serv=172.18.1.2
# Интерфейс смотрящий на клиентов
iface_cli=eth0
# Интерфейс смотрящий во внешний мир
iface_world=eth1
# Интерфейс смотрящий на архив
iface_int=eth2
#Порты, на которых работает конфигуратор и авторизатор
conf_port=4444
user_port1=4444
# Разрешаем форвардинг пакетов между интерфейсами
# Эта штука необязательна, просто в некоторых дистрибутивах
# по умолчанию форвардинг разрешен, а в некоторых - запрещен
# Если мы подстрахуемся, хуже не бкдет
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 -p icmp -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
# Разрешаем всё на локальном интерфейсе
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
# Разрешить видео-серверу обращаться во внешним миром и роутером
iptables -t filter -A INPUT -s $video_serv -j ACCEPT
iptables -t filter -A FORWARD -s $video_serv -j ACCEPT
iptables -t filter -A FORWARD -d $video_serv -j ACCEPT
iptables -t filter -A OUTPUT -d $video_serv -j ACCEPT
# DNS. Замечу, ДНС работает и по TCP и по UDP
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 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $office -s $server0 --sport 22 -j ACCEPT
iptables -t filter -A INPUT -p tcp -s $admin -d $server0 --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server0 --sport 22 -j ACCEPT
# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s 192.168.1.0/24 -d $server0 --dport $conf_port -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.1.0/24 -s $server0 --sport $conf_port -j ACCEPT
# UDP stargazer InetAccess
iptables -t filter -A INPUT -p udp -s 192.168.1.0/24 --sport $user_port1 -d $server0 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.1.0/24 --dport $user_port1 -s $server0 -j ACCEPT
#Маскарад
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE
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
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=4444
# Номер порта по которому сервер ожидает обращения авторизатора
userPort=4444
# Максимальное кол-во юзеров. Эта величина влияет на кол-во памяти необходимой серверу
MaxUsers=100
# Опция определяющая менять ли местами 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.1.1 192.168.1.2 192.168.1.81
AdminDenyFrom=all
# Разрешение на доступ авторизатором
UserOrder=allow,deny
UserAllowFrom=192.168.1.0/24
UserDenyFrom=all
# Запрет на слишком частые обращения на порт авторизатора
FloodControl=yes
Теперь остается поместить в /etc/rc.d/rc.local две строки (порядок строк важен!):
/etc/stargazer/fw
/sbin/stargazer
и можно считать, что настройка закончена.
Сервер стоит и работает конекчусь лажу но инет не получаю(у мну траблы с настройкой) - теперь помогите мне ) в чом я ощибся? интерфейс на интернет уер0 (192.168.1.2) на сеть уер1 (192.168.0.1)
Пользователь решил продолжить мысль 25 Апреля 2009, 01:35:05:
Человек, ну зачем ты его с нуля собираешь? Ведь уже готовый выкладывали, собранный и рабочий. Не трать время попусту.
с настройками? где?
Пользователь решил продолжить мысль 25 Апреля 2009, 10:05:28:
Нашол решение !
Настроим простейший шлюз для раздачи интернета для дома или малого офиса (SOHO). Допустим, что внутрь сети смотрит интерфейс eth1 с ip адресом 192.168.1.1, а в интернет интерфейс eth0:
eth1 eth0
Внутрнняя сеть --------------------[ маршрутизатор ]---------------------- Internet
192.168.1.0/24 192.168.1.1 внешний ip-адрес 0.0.0.0/0
это в файле fwРазрешим пропуск трафика через шлюз (в противном случае трафик не проходит цепочку FORWARDING):
sysctl -w net.ipv4.ip_forward="1"
Добавим правило, для маскировки ip в цепочку POSTROUTING таблицы nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Теперь клиенты внутренней сети могут получить возможность доступа в интернет установив в качестве шлюза адрес 192.168.1.1 .
Теперь попробуем нечто более интересное: запретим возможность установки новых соединений с маршрутизатором из интернета, а также форвардинг из сетей отличных от 192.168.1.0/24 .
Установим политики по умолчанию для цепочек в DROP, запретив все соединения кроме тех, которые будут разрешены:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
скрипт OnConnect вместо ip ставим переменнуюРазрешим входящие соединения на маршрутизатор с внутренней сети (для управления)
iptables -A INPUT -i eth1 --source 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT
Разрешим маршрутизатору отвечать компьютерам во внутренней сети:
iptables -A OUTPUT -o eth1 --destination 192.168.1.0/24 --match state --state NEW,ESTABLISHED -j ACCEPT
Разрешим перенаправление пакетов из внутренней сети во внешнюю для установки соединений и установленных соединений:
iptables -A FORWARD -i eth1 --source 192.168.1.0/24 --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED -j ACCEPT
Разрешим перенаправление пакетов из интернета во внутреннюю сеть только для установленных соединений:
iptables -A FORWARD -i eth0 --destination 192.168.1.0/24 --match state --state ESTABLISHED -j ACCEPT