снова HI ALL!
начну сначала:
стоит Фришка 4.2, две сетевухи 192.168.1.1 и 192.168.2.1 они - шлюзы в интернет для соответствующих локалок, также модем на СОМ1 и выделенка до провайдерапод Фришкой работает Сквид (для http, ftp) и настроен natd и ipfw дабы клиенты сидящие в локалке таскали почту с помощью Outlook/Netcsape/TheBat со своих машин с Win95/98/2000 со своих почтовых ящиков на chat.ru/mail.ru/yandex.ru/yahoo.com. и т.п.
Ситуация такая:
при помощи ipfw хочу пропускать наружу и впускать внутрь только почту с других ящиков (chat.ru/mail.ru), а HTTP и FTP исключительно через Сквидапример персонально для клиента сидящего на 192.168.2.2:
нижеследующие настройки позволяют клиенту получать/отсылать почту с "чужих" почтовых серверов типа chat.ru, но для доступа в интернет в настройках его браузера должен быть прописан прокси 192.168.2.1:80 (Сквид):allow tcp from 192.168.2.2 to any 25,53,80,110 via ed0
allow ip from any to 192.168.2.2 via ed0
allow ip from any to 192.168.2.2 via tun0
allow ip from 192.168.2.2 to any via tun0
allow ip from xxx.xxx.xxx.230 to any via tun0
allow ip from any to xxx.xxx.xxx.230 via tun0
divert 8668 ip from any to any via tun0где: 192.168.2.2 - ip клиента в локальной сети подключенной к сетевухе ed0 (192.168.2.1)
tun0 - модем на выделенке (запущен ppp -background)
xxx.xxx.xxx.230 - тут мой внешний статический ip даденый провайдеромВОПРОС:
нафига прописывать:
allow ip from any to 192.168.2.2 via tun0
allow ip from 192.168.2.2 to any via tun0
(без этого не работает, natd ругается типа
can`t send paсket back Permission denyed)
ведь natd должен подхватить пакет от 192.168.2.2 и в отправителе прописать xxx.xxx.xxx.230, и тогда пакет должен попасть под правила
allow ip from xxx.xxx.xxx.230 to any via tun0
allow ip from any to xxx.xxx.xxx.230 via tun0
разве не так? Может кто-нибудь объяснить каким путем проходят пакеты их локалки в Интернет через natd и ipfw? И что с ним там происходит?ВОПРОС:
почему надо прописывать
allow ip from any to 192.168.2.2 via ed0
чтобы принять ответ от почтового сервера
а конструкция:
allow tcp from any 25,53,80,110 to 192.168.2.2 via ed0
не работает - запросы по 25 и 110 порту уходять а назад не возвращаются, точнее возвращаются но видимо по другим портам или протоколам (не tcp)
А ПО КАКИМ ИМЕННО? подскажите...ВОПРОС: расскажите плз "по русски" как выцеплять статистику из ipfw. Мне надо ослеживать объем почты скачаной клиентом.
Кроме как ipfw show ничего другого нет? Типа: может ipfw умеет логи писать?ВОПРОС: Для Сквида есть примочка squidclients - она судя по описанию должна суммировать информацию из логов Сквида в удобоваримый вид: КТО ЗНАЕТ КАК ЕЙ ПОЛЬЗОВАТЬСЯ?
с наилучшими...
Сергей
ПИПЛЫ! ПОЖАЛУЙСТА НЕ ИГНОРИРУЙТЕ МЕНЯ!
КОНЕЦ МЕСЯЦА НА НОСУ- МНЕ СТАТИСТИКУ ПРЕДОСТАВИТЬ НАДО! ПОМОГИТЕ!
ИМХО вопросы то простые!с надеждой на ответы...
Сергей
1) по ipfw .......
Слишком много уж ты навернул сдесь ....
natd -- тебе вобше не нужен если твоя машина стоит как шлюз (только ресерсы отжирает)
а глянуть ipfw-шные счетчики можно так
$ipfw -a list
2) по squid ....
на любом поисковом сайте набери squid + статистика ...
выдаст более десятка программ
ЗЫ: а если интересно для чего нужен natd вот http://www.lexa.ru:8101/lexa/transparent-proxy.html это одно из применений
приветыipfw может писать логи , только как ты их будешь обрабатывать я не знаю :)
ipfw add accept log ip from any to any -это все что проходитстатистику сквида снимай к примеру sarg'ом
он предоставит все это ввиде страницы по адресам и кто чего забрал и тдУдачи!!!
СПАСИБО за ipfw -a list, ipfw log и SARG - попробую погонять1)но, тем неменее: по каким портам возвращается почта запрошенная клиентом: я задам на этот порт/порты/протокол в отдельное правило ipfw и по статистике смогу отслеживать количество скаченной клиентом почты
2)и всетаки кто нибудь может внятно обяснить алгоритм прохождения пакета от локального клиента через natd и ipfw наружу и обратно?
с неуменьшающейся надеждой на ответы...
Сергей
natd работает так:
Сетевой пакет от твоего клиента с кривым адресом (напр, 192.168.1.200) приходит с произвольного порта > 1024 клиента на твой сервер через внутреннюю сетевуху с намерением пройти, к примеру, на 80 порт (HTTP) сайта www.playboy.com. Твой сервер, понимающий, что он - гейт, пытается отправить его через tun0 или что там у тебя, наружу; однако с таким исходящим адресом делать ему там нечего, поэтому весь исходящий траффик правилом divert all ... on tun0 при попытке выйти наружу заворачивается на NAT - демон, который в качестве исходящего адреса вписывает реальный адрес твоего сервера, делая пометку о изуродованном пакете в своей внутренней таблице. Пакет опять вбрасывается в ipfw в правило, стоящее следующим за divert. У natd есть куча полезных фич - use_sockets, same_ports, alias_address и т д - читай мануал. Соотвественно, входящий снаружи траффик тоже заворачивается на нат, тот проверяет по своей таблице, кому адресован пакет, и выпускает его в локалку на нужный адрес.
Соотвественно, тебе надо иметь что-то типа:
ipfw add divert all from any to any via tun0
ipfw add 100 allow tcp from 192.168.1.200 to any 20,21,25,53,80
ipfw add 110 allow tcp from to any 20,21,25,53,80
to 192.168.1.200
... 100, 110 - размножить на всех клиентов
... тут - правила для входяще - исходящего траффика сервера; об ICQ, IRC и прочих passive ftp тоже придется позаботиться;дальше пишешь скрипт, который по cron делает ipfw show 100| awk '{print $3}' > klient1.in.log - если по тупому, потом ipfw zero...
В смысле - 110 правило-
ipfw add 110 allow tcp from any 20,21,25,53,80 to 192.168.1.200
Спасибо за ответы (Евгений в т.ч.)!щас короче у меня так настроено:
ppp запускается с параметром -nat,а natd ваще не запускаю!но для того чтобы позволить ppp "дивертить" пакеты пришлось добавить правило:
allow ip from 192.168.2.2 to any via tun0
allow ip from any to 192.168.2.2 via tun0
иначе nat ругается что не может вернуть пакеты
(хм.. если я natd ваще не запускаю, то кто тогда ругается? может ppp?)теперь выяснил почему почта не пахала:
надо писать
allow tcp from 192.168.2.2 to any 25,53,110 via ed0
allow udp from 192.168.2.2 to any 25,53,110 via ed0
allow tcp from any 25,53,110 to 192.168 2.2 via ed0
allow udp from any 25,53,110 to 192.168 2.2 via ed0то есть надо разрешать не только tcp но и udp пакеты
смотрел статистику: при прокачке почты несколько пакетов ходят через utp - че это за пакеты?теперь опять по статистике:
хотел смотреть стистику по разным портам, в итоге завел отдельное правило для каждого порта/клиента типа:
allow tcp from 192.168.2.2 to any 25 via ed0
allow tcp from 192.168.2.2 to any 53 via ed0
allow tcp from 192.168.2.2 to any 110 via ed0
ну и т.д.ВОПРОС: стОит ли извращаться таким образом или проще/лучше/надежнее задать общие правила для всех портов/подсетей типа
allow tcp from 192.168.2.0/24 to any 25,53,110 via ed0
а стистику по портам и клиентам выцеплять при помощи какой-нибудь резидентной программки-демона?
мне кажется, такие утилитки я где-то видел...с наилучшими,
Сергей