EvilShadow Опубликовано 27 декабря, 2010 · Жалоба Наоборот. session_max_duration - это промежуток времени, через который радиусу будут посланы Stop и Start пакеты. При этом сессия не отключается, трафик ходит, авторизация не повторяется. Просто одна сессия разбивается на несколько, пользователь этого не замечает. А вот session_idle_timeout - это время, после которого при условии отсутствия трафика сессия завершится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 27 декабря, 2010 (изменено) · Жалоба Наоборот. session_max_duration - это промежуток времени, через который радиусу будут посланы Stop и Start пакеты. При этом сессия не отключается, трафик ходит, авторизация не повторяется. Просто одна сессия разбивается на несколько, пользователь этого не замечает.А вот session_idle_timeout - это время, после которого при условии отсутствия трафика сессия завершится. Ну наверно так должно быть, но я поставил idle = 60 , max = 600, и через минуту неактивности картинка, как я привел выше. т.е. сессия не делась никуда, но обнулилась. Надо глубже копнуть, мож баг :) PS: и после session_max_duration сессия все еще есть. Изменено 27 декабря, 2010 пользователем e-AI Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 27 декабря, 2010 · Жалоба Wingman, какую ревизию используете?lISG-0.11.3-alpha из git Ну наверно так должно быть, но я поставил idle = 60 , max = 600, и через минуту неактивности картинка, как я привел выше. т.е. сессия не делась никуда, но обнулилась. Надо глубже копнуть, мож баг :) PS: и после session_max_duration сессия все еще есть. А трафика точно на ней не было больше? Может, продлилась? =) Вообще я эти параметры радиусом отдаю: UNION SELECT '', '%{SQL-User-Name}', 'Session-Timeout', '86400', '='\ UNION SELECT '', '%{SQL-User-Name}', 'Idle-Timeout', '600', '=' И в графиках четко видно, как постоянно чучуть скачет число сессий - оно берётся из "Approved sessions count", т.е. никаких "disconnected" сессий у нас не возникает, сессия просто исчезает Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
EvilShadow Опубликовано 27 декабря, 2010 · Жалоба После max_duration она должна оставаться. А по поводу обнулившихся счётчиков стоит почитать лог lISG, действительно ли сессия завершилась. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 27 декабря, 2010 · Жалоба lISGd сообщает, что Service 'TESTSERV2' for '10.128.1.150' finished при этом > ./ISG.pl show_services Virtual1 User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags 10.128.1.150 0.0.0.0 Virtual1 5F66DE790FFEE324 0 0 0 1000000 1000000 TESTSERV2 SO 10.128.1.150 0.0.0.0 Virtual1 C10FA709BA5DE6EE 0 0 0 256000 256000 TESTSERV S Комп просто выключен, уже больше 10 минут точно. м.б. потому что назначено 2 сервиса на сессию. Правда вторая не была активирована. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 27 декабря, 2010 · Жалоба lISGd сообщает, чтоService 'TESTSERV2' for '10.128.1.150' finished при этом > ./ISG.pl show_services Virtual1 User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags 10.128.1.150 0.0.0.0 Virtual1 5F66DE790FFEE324 0 0 0 1000000 1000000 TESTSERV2 SO 10.128.1.150 0.0.0.0 Virtual1 C10FA709BA5DE6EE 0 0 0 256000 256000 TESTSERV S Комп просто выключен, уже больше 10 минут точно. м.б. потому что назначено 2 сервиса на сессию. Правда вторая не была активирована. Может быть, где-то в сервисах косяк, я передаю скорость Class=..., сервисы не использую Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 27 декабря, 2010 · Жалоба Тут надо реализовать такую схемуDHCP запрос от клиента LISG ловит этот запрос выступая скажем релеем/прокси DHCP LISG отправляет Radius auth запрос на биллинг LISG получив ответ от Радиуса выдает IP клиенту и отправляет radius acct с параметрами клиента (IP, MAC, opt82 И т.п.) Неверно.lISG предполагает, что адрес у клиента уже есть, и их надо фильтровать. DHCP-сервер должен быть отдельным. Пример применения: можно отдавать разные адреса и включать/выключать клиенту сеть и так далее. Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю. Готов спорить :)Radius вовсе не лишняя прослойка, т.к. знаете ли, кое кто использует радиус для аутентификации и аккаутинга, в качестве альтернативы скриптам которые делают выкл/вкл фильтров на SrcIP и сбора статистики по netflow для аккаутинга. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 27 декабря, 2010 · Жалоба Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю.Готов спорить :)Radius вовсе не лишняя прослойка, т.к. знаете ли, кое кто использует радиус для аутентификации и аккаутинга, в качестве альтернативы скриптам которые делают выкл/вкл фильтров на SrcIP и сбора статистики по netflow для аккаутинга. Скажу лучше: в C есть всё необходимое, включая кучу примеров в инете! В asm, в принципе, тоже! Вопрос - зачем, если радиус в любом случае нужен и используется? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 27 декабря, 2010 · Жалоба Насчет FreeRADIUS где-то тут же говорилось: это лишняя прослойка. В Net::DHCP::Packet есть все необходимое, включая example. Сейчас над этим работаю.Готов спорить :)Radius вовсе не лишняя прослойка, т.к. знаете ли, кое кто использует радиус для аутентификации и аккаутинга, в качестве альтернативы скриптам которые делают выкл/вкл фильтров на SrcIP и сбора статистики по netflow для аккаутинга. Скажу лучше: в C есть всё необходимое, включая кучу примеров в инете! В asm, в принципе, тоже! Вопрос - зачем, если радиус в любом случае нужен и используется? Для DHCP, скорее всего, будет использоваться еще один радиус. Ибо держать все на одном - тот еще ад. Так зачем? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 27 декабря, 2010 · Жалоба Для DHCP, скорее всего, будет использоваться еще один радиус. Ибо держать все на одном - тот еще ад. Так зачем? Один и тот же радиус одним модулем обрабатывает авторизацию и аккаунтинг, другим - dhcp, в чем заключается ад? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 27 декабря, 2010 · Жалоба Для DHCP, скорее всего, будет использоваться еще один радиус. Ибо держать все на одном - тот еще ад. Так зачем? Один и тот же радиус одним модулем обрабатывает авторизацию и аккаунтинг, другим - dhcp, в чем заключается ад? В конфигурировании.И вообще, KISS. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 27 декабря, 2010 (изменено) · Жалоба Стоп стоп, коллеги, вы хотите радиус для dhcp server юзать? Не я имел в виду, что LISG-DHCP по идее должено быть пофиг какой там DHCP Server. Смысл в чем, LISG-DHCP юзается как relay, который ловит DHCP-Request, отправляет запрос на Радиус-Биллинг и получив утвердительный ответ ретранслирует запрос клиента на DHCP Server. Получив от DHCP-Server ответ DHCP-ACK, отправляет на Радиус-Биллинг Acct-Start. Ну и попутно для Биллинг-Радиус можно через поля прикнутить Opt82, IP клиента и т.д. и т.п. Изменено 27 декабря, 2010 пользователем shicoy Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 27 декабря, 2010 (изменено) · Жалоба Для DHCP, скорее всего, будет использоваться еще один радиус. Ибо держать все на одном - тот еще ад. Так зачем? Один и тот же радиус одним модулем обрабатывает авторизацию и аккаунтинг, другим - dhcp, в чем заключается ад? В конфигурировании.И вообще, KISS. Написать два конфига для разных модулей одного радиус-сервера, или два конфига для разных модулей двух серверов - в чём разница? И в чём усложнение (с точки зрения kiss)? Даже если один из двух модулей (виртуальных серверов) заглючит - другой продолжает работу как ни в чём не бывало. Стоп стоп, коллеги, вы хотите радиус для dhcp server юзать?Не я имел в виду, что LISG-DHCP по идее должено быть пофиг какой там DHCP Server. Смысл в чем, LISG-DHCP юзается как relay, который ловит DHCP-Request, отправляет запрос на Радиус-Биллинг и получив утвердительный ответ ретранслирует запрос клиента на DHCP Server. Получив от DHCP-Server ответ DHCP-ACK, отправляет на Радиус-Биллинг Acct-Start. Ну и попутно для Биллинг-Радиус можно через поля прикнутить Opt82, IP клиента и т.д. и т.п. Тут спитч о том, что проще/удобне/лучше - написать под фрирадиус логику dhcp-сервера, воспользовавшись его сетевым API, или написать dhcp-сервер на перле с нуля =) Изменено 27 декабря, 2010 пользователем Wingman Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
e-AI Опубликовано 27 декабря, 2010 · Жалоба Стоп стоп, коллеги, вы хотите радиус для dhcp server юзать?Не я имел в виду, что LISG-DHCP по идее должено быть пофиг какой там DHCP Server. Смысл в чем, LISG-DHCP юзается как relay, который ловит DHCP-Request, отправляет запрос на Радиус-Биллинг и получив утвердительный ответ ретранслирует запрос клиента на DHCP Server. Получив от DHCP-Server ответ DHCP-ACK, отправляет на Радиус-Биллинг Acct-Start. Ну и попутно для Биллинг-Радиус можно через поля прикнутить Opt82, IP клиента и т.д. и т.п. Я некоторое время назад выкладывал патч, который реализует (криво) примерно это. Чтоб работало не криво, надо дальше доделывать ISGd.pl, и видимо, ядерный модуль тоже. Короч, делаю именно это, наверно таки сделаю, если никто раньше не сделает :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 27 декабря, 2010 · Жалоба Тут спитч о том, что проще/удобне/лучше - написать под фрирадиус логику dhcp-сервера, воспользовавшись его сетевым API, или написать dhcp-сервер на перле с нуля =)Разве? :) А я думал мы обсужадем LISG :)))) Я некоторое время назад выкладывал патч, который реализует (криво) примерно это. Чтоб работало не криво, надо дальше доделывать ISGd.pl, и видимо, ядерный модуль тоже. Короч, делаю именно это, наверно таки сделаю, если никто раньше не сделает :)Это врядли... Так что ждем-с :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Wingman Опубликовано 27 декабря, 2010 · Жалоба Разве? :) А я думал мы обсужадем LISG :)))) ж)) Я имел в виду между мной и Abram =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 27 декабря, 2010 · Жалоба Тут спитч о том, что проще/удобне/лучше - написать под фрирадиус логику dhcp-сервера, воспользовавшись его сетевым API, или написать dhcp-сервер на перле с нуля =)Мой рабочий сорс уже работает. Включает в себя 300 строк.Предыдущий вариант (rlm_perl) тоже работал, но мне не понравился. Слишком много FreeRADIUS-специфичных баг вылазило. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 27 декабря, 2010 · Жалоба Мой рабочий сорс уже работает. Включает в себя 300 строк. Общественности покажите? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 27 декабря, 2010 · Жалоба Мой рабочий сорс уже работает. Включает в себя 300 строк.Общественности покажите? Стыдно :-D.Могу костяк выложить (вырезать спефичные для меня куски кода), когда доделаю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kww Опубликовано 6 января, 2011 (изменено) · Жалоба Не ссать в компот. Abram ( 15:25:46 )тут? Умник ( 15:26:00 ) Привет Abram ( 15:26:02 ) привет Abram ( 15:26:20 ) хочется поинтересоваться: lISG дальше развиваться будет? Умник ( 15:26:52 ) Да, конечно. Я там сроки поставил и не выдержал их... :( Умник ( 15:27:00 ) Свалилось тут на голову Abram ( 15:27:23 ) в общем, будем считать это вынужденной паузой =) Abram ( 15:27:31 ) а то народ, я смотрю, уже вовсю волноваться начал Умник ( 15:27:39 ) Пусть не волнуются. Умник ( 15:27:42 ) Передай им. Abram ( 15:27:58 ) спасибо :). в принципе, всё, что хотел знать Умник ( 15:28:01 ) В этом году я обязательно вернусь. Подскажите последнюю версию lISG ? (ссылочку на нее)Буду пытаться городить полисинг сетей .. Проект жалко . Изменено 6 января, 2011 пользователем kww Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 6 января, 2011 · Жалоба http://bitbucket.org/sysoleg/lisg/downloads/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SNeon Опубликовано 11 января, 2011 (изменено) · Жалоба Не спалось. За пару часов накидал патч для учета и полисинга подсетей. Естественно придется пересобрать модули iptables и ядра. Не забыть перезагрузить модуль ядра. В цепочку FORWARD в оба правила (-s и -d) добавить в конец параметр --init-net например: -A FORWARD -s 192.168.0.0/16 -j ISG --session-init --init-net 24 -A FORWARD -d 192.168.0.0/16 -j ISG --init-net 24 Это разобъет всю сеть 192.168.0.0/16 на подсети /24 Логины и пароли с-но будут 192.168.0.0, 192.168.1.0 ... 192.168.254.0 можно бить на любые подсети, хоть /31 использую вот эту версию http://bitbucket.org/sysoleg/lisg/get/tip.tar.gz diff -ruN lisg-oct-2-neon/kernel/isg_main.c lisg-oct-2-neon-net/kernel/isg_main.c --- lisg-oct-2-neon/kernel/isg_main.c 2010-10-02 22:10:08.000000000 +0300 +++ lisg-oct-2-neon-net/kernel/isg_main.c 2011-01-11 07:44:46.500072709 +0200 @@ -477,7 +477,7 @@ return 1; } -static struct isg_session *isg_create_session(struct isg_net *isg_net, u_int32_t ipaddr, u_int8_t *src_mac) { +static struct isg_session *isg_create_session(struct isg_net *isg_net, u_int32_t ipaddr, u_int8_t *src_mac, u_int32_t init_net) { struct isg_session *is; unsigned int port_number; struct timespec ts_now; @@ -493,6 +493,7 @@ is->info.ipaddr = ipaddr; is->start_ktime = ts_now.tv_sec; is->isg_net = isg_net; + is->init_net = init_net; port_number = find_next_zero_bit(isg_net->port_bitmap, PORT_BITMAP_SIZE, 1); set_bit(port_number, isg_net->port_bitmap); @@ -690,7 +691,7 @@ static inline int isg_equal(struct isg_in_event *ev, struct isg_session *is) { if ((ev->si.sinfo.id && ev->si.sinfo.id == is->info.id) || (is->info.port_number == ev->si.sinfo.port_number) || - (is->info.ipaddr == ev->si.sinfo.ipaddr)) { + (is->info.ipaddr == ((is->init_net) ? (ev->si.sinfo.ipaddr & is->init_net) : ev->si.sinfo.ipaddr))) { return 1; } else { return 0; @@ -964,6 +965,7 @@ struct nehash_entry *ne; struct traffic_class **tc_list; __be32 laddr, raddr; + u_int32_t init_net = 0; struct isg_net *isg_net; u_int32_t pkt_len, pkt_len_bits; @@ -998,6 +1000,12 @@ raddr = iph->saddr; } + if (iinfo->flags & INIT_NET) { /* Init NET */ + init_net = htonl(0xFFFFFFFF << (32 - iinfo->init_net)); + laddr &= init_net; + raddr &= init_net; + } + is = isg_lookup_session(isg_net, laddr); if (is == NULL) { @@ -1010,7 +1018,7 @@ } } - isg_create_session(isg_net, laddr, src_mac); + isg_create_session(isg_net, laddr, src_mac, init_net); } else if (isg_net->pass_outgoing) { goto ACCEPT; } diff -ruN lisg-oct-2-neon/kernel/isg_main.h lisg-oct-2-neon-net/kernel/isg_main.h --- lisg-oct-2-neon/kernel/isg_main.h 2010-10-02 22:10:08.000000000 +0300 +++ lisg-oct-2-neon-net/kernel/isg_main.h 2011-01-11 06:47:54.342145989 +0200 @@ -21,6 +21,7 @@ #define INIT_SESSION 0x01 #define INIT_BY_SRC 0x02 #define INIT_BY_DST 0x04 +#define INIT_NET 0x08 #define ISG_DIR_IN 0x01 #define ISG_DIR_OUT 0x02 @@ -77,6 +78,7 @@ struct ipt_ISG_info { u_int8_t flags; + u_int8_t init_net; /* Init NETWORK */ }; struct isg_session_info { @@ -119,6 +121,8 @@ u_int64_t in_last_seen; u_int64_t out_last_seen; + u_int32_t init_net; /* Init NETWORK */ + time_t start_ktime; time_t last_export; diff -ruN lisg-oct-2-neon/kernel/libipt_ISG.c lisg-oct-2-neon-net/kernel/libipt_ISG.c --- lisg-oct-2-neon/kernel/libipt_ISG.c 2010-10-02 22:10:08.000000000 +0300 +++ lisg-oct-2-neon-net/kernel/libipt_ISG.c 2011-01-11 07:22:49.369311708 +0200 @@ -9,11 +9,13 @@ struct ipt_ISG_info { u_int8_t flags; + u_int8_t init_net; /* Init NETWORK */ }; static const struct option opts[] = { { "session-init", 0, NULL, '1' }, { "init-mode", 1, NULL, '2' }, + { "init-net", 1, NULL, '3' }, { .name = NULL } }; @@ -24,12 +26,14 @@ " --init-mode <mode> Session initialization mode:\n" " src - use src IP-address as username\n" " dst - use dst IP-address as username\n" -" If --init-mode is not specified, `src' is assumed\n"); +" If --init-mode is not specified, `src' is assumed\n" +" --init-net Net Prefix\n"); } #define INIT_SESSION 0x01 #define INIT_BY_SRC 0x02 #define INIT_BY_DST 0x04 +#define INIT_NET 0x08 #if defined NEWSTYLE #define _EXIT_ERROR xtables_error @@ -73,6 +77,20 @@ break; + case '3': + if (*flags & INIT_NET) { + _EXIT_ERROR(PARAMETER_PROBLEM, "Can't specify --init-net twice\n"); + } + + isg->flags |= INIT_NET; + if (strlen(optarg)) { + isg->init_net = atoi(optarg); + } else { + isg->init_net = 24; + } + + break; + default: return 0; } @@ -92,6 +110,10 @@ printf("--init-mode dst"); } } + + if (isg->flags & INIT_NET) { + printf(" --init-net %d", isg->init_net); + } } static void print(const void *ip, @@ -111,6 +133,10 @@ printf("dst mode"); } } + + if (isg->flags & INIT_NET) { + printf(" net %d", isg->init_net); + } } static void check(unsigned int flags) { diff -ruN lisg-oct-2-neon/kernel/old_iptables/libipt_ISG.c lisg-oct-2-neon-net/kernel/old_iptables/libipt_ISG.c --- lisg-oct-2-neon/kernel/old_iptables/libipt_ISG.c 2010-10-02 22:10:08.000000000 +0300 +++ lisg-oct-2-neon-net/kernel/old_iptables/libipt_ISG.c 2011-01-11 07:22:54.146230240 +0200 @@ -9,11 +9,13 @@ struct ipt_ISG_info { u_int8_t flags; + u_int8_t init_net; /* Init NETWORK */ }; static struct option opts[] = { { "session-init", 0, NULL, '1' }, { "init-mode", 1, NULL, '2' }, + { "init-net", 1, NULL, '3' }, { .name = NULL } }; @@ -24,12 +26,14 @@ " --init-mode <mode> Session initialization mode:\n" " src - use src IP-address as username\n" " dst - use dst IP-address as username\n" -" If --init-mode is not specified, `src' is assumed\n"); +" If --init-mode is not specified, `src' is assumed\n" +" --init-net Net Prefix\n"); } #define INIT_SESSION 0x01 #define INIT_BY_SRC 0x02 #define INIT_BY_DST 0x04 +#define INIT_NET 0x08 static int parse(int c, char **argv, int invert, unsigned int *flags, const struct ipt_entry *entry, @@ -65,6 +69,20 @@ break; + case '3': + if (*flags & INIT_NET) { + exit_error(PARAMETER_PROBLEM, "Can't specify --init-net twice\n"); + } + + isg->flags |= INIT_NET; + if (strlen(optarg)) { + isg->init_net = atoi(optarg); + } else { + isg->init_net = 24; + } + + break; + default: return 0; } @@ -84,6 +102,10 @@ printf("--init-mode dst"); } } + + if (isg->flags & INIT_NET) { + printf(" --init-net %d", isg->init_net); + } } static void print(const struct ipt_ip *ip, @@ -103,6 +125,10 @@ printf("dst mode"); } } + + if (isg->flags & INIT_NET) { + printf(" net %d", isg->init_net); + } } static void check(unsigned int flags) { Изменено 11 января, 2011 пользователем SNeon Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kww Опубликовано 11 января, 2011 · Жалоба Красивое решение. К сожалению намного чаще надо полисить/считать сети разного размера. Притом вперемешку с выдачей одиночных IP /32. Но за ваш вариант все равно скажу огромное спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SNeon Опубликовано 11 января, 2011 · Жалоба Тогда надо придумать алгоритм. что будет посылать радиус(билинг) и каким образом на это реагировать. когда я раньше поднимал этот вопрос, ответ сводился к одному - не заводить кучу правил в iptables под разные нужды. А следовательно информацию надо брать либо из конфига либо из билинга. Предлагайте варианты - сделаем. Мне нужно было как минимум побить подсеть на сети класса С и подсеть на сети /30. Теперь 4 правила в iptables с этим справляются. Патч писал ночью от бессонницы и скуки. Для начала чтоб хотя бы разобраться с кодом (комментариев в нем к сожалению очень мало). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kww Опубликовано 12 января, 2011 · Жалоба Было-бы неплохо с биллинга для каждого клиента отдать Framed-IP-Netmask , если его нет то /32 . Тогда каждый клиент будет сетью, хоть из 1 IP, хоть из 255. Но дело в том что в rfc3576 (CoA) такого атрибута нет. Или я что-то путаю ))) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...