Не работает ипое

IPoE related questions
Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: Не работает ипое

Post by Dmitry » 30 Jan 2017, 12:00

в качестве Calling-Station-Id передавался ИП адрес абонента?
никак, не предусмотрено
ип адрес передаются в имени пользователя, зачем ещё в Calling-Station-Id дублировать

Cramac
Posts: 98
Joined: 05 Jan 2017, 11:53
Contact:

Re: Не работает ипое

Post by Cramac » 30 Jan 2017, 15:00

не, я к тому что на работающем старом accel у меня передается вызывающий ИП клиента
[2017-01-30 17:53:49]: info: ipoe227: send [RADIUS(1) Access-Request id=1 <User-Name "172.20.23.6"> <NAS-Identifier "accel-ppp"> <NAS-IP-Address 188.254.31.242> <NAS-Port 271777> <NAS-Port-Id "ipoe227"> <NAS-Port-Type Ethernet> <Calling-Station-Id "172.20.23.6"> <Called-Station-Id "eth0"> <User-Password >]

тут у меня почему то идет мак, и то мак свитча.
Это зависит от выбранного режима L2 или L3? и релоад на данную опцию не действует?

Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: Не работает ипое

Post by Dmitry » 31 Jan 2017, 06:39

соврал
можно передавать ип:
[ipoe]
calling-sid=ip
по релоаду должно обновить, но применится только к новым сессиям

Cramac
Posts: 98
Joined: 05 Jan 2017, 11:53
Contact:

Re: Не работает ипое

Post by Cramac » 31 Jan 2017, 07:51

спасибо. Но как то на старой версии у меня оно само передается. Без данной опции,

Остается только 1 вопрос открытый.
local-net не корректно отрабатывает.

Cramac
Posts: 98
Joined: 05 Jan 2017, 11:53
Contact:

Re: Не работает ипое

Post by Cramac » 02 Feb 2017, 10:40

Подскажите, почему, какую бы я сеть не писал
local-net=10.10.11.0/24
local-net=10.255.0.0/16
у меня все равно Accel пытается авторизовать всех из 10.10.10.0/24 ?

правда все изменения я делаю по accel-cmd reload

Cpulink
Posts: 10
Joined: 21 Jan 2017, 12:47

Re: Не работает ипое

Post by Cpulink » 02 Feb 2017, 12:13

Cramac wrote:
02 Feb 2017, 10:40
Подскажите, почему, какую бы я сеть не писал
local-net=10.10.11.0/24
local-net=10.255.0.0/16
у меня все равно Accel пытается авторизовать всех из 10.10.10.0/24 ?
Когда делал тест новой версии, даже при чистом запуске тоже наблюдал подобную картину.
Как будто он пытался авторизовать всех на конкретной сетевой карте.
У меня он пытался авторизовать соседний с ним сервак, с которого я заходил на него (заходил не напрямую чтобы избежать моей двойной авторизации).

Cramac
Posts: 98
Joined: 05 Jan 2017, 11:53
Contact:

Re: Не работает ипое

Post by Cramac » 02 Feb 2017, 12:56

посмотрел исходники, в старой моей и новой, слегка отличаются парсер сетей (в старой вроде работает как надо):
старое:

Code: Select all

static void parse_local_net(const char *opt)
{
	const char *ptr;
	char str[17];
	in_addr_t addr;
	int mask;
	char *endptr;

	ptr = strchr(opt, '/');
	if (ptr) {
		memcpy(str, opt, ptr - opt);
		str[ptr - opt] = 0;
		addr = inet_addr(str);
		if (addr == INADDR_NONE)
			goto out_err;
		mask = strtoul(ptr + 1, &endptr, 10);
		if (mask > 32)
			goto out_err;
	} else {
		addr = inet_addr(opt);
		if (addr == INADDR_NONE)
			goto out_err;
		mask = 24;
	}

	if (mask == 32)
		mask = 0xffffffff;
	else
		mask = (1 << (32-mask)) - 1;

	addr = ntohl(addr);
	mask = ~mask;

	//printf("%x/%x %x\n", htonl(addr), ~mask, htonl(addr)&(~mask));

	ipoe_nl_add_net(addr & mask, mask);

	return;

out_err:
	log_error("ipoe: failed to parse 'local-net=%s'\n", opt);
}

static void load_local_nets(struct conf_sect_t *sect)
{
	struct conf_option_t *opt;

	ipoe_nl_delete_nets();

	list_for_each_entry(opt, &sect->items, entry) {
		if (strcmp(opt->name, "local-net"))
			continue;
		if (!opt->val)
			continue;
		parse_local_net(opt->val);
	}
}
новое:

Code: Select all

static void parse_local_net(const char *opt)
{
	const char *ptr;
	char str[17];
	in_addr_t addr;
	int mask;
	char *endptr;
	struct local_net *n;

	ptr = strchr(opt, '/');
	if (ptr) {
		memcpy(str, opt, ptr - opt);
		str[ptr - opt] = 0;
		addr = inet_addr(str);
		if (addr == INADDR_NONE)
			goto out_err;
		mask = strtoul(ptr + 1, &endptr, 10);
		if (mask > 32)
			goto out_err;
	} else {
		addr = inet_addr(opt);
		if (addr == INADDR_NONE)
			goto out_err;
		mask = 24;
	}

	list_for_each_entry(n, &local_nets, entry) {
		if (n->addr == addr && n->mask == mask) {
			n->active = 1;
			return;
		}
	}

	n = _malloc(sizeof(*n));
	n->addr = addr;
	n->mask = mask;
	n->active = 1;
	list_add_tail(&n->entry, &local_nets);

	ipoe_nl_add_net(addr, mask);

	return;

out_err:
	log_error("ipoe: failed to parse 'local-net=%s'\n", opt);
}

static void load_local_nets(struct conf_sect_t *sect)
{
	struct conf_option_t *opt;
	struct local_net *n;
	struct list_head *pos, *t;

	list_for_each_entry(n, &local_nets, entry)
		n->active = 0;

	list_for_each_entry(opt, &sect->items, entry) {
		if (strcmp(opt->name, "local-net"))
			continue;
		if (!opt->val)
			continue;
		parse_local_net(opt->val);
	}

	list_for_each_safe(pos, t, &local_nets) {
		n = list_entry(pos, typeof(*n), entry);
		if (!n->active) {
			ipoe_nl_del_net(n->addr);
			list_del(&n->entry);
			_free(n);
		}
	}
}

Cpulink
Posts: 10
Joined: 21 Jan 2017, 12:47

Re: Не работает ипое

Post by Cpulink » 03 Feb 2017, 07:25

Думаю, нужно смотреть драйвер. Он осуществляет фильтрацию, и сетевая для поиска неклассифицируемых пакетов задана ему.

Cramac
Posts: 98
Joined: 05 Jan 2017, 11:53
Contact:

Re: Не работает ипое

Post by Cramac » 03 Feb 2017, 11:42

Код я из него и скинул. Нужно чтоб знающие посмотрели :)

Cramac
Posts: 98
Joined: 05 Jan 2017, 11:53
Contact:

Re: Не работает ипое

Post by Cramac » 05 Feb 2017, 14:43

Может ли влиять версия ядра?
собрал тестовый, поставил убунту, обновил до последнего,

Code: Select all

# uname -a
Linux ubuntu 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
собрал из последнего гита, проверил local-net, по релоаду не реагирует изменения (удаление сети), только рестарт.
На тестовой системе, все отработало как положено.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest