Перейти к содержимому
Калькуляторы

Спасибо

Будет ли работать lisg на bond интерфейсах?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо

Будет ли работать lisg на bond интерфейсах?

Да. К интерфейсам же нет привязки, главное чтобы трафик в iptables попадал.

Изменено пользователем alexmern

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пройдите глазами полностью по таблице -t nat задним ходом от конечного /32 на наличие нужных правил dnat.

У меня была проблема на новом ядре не создавались правила dnat skeleton для ip ***.***.***.***, а вот для ***.***.***.** всё создавалось. Пришлось кое-что в коде поправить.

Похоже так и есть, т.е. вижу последним вот такое правило:

 

Chain stat_nat_dst1*.2*.255.240_30 (1 references)

target prot opt source destination

DNAT all -- 0.0.0.0/0 1*.2*.255.242 to:10.24.128.4

 

а для /32 нет

 

где что подкрутить надо? :) Подскажите пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И еще вопрос, для ната создаются ветки stat_nat_dst_skeleton и stat_nat_src_skeleton, но они создаются только после появления первой сессии

Соотвественно заранее добавить их PREROUTING/POSTROUTING нельзя, поэтому вопрос, а как быть? :) Ждать пока появится первая сессия и ручками добавлять правила?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

где что подкрутить надо? :) Подскажите пожалуйста.

/usr/local/ISG/bin/ISGd.pl lines 839-840:

   foreach ("dst", "src") {
       my $sk = IPTables::SubnetSkeleton::new("isg_nat", $_, "nat", @CIDR);
       my $ipt = $sk->get_iptables_object();

т.е. я изменил названия правил с stat_nat на isg_nat, тем самым уменьшив длину названия правил на один символ, чтобы всё помещалось.

 

По второму воросу, добавил в автозагрузку это, всё стартует нормально:

   /usr/local/ISG/bin/ISGd.pl

   /sbin/iptables -t nat -N isg_nat_dst_skeleton
   /sbin/iptables -t nat -N isg_nat_src_skeleton
   /sbin/iptables -t nat -I PREROUTING  -j isg_nat_dst_skeleton
   /sbin/iptables -t nat -I POSTROUTING -j isg_nat_src_skeleton

   /sbin/iptables -A FORWARD -s 10.17.0.0/16 -j ISG --session-init
   /sbin/iptables -A FORWARD -d 10.17.0.0/16 -j ISG

Cначала запускется демон, потом создаются нужные таблицы и правила.

Изменено пользователем alexmern

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо ^)

Т.е. полностью этот участок будет выглядеть так:


   		if ($found_rnum) {
   	    	    $ipt->iptables_do_command("-D", $leaf_chain, $found_rnum);
   		}
    }
}
foreach ("dst", "src") {
       my $sk = IPTables::SubnetSkeleton::new("isg_nat", $_, "nat", @CIDR);
       my $ipt = $sk->get_iptables_object();
$ipt->unlock();

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

shicoy,

Да, так. Правда, я у себя менял stat_nat на st_n - чтобы уж наверняка влезло :).

Цитата из README:

iptables -t nat -I PREROUTING  -j stat_nat_dst_skeleton
iptables -t nat -I POSTROUTING -j stat_nat_src_skeleton

Соответственно:

iptables -t nat -I PREROUTING  -j st_n_dst_skeleton
iptables -t nat -I POSTROUTING -j st_n_src_skeleton

Или как у тебя:

iptables -t nat -I PREROUTING  -j isg_nat_dst_skeleton
iptables -t nat -I POSTROUTING -j isg_nat_src_skeleton

Укорачивать нужно на новых ядрах, т.к. там уменьшили максимальный размер строки-названия цепочки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему-то не убивается сессия по истечении idle (клиент не активен)

User IP-address NAT IP-address  Port number   Uniq. Identifier Durat.  Octets-in  Octets-out Rate-in    Rate-out   Service name     Flags
10.24.128.4     1*.2*.255.242 Virtual1      E4CDF1432E73E986 1878    394717     389692     0          0          Undefined        A

idle-timeout стоит 1800

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# isg show_count
Approved sessions count:        -4294966146
Unapproved sessions count:      4294967278

Чето видимо подкрутить тоже надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# isg show_count
Approved sessions count:        -4294966146
Unapproved sessions count:      4294967278

Чето видимо подкрутить тоже надо?

ISG.pl line 78

   my $unap = ISG::ntohl(~$rev{'nat_ipaddr'});

Но там что-то не точно показывает. Кол-во онлайн в биллинге смотрю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# isg show_count
Approved sessions count:        -4294966146
Unapproved sessions count:      4294967278

Чето видимо подкрутить тоже надо?

Я за тебя README читать больше не буду :).

-------------------
* Tips and Tricks *
-------------------
To enable reliable communications between userspace and kernel, do:

   echo "1048576" > /proc/sys/net/core/rmem_max

Otherwise there will be some problems printing long session lists.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я за тебя README читать больше не буду :).

-------------------
* Tips and Tricks *
-------------------
To enable reliable communications between userspace and kernel, do:

   echo "1048576" > /proc/sys/net/core/rmem_max

Otherwise there will be some problems printing long session lists.

 

# cat /proc/sys/net/core/rmem_max
1048576

Не в этом дело было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не в этом дело было.

Было? То есть, решил? Как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# isg show_count
Approved sessions count:        -4294966146
Unapproved sessions count:      4294967278

Чето видимо подкрутить тоже надо?

ISG.pl line 78

   my $unap = ISG::ntohl(~$rev{'nat_ipaddr'});

Но там что-то не точно показывает. Кол-во онлайн в биллинге смотрю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А где взять исходники LISG с последними дополнениями и исправлениями???

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А где взять исходники LISG с последними дополнениями и исправлениями???

В соседней теме, однако!!!

http://forum.nag.ru/forum/index.php?showtopic=53156

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ilya Evseev Спасибо! Вот только ссылка-то на эту самую тему .... :(

Изменено пользователем Олег Кривицкий

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ilya Evseev Спасибо! Вот только ссылка-то на эту самую тему .... :(

Точнее, на первый пост ;). Там ссылка есть. Присмотритесь. Да-да, именно эта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ilya Evseev Спасибо! Вот только ссылка-то на эту самую тему .... :(

Точнее, на первый пост ;). Там ссылка есть. Присмотритесь. Да-да, именно эта.

Сам нашел уже, спасибо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ребята, а кто знает как дропнуть сессию через COA ? =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ребята, а кто знает как дропнуть сессию через COA ? =)

 

$command = "/bin/echo \"NAS-Identifier=\\\"$NAS->{NAS_INDENTIFIER}\\\",NAS-Port=\\\"$PORT\\\"\" | /usr/bin/radclient -x $NAS->{NAS_MNG_IP_PORT} disconnect $NAS->{NAS_MNG_PASSWORD}";
`$command`;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ребята, а кто знает как дропнуть сессию через COA ? =)

 

$command = "/bin/echo \"NAS-Identifier=\\\"$NAS->{NAS_INDENTIFIER}\\\",NAS-Port=\\\"$PORT\\\"\" | /usr/bin/radclient -x $NAS->{NAS_MNG_IP_PORT} disconnect $NAS->{NAS_MNG_PASSWORD}";
`$command`;

Да, что-то вроде такого. Я где-то на последних страницах писал, можно свериться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ребята, а кто знает как дропнуть сессию через COA ? =)

 

$command = "/bin/echo \"NAS-Identifier=\\\"$NAS->{NAS_INDENTIFIER}\\\",NAS-Port=\\\"$PORT\\\"\" | /usr/bin/radclient -x $NAS->{NAS_MNG_IP_PORT} disconnect $NAS->{NAS_MNG_PASSWORD}";
`$command`;

 

спасибо, буду пробовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Несколько патчей.

 

1. На арче после обновления не собирается lisg-hg / lisg-webauth-hg.

lisg-webauth-hg/src/lisg-build/kernel/Makefile.in

 


all:
echo "" > build.h
printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h
$(MAKE) -C $(KDIR) M=$(PWD) modules
gcc -O2 -Wall -Wunused -I$(KDIR)/include -I$(IPTSRC)/include -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" $(XT_NEWSTYLE) -fPIC -o libipt_ISG_sh.o -c libipt_ISG.c
gcc -shared -o libipt_ISG.so libipt_ISG_sh.o

заменить на:


all:
echo "" > build.h
printf "/* Compilation date.\n * Written by Makefile (userspace) */\n#define _BUILD_DATE \"%s %s\"\n" `date +'%F %T'` > build.h
echo "#include <linux/export.h>" >> build.h
echo "#include <linux/moduleparam.h>" >> build.h
echo "#include <linux/module.h>" >> build.h
$(MAKE) -C $(KDIR) M=$(PWD) modules
gcc -O2 -Wall -Wunused -I$(KDIR)/include -I$(IPTSRC)/include -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\" $(XT_NEWSTYLE) -fPIC -o libipt_ISG_sh.o -c libipt_ISG.c
gcc -shared -o libipt_ISG.so libipt_ISG_sh.o

(добавление трёх инклюдесов перед сборкой)

 

 

 

2. webauth версия при использовании сервисов добавляет авторизованного клиента в таблицу для редиректа при активации сервиса:

Removing xx.xx.80.5 from web auth list

Session 'xx.xx.80.5' on 'Virtual1' accepted by 'yy.yy.148.2:1812'

Removing xx.xx.80.5 from web auth list

Service 'inet-0' for 'xx.xx.80.5' started

Adding xx.xx.80.5 to web auth list

 

# /usr/local/ISG/bin/ISG.pl
User IP-address NAT IP-address Port number Uniq. Identifier Durat. Octets-in Octets-out Rate-in Rate-out Service name Flags
xx.xx.80.5 0.0.0.0 Virtual1 F43036D9A9D45916 213 16968 16008 0 0 Undefined A 

root@myhost# /usr/local/ISG/bin/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
xx.xx.80.5 0.0.0.0 Virtual1 7E1CAB436FBCBE96 216 17220 16260 0 0 inet-0 SOU 
xx.xx.80.5 0.0.0.0 Virtual1 ADAC7CD2257739D4 0 0 0 0 0 peer-0 SO 
xx.xx.80.5 0.0.0.0 Virtual1 5FBFC32D170102EC 0 0 0 0 0 local-0 SO 

 

В файле: ISGd.pl

заменить:

 

			if ($ev->{'type'} == ISG::EVENT_SESS_START)

		{

	    	if ($ev->{'flags'} & ISG::IS_APPROVED_SESSION) {

			web_auth("del", $ipaddr);

	    	} else {

			web_auth("add", $ipaddr);

	    	}

		}


на


		if (($ev->{'flags'} & ISG::IS_SERVICE) == 0 && $ev->{'type'} == ISG::EVENT_SESS_START)
		{
	    	if ($ev->{'flags'} & ISG::IS_APPROVED_SESSION) {
			web_auth("del", $ipaddr);
	    	} else {
			web_auth("add", $ipaddr);
	    	}
		}

После замены:

Removing xx.xx.80.5 from web auth list

Session 'xx.xx.80.5' on 'Virtual1' accepted by 'yy.yy.148.2:1812'

Removing xx.xx.80.5 from web auth list

Service 'inet-0' for 'xx.xx.80.5' started

 

 

 

3. Пожелание: прописать для webauth версии зависимости, чтобы само ставило:

perl-POE

perl-libwww и её зависимости

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ещё нам нужны маки, потому плиз уберите из патча:

 

 


@@ -687,9 +750,9 @@
    $p->set_attr("NAS-Port", $ev->{'port_number'});
    $p->set_attr("NAS-Port-Type", "Virtual");

-    if (defined($ev->{'macaddr'})) {
-	$p->set_vsattr("Cisco", "Cisco-AVPair", "client-mac-address=" . ISG::format_mac($ev->{'macaddr'}, 4));
-    }
+#    if (defined($ev->{'macaddr'})) {
+#	$p->set_vsattr("Cisco", "Cisco-AVPair", "client-mac-address=" . ISG::format_mac($ev->{'macaddr'}, 4));
+#    }

    if ($code eq "Accounting-Request") {
	$p->set_attr("Acct-Status-Type", "Start") if ($ev->{'type'} == ISG::EVENT_SESS_START);

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.