Использование NETGRAPH для NAT и NetFlow с mpd (FreeBSD6+)

Форум для размещения материалов по реализации различных схем использования ПО, решению частых проблем и предупреждению частых ошибок
mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Использование NETGRAPH для NAT и NetFlow с mpd (FreeBSD6+)

Сообщение mikkey finn »

Крайне рекомендую.
организация NAT на два интерфейса(по адресу источника), прямое прохождение для пакетов с реальными адресами, снятие статистики NetFlow. Натит только семейство ng*.
http://wiki.bsdportal.ru/doc:netgraph_ng_nat
Апробировано на себе.
Два ната пока не сильно нужны, но есть два канала + спутниковый анлим, почему бы не пользоваться? Трафик считает, работает шустро, все исполняется в ядре.
По поводу работы mpd в качестве PPTP-сервера. Наблюдались тормоза до тех пор, пока не изменил mtu до 1300
Кто скажет оптимальное значение?
Есть еще такое мнение: стоит ставить mpd4, там можно netflow снимать прямо с бандлов. Кто осваивал?
Из непознанного: непонятно пока время реакции системы(на быстрых каналах актуально). Для ndsad была подсказана незадокументированная настройка - ng_lifetime. Здесь пока не понятно, скорее всего все будет рулиться настройками типа aggregation interval и aggregation to disk barrier
Собсно, рад тому, что нашел.

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

Есть еще такое мнение: стоит ставить mpd4, там можно netflow снимать прямо с бандлов. Кто осваивал?
+1

Instruktor
Сообщения: 131
Зарегистрирован: Ср авг 10, 2005 21:32
Откуда: Москва

Сообщение Instruktor »

патченый mpd3 справляется, + ng_tcpmss.

ng_nat и ng_netflow рулят!

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

Было бы просто супер, если б кто-то намашнил howto небольшой по сабжу.

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

а чего там писать то ? в самом общем случае в ядро <- ng_netflow, в описании бандлов: new -n -i далее по тексту, в общую часть описания : set netflow export ip (куда лить) port (на какой порт) т.е set netflow export 127.0.0.1 9996

получаем нормальный цисковый нетфлоу прям с бандлов !!! считает только входящий траф :) далее внимательно курим man mpd4 и man ng_netflow на предмет учета трафика в обе стороны
сказанное справедливо для FreeBSD от 6,0 и дальше и для mpd4b5 - пока он самый свежий

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

Спасибо. Как только появится время заняться тестовым биллингом, обязательно разбирусь с этим.

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

напиши чего получилось

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Не могу понять, что глючит.
В статистике диалапов биллинг рапортует о 200 соединениях(бред)
С указанными настройками(немного под себя перешаманивал) начинается жопа :) Выражается жопа в потере пакетов. Замечено: у клиента на диалапе пакеты идут через один, часто через два(один прошел, два потерялось), а с рутера туда же все отлично. Крайне редко так, что без потерь замечательный пинг. Такое наблюдается при плотном использовании канала.
ng_netflow отдает статистику каждые 3 секунды биллингу. Нужен именно максимальный риалтайм. Железо точно не нагружено, ядро жрет не больше 8% если верить top
Есть подозрение(возникло на почве чтения мэйллистов), что виноват корявый алгоритм хеширования в ng_netflow.
С другой стороны есть вопрос: если запустить ndsad, то как будет он себя вести, если интерфейс(ng*) поднимется после запуска ndsad?
Пока в логах вижу, что ndsad цепляет только те ng*, у которых на момент запуска состояние UP.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

Не могу понять, что глючит.
В статистике диалапов биллинг рапортует о 200 соединениях(бред)
С указанными настройками(немного под себя перешаманивал) начинается жопа :) Выражается жопа в потере пакетов. Замечено: у клиента на диалапе пакеты идут через один, часто через два(один прошел, два потерялось), а с рутера туда же все отлично. Крайне редко так, что без потерь замечательный пинг. Такое наблюдается при плотном использовании канала.
ng_netflow отдает статистику каждые 3 секунды биллингу. Нужен именно максимальный риалтайм. Железо точно не нагружено, ядро жрет не больше 8% если верить top
Есть подозрение(возникло на почве чтения мэйллистов), что виноват корявый алгоритм хеширования в ng_netflow.
С другой стороны есть вопрос: если запустить ndsad, то как будет он себя вести, если интерфейс(ng*) поднимется после запуска ndsad?
Пока в логах вижу, что ndsad цепляет только те ng*, у которых на момент запуска состояние UP.

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

У ng_netflow есть такое сообщение settimeouts. Я поставил туда 30 секунд. Выглядит это так msg nfg: settimeouts { active=30 inactive=30 }

Уже давно крутится рабочая связка ng_ipfw+ng_netflow+ng_nat, жалоб нету. Чтобы не было головной боли с сотнями интерфейсов ng*, берется подсеть без привязок к интерфейсам, которая обрабатывается после правил с привязкой, и адреса на ng* вешаются только из этой подсети.

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

собсно у меня связке уже год. Единственное - летом словил на большом числе юзеров проблему mpd3.18 с тредом авторизации, точнее отсутствием такового. Апнулся до 4, доволен.

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

Поставил mpd5, с Netflow всё понятно, непонятно только по NAT. Согласно доке достаточно в общем конфиге включить "set nat address ip", а в контексте инетрфейса его включить. Всё так и сделал, в ядро загрузил модуль ng_nat, нифига. С внешнего интерфейса NAS уходят пакеты без алиасинга, тоесть от имени "серого" пользователя.

Код: Выделить всё

        set netflow export 127.0.0.1 9996
        set nat address 33.62.70.2
        set nat enable log
        log +*
startup&#58;
        # configure mpd users
        set user foo bar admin
        set user foo1 bar1
        # configure the console
        set console self 127.0.0.1 5005
        set console open
        # configure the web server
        set web self 0.0.0.0 5006
        set web open

default&#58;
        load pptp_server

pptp_server&#58;

        set ippool add pool1 10.10.1.1 10.10.254.254
        create bundle template B
        set iface idle 1800
        set iface enable tcpmssfix
        set iface enable nat
        set ipcp yes vjcomp
        set ipcp ranges 10.10.254.254/32 ippool pool1
        set ipcp dns 192.168.254.241
        set ipcp nbns 217.150.34.129
        create link template L pptp
        set link action bundle B
        set link enable multilink
        set link yes acfcomp protocomp
        set link no pap chap
        set link enable chap
        set link keep-alive 10 60
        set link mtu 1460
        set pptp self 192.168.254.133
        set link enable incoming
        set auth enable radius-auth
        set radius config /etc/radius.conf
        set radius server 127.0.0.1 radius 1812 1813
        set radius timeout 10
        set radius retries 3
КТо-то настраивал натирование чисто конфигом Mpd5? Или только через утилиту ng_ctl можно?

UPD: Через example из "man ng_nat" у меня всё работает. Я просто люблю, когда всё красиво сделано. Если это предусмотрено самим mpd5, то почему бы и нет?

hammer
Сообщения: 286
Зарегистрирован: Сб янв 20, 2007 22:58
Контактная информация:

Сообщение hammer »

Я хотел разобраться тоже только с mpd шными фишками, но nat у меня местный так и не заработал :?

Arti
Сообщения: 266
Зарегистрирован: Пн окт 01, 2007 02:44

Сообщение Arti »

Не тот это нат. Используйте pf ipfw (если 7.x) или отдельно создавать ноду ng_nat и использовать ng_ipfw.

Аватара пользователя
kaN5300
Сообщения: 480
Зарегистрирован: Пт янв 21, 2005 17:27
Откуда: Ыукзгрщм
Контактная информация:

Сообщение kaN5300 »

Arti писал(а):Не тот это нат. Используйте pf ipfw (если 7.x) или отдельно создавать ноду ng_nat и использовать ng_ipfw.
"pf ipfw" я так понимаю подразумевается связка двух пакетных фильтров. А почему "если 7.х", почему на шестерке нельзя?

А еще у меня netflow самопроизвольно перестал считать. Да и считал только в одну сторону. Опять же вопрос. Одним лишь кофигом mpd.conf кто-нибудь "научил" считать трафик "в обе стороны"?

Закрыто