mindstorm 0 Опубликовано: 2009-10-22 09:06:37 Share Опубликовано: 2009-10-22 09:06:37 доброго времени суток! дано: сеть состоит из нескольких общежитий. траф внутри общаг перенаправляется без тарификации, учитывать нужно только траф "в мир". CentOS 5.3, STG 2.405, молодой одмин (я). в общем: правила в цепочке FORWARD: всё, что не является трафом между общагами, перемещается в цепочку billing. нижнее правило в цепочке billing DROP. скрипты OnConnect/OnDisconnect добавляют в billing для каждого конкретного IP два правила, вытаскивающие пакеты из billing в QUEUE. в конфиге СТГ модуль перехвата указал cap_ipq. в логах старгайзера тихо, загрузка проходит без проблем, авторизаторы у клиентов подключаются без проблем, скрипты выполняются, правила в цепочку billing добавляются... инета нет( сразу отвечу на пару ваших вопросов: 1 modprobe ip_queue выполняю в rc.local до запуска старгайзера 2 скрипт фаервола работает однозначно правильно: если без запуска билинга сделать iptables -I FORWARD -j ACCEPT то у всех клиентов будет инет-анлим) такое ощущение, что СТГ не получает пакеты из очереди. замена iptables -I billing -s $ip -j QUEUE iptables -I billing -d $ip -j QUEUE в скрипте OnConnect на ACCEPT (т.е. в обход биллинга) iptables -I billing -s $ip -j ACCEPT iptables -I billing -d $ip -j ACCEPT опять же даёт клиентам инет-анлим (теперь правда не всем, а тем, кто запустил inetaccess) друзья, подскажите, в какую сторону смотреть? стг не берёт пакеты из очереди? нужно дополнительно конфигурировать ОС? чем отличается ip_queue в CentOS 4.2 и 5.3? есть ли отличия в работе cap_ipq в таргайзере 2.405 по сравнению с очень старыми версиями (около 2006 года)? (потому что конфиги и скрипты мне достались в наследство от старого админа) я уже которую ночь ломаю глаза об эти конфиги... а у меня вся общага без инета)) Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2009-10-22 09:56:42 Share Опубліковано: 2009-10-22 09:56:42 2 скрипт фаервола работает однозначно правильно: если без запуска билинга сделать iptables -I FORWARD -j ACCEPT то у всех клиентов будет инет-анлим) И все же покажите скрипт фаерволла, а так же вывод расширенной информации о нем (iptables -L -n -v). Ссылка на сообщение Поделиться на других сайтах
mindstorm 0 Опубліковано: 2009-10-22 11:26:45 Автор Share Опубліковано: 2009-10-22 11:26:45 я сейчас на работе, поэтому никаких iptables -L вам предоставить не могу. скрипт для фаера (не содержит правил по доступу к самому серверу и ещё немного мелочей выкинул): #! /bin/sh LOOPBACK_IPADDR="127.0.0.1" # looopback LOOPBACK_NETMASK="255.0.0.0" # loopback netmask LOOPBACK_NETWORK="127.0.0.0/8" # loopback network EXT_IPADDR="xx.xx.xx.xx" # external IP address EXT_NETMASK="255.255.254.0" # external netmask EXT_NETWORK="xx.xx.xx.xx" # external network EXT_BROADCAST="xx.xx.xx.xx" # external broadcast EXT_GATEWAY="xx.xx.xx.xx" # external gateway address EXT_IFACE="eth1" # external interface LOCAL_IPADDR="192.168.7.1" # local IP address LOCAL_NETMASK="255.255.255.0" # local netmask LOCAL_NETWORK="192.168.7.0/24" # local network LOCAL_BROADCAST="192.168.7.255" # local broadcast address LOCAL_IFACE="eth0" # local interface INT_SERVER_IPADDR="192.168.7.3" # internal network server PRIVATE_LANS1="192.168.0.0/16" COMMUN2_NETWORK="192.168.2.0/24" COMMUN3_NETWORK="192.168.3.0/24" COMMUN4_NETWORK="192.168.4.0/24" COMMUN6_NETWORK="192.168.6.0/24" COMMUN5_NETWORK="192.168.5.0/24" COMMUN6_IPADDR="xx.xx.xx.xx" COMMUN5_IPADDR="xx.xx.xx.xx" COMMUN4_IPADDR="xx.xx.xx.xx" COMMUN3_IPADDR="xx.xx.xx.xx" COMMUN2_IPADDR="xx.xx.xx.xx" COMMUN_GWIPADDR="xx.xx.xx.xx" COMMUN_GWEXTIPADDR="xx.xx.xx.xx" DNS_IPADDR="xx.xx.xx.xx" iptables --flush iptables -X iptables -t nat --flush iptables -t nat -X iptables -t mangle --flush iptables -t mangle -X iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -N billing iptables -F billing echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t mangle -A PREROUTING -i $EXT_IFACE -s $COMMUN2_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -s $COMMUN5_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -s $COMMUN3_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -s $COMMUN4_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -s $COMMUN6_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -s 192.168.254.0/24 -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -d $COMMUN2_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -d $COMMUN5_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -d $COMMUN3_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -d $COMMUN4_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -d $COMMUN6_NETWORK -j ACCEPT iptables -t mangle -A PREROUTING -i $EXT_IFACE -d 192.168.254.0/24 -j ACCEPT # localhost iptables -A INPUT -i "lo" -s $LOOPBACK_IPADDR -j ACCEPT iptables -A INPUT -i "lo" -s $LOCAL_IPADDR -j ACCEPT iptables -A INPUT -i "lo" -s $EXT_IPADDR -j ACCEPT iptables -A INPUT -i "lo" -d $LOCAL_IPADDR -j ACCEPT iptables -A INPUT -s $LOCAL_NETWORK -j ACCEPT # from inet iptables -A INPUT -i $EXT_IFACE -d $EXT_IPADDR -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i $EXT_IFACE -d $EXT_IPADDR -j inet_ext iptables -A INPUT -d $LOCAL_IPADDR -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -d $LOCAL_IPADDR -j inet_ext # other packets iptables -A INPUT -m limit --limit 1/minute --limit-burst 1 -j LOG --log-level DEBUG --log-prefix "INPUT packet drop: " iptables -A INPUT -j DROP # RPC DCOM vul. shild iptables -A FORWARD -s $LOCAL_NETWORK -d 192.168.0.0/16 -p tcp --destination-port 135 -m limit --limit 5/second --limit-burst 5 -j DROP iptables -A FORWARD -s $LOCAL_NETWORK -d 192.168.0.0/16 -p udp --destination-port 135 -m limit --limit 5/second --limit-burst 5 -j DROP iptables -A FORWARD -s $LOCAL_NETWORK -d $COMMUN2_NETWORK -j ACCEPT iptables -A FORWARD -s $LOCAL_NETWORK -d $COMMUN3_NETWORK -j ACCEPT iptables -A FORWARD -s $LOCAL_NETWORK -d $COMMUN4_NETWORK -j ACCEPT iptables -A FORWARD -s $LOCAL_NETWORK -d $COMMUN6_NETWORK -j ACCEPT iptables -A FORWARD -s $LOCAL_NETWORK -d $COMMUN5_NETWORK -j ACCEPT iptables -A FORWARD -s $LOCAL_NETWORK -d 10.6.0.0/24 -j ACCEPT iptables -A FORWARD -s $COMMUN2_NETWORK -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s $COMMUN3_NETWORK -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s $COMMUN4_NETWORK -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s $COMMUN5_NETWORK -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s $COMMUN6_NETWORK -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s 192.168.254.0/24 -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s 10.6.0.0/24 -d $LOCAL_NETWORK -j ACCEPT iptables -A FORWARD -s $LOCAL_NETWORK -d 192.168.254.0/24 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/16 -d $LOCAL_NETWORK -j DROP iptables -A FORWARD -s $LOCAL_NETWORK -d 192.168.0.0/16 -j DROP iptables -A FORWARD -s $LOCAL_NETWORK -j billing iptables -A FORWARD -d $LOCAL_NETWORK -j billing iptables -A billing -j DROP iptables -A FORWARD -i $EXT_IFACE -m state --state NEW,INVALID -j REJECT iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "FORWARD packet drop: " iptables -A FORWARD -j DROP iptables -A OUTPUT -s $LOOPBACK_IPADDR -j ACCEPT iptables -A OUTPUT -s $EXT_IPADDR -j ACCEPT iptables -A OUTPUT -s $LOCAL_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -s $LOCAL_IPADDR -d $LOCAL_NETWORK -j ACCEPT iptables -t nat -A POSTROUTING -s $COMMUN2_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -d $COMMUN2_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -s $COMMUN3_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -d $COMMUN3_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -s $COMMUN4_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -d $COMMUN4_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -s $COMMUN5_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -d $COMMUN5_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -s $COMMUN6_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -d $COMMUN6_IPADDR -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -d 192.168.254.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s xx.xx.xx.xx -j ACCEPT iptables -t nat -A POSTROUTING -d xx.xx.xx.xx -j ACCEPT iptables -t nat -A POSTROUTING -s $LOCAL_NETWORK -d $PRIVATE_LANS1 -j ACCEPT iptables -t nat -A POSTROUTING -s $PRIVATE_LANS1 -d $LOCAL_NETWORK -j ACCEPT iptables -t nat -A POSTROUTING -s $LOCAL_NETWORK -j SNAT --to-source $EXT_IPADDR iptables -t nat -A POSTROUTING -o $EXT_IFACE -s $LOCAL_NETWORK -j SNAT --to-source $EXT_IPADDR iptables -A OUTPUT -d 192.168.6.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.10.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.4.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.3.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.2.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.254.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.0.0/16 -j DROP iptables -A tcp_ext -j DROP # udp external source iptables -A udp_ext -p udp -d $EXT_IPADDR --source-port 53 -j ACCEPT iptables -A udp_ext -p udp -s $LOCAL_NETWORK -j ACCEPT # ALL iptables -A udp_ext -j DROP iptables -A tcp_int -p tcp -s $LOCAL_NETWORK -j ACCEPT # ALL iptables -A tcp_int -p tcp -s $LOCAL_NETWORK -m multiport --destination-port 20,21 -j ACCEPT iptables -A tcp_int -p tcp -d $LOCAL_NETWORK -m multiport --destination-port 20,21 -j ACCEPT iptables -A tcp_int -j DROP iptables -A udp_int -p udp -s $LOCAL_NETWORK -j ACCEPT # ALL iptables -A udp_int -j DROP Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-22 11:51:00 Share Опубліковано: 2009-10-22 11:51:00 ip_queue в CentOS 4.2 и 5.3 ничем существенным не отличается. Я не помню какая была версия в 2006 году, но между ветками 2.0 и 2.4 есть много существенных отличий. По поводу настройки скриптов OnConnect/OnDisconnet (а я уверен что проблема в них) можно почитать тут. Документация, правда, относится к ветке 2.0 но формат вызова скриптов с тех пор не менялся. Ссылка на сообщение Поделиться на других сайтах
mindstorm 0 Опубліковано: 2009-10-22 12:01:29 Автор Share Опубліковано: 2009-10-22 12:01:29 скрипты я не тупо скопировал/вставил. с тех пор добавился ещё один параметр с маской подключенных направлений. скрипты выполняются точно, потому что результат можно сразу же посмотреть в iptables -L billing. да и замена QUEUE на ACCEPT, как я уже писал выше, доказывает, что в цепочку billing попадают пакеты именно из внешки и зависимость от состояния авторизаторя прямая. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2009-10-22 12:06:12 Share Опубліковано: 2009-10-22 12:06:12 Можно посмотреть на скрипты? Ссылка на сообщение Поделиться на других сайтах
mindstorm 0 Опубліковано: 2009-10-22 12:15:50 Автор Share Опубліковано: 2009-10-22 12:15:50 вот как-то так OnConnect #!/bin/bash LOGIN=$1 IP=$2 CASH=$3 ID=$4 DIR=$5 iptables -I billing -s $IP -j QUEUE iptables -I billing -d $IP -j QUEUE OcDisconnect #!/bin/bash LOGIN=$1 IP=$2 iptables -D billing -s $IP -j QUEUE iptables -D billing -d $IP -j QUEUE Ссылка на сообщение Поделиться на других сайтах
rem_lex 2 Опубліковано: 2009-10-22 12:49:01 Share Опубліковано: 2009-10-22 12:49:01 а в логах cap_ipq точно запускается? Ссылка на сообщение Поделиться на других сайтах
mindstorm 0 Опубліковано: 2009-10-22 14:06:47 Автор Share Опубліковано: 2009-10-22 14:06:47 я всё ещё на работе, посмотреть не могу. но точно помню, что в логе были строки со словами Linux Queueing Successfully Ссылка на сообщение Поделиться на других сайтах
mindstorm 0 Опубліковано: 2009-10-22 18:45:31 Автор Share Опубліковано: 2009-10-22 18:45:31 короче всё разрулилось конфиги старгайзера и правила фаера оставил, только переставил сам стг с 405 на 406. и всё) вся общага теперь с инетом. всем спасибо! Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас