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

Есть опция

tr101=1. Формат посмотрите сами

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


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

up-limiter не может быть tbf. должен быть police

спасибо , исправил, но не режет.

 

 

accel-ppp# show sessions
ifname | username |    calling-sid    |      ip      | rate-limit  | type  | comp | state  |  uptime  
--------+----------+-------------------+--------------+-------------+-------+------+--------+----------
ppp0   | roys6    | 34:15:9e:1c:64:06 | 172.30.100.1 | 21000/21000 | pppoe |      | active | 00:02:02 

 

 

root@pppoe3a:~# tc qdisc
qdisc mq 0: dev eth1 root 
qdisc mq 0: dev eth3 root 
qdisc mq 0: dev eth4 root 
qdisc mq 0: dev eth5 root 
qdisc tbf 1: dev ppp0 root refcnt 2 rate 21000Kbit burst 262500b lat 50.0ms 
qdisc ingress ffff: dev ppp0 parent ffff:fff1 ---------------- 

 

P.S . все режет !! Спасибо)

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

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


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

accel передает NAS-Port-Type = Virtual, а для PPPoE вроде должно быть Ethernet ,

PPP вроде как должно быть, не?

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


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

accel передает NAS-Port-Type = Virtual, а для PPPoE вроде должно быть Ethernet ,

PPP вроде как должно быть, не?

У меня в MPD при подключении PPPoE NAS-Port-Type=Ethernet, а при подключении L2TP/PPTP NAS-Port-Type=Virtual . Может и не верно, вот и хочу спросить у Xeb.

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


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

roysbike,

К сожалению, я уже точно не помню - давно это было :).

Где-то в аргументах скрипту ip-change (так же, как ip-up, ip-down и тд) приходит имя интерфейса.

Потом нужно разбирать файл /var/run/radattr.$IFACE - там будет список всех этих ваших атрибутов. Можно сделать grep My-Custom-Redirect-Attribute /var/run/radattr.$IFACE и потом cut/awk.

Но вообще вот именно так

/bin/echo "My-Custom-Redirect-Attribute+=\"172.30.100.1\""  | /usr/bin/radclient -x 172.29.0.12:3799 coa testing123

делать нельзя, т.к. в CoA конкретно должен быть указан пользователь (либо acct-session-id) и nas ip address.

Сделал , coa отпрваляется без ошибок, атрибут добавил в словарь . но в /var/run/radattr.$IFACE видно только Framed-IP-Address.

 

echo "ip-change=1,Framed-IP-Address=172.30.0.200" | radclient -d /usr/local/share/accel-ppp/radius/ -x 10.10.0.2:3799 coa testing123

Как я понял , должен появится атрубут ip-change=1 в /var/run/radattr.$IFACE ?

Да, должен появиться.

Если не появился - либо его нет где-то в словаре, либо еще какая бяка. Смотрите лог accel-ppp (включите debug RADIUS-а) - приходит ли что-нибудь.

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


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

roysbike,

К сожалению, я уже точно не помню - давно это было :).

Где-то в аргументах скрипту ip-change (так же, как ip-up, ip-down и тд) приходит имя интерфейса.

Потом нужно разбирать файл /var/run/radattr.$IFACE - там будет список всех этих ваших атрибутов. Можно сделать grep My-Custom-Redirect-Attribute /var/run/radattr.$IFACE и потом cut/awk.

Но вообще вот именно так

/bin/echo "My-Custom-Redirect-Attribute+=\"172.30.100.1\""  | /usr/bin/radclient -x 172.29.0.12:3799 coa testing123

делать нельзя, т.к. в CoA конкретно должен быть указан пользователь (либо acct-session-id) и nas ip address.

Сделал , coa отпрваляется без ошибок, атрибут добавил в словарь . но в /var/run/radattr.$IFACE видно только Framed-IP-Address.

 

echo "ip-change=1,Framed-IP-Address=172.30.0.200" | radclient -d /usr/local/share/accel-ppp/radius/ -x 10.10.0.2:3799 coa testing123

Как я понял , должен появится атрубут ip-change=1 в /var/run/radattr.$IFACE ?

Да, должен появиться.

Если не появился - либо его нет где-то в словаре, либо еще какая бяка. Смотрите лог accel-ppp (включите debug RADIUS-а) - приходит ли что-нибудь.

Все таки не допонял. А что в конифге accel-ppp указывать, как он схавает атрибут.

 

[pppd-compat]
#ip-pre-up=/etc/ppp/ip-pre-up
ip-up=/etc/ppp/ip-up
ip-down=/etc/ppp/ip-down
ip-change=/etc/ppp/ip-change
radattr-prefix=/var/run/radattr
verbose=1

дописать чтоли строчку про атрибут?

 

отправляю так

 

echo "Framed-IP-Address=172.30.100.1,PPPD-Redirect-Attribute=1" | radclient -x 172.29.0.12:3799 coa testing123

 

в словаре добавил

ATTRIBUTE PPPD-Redirect-Attribute 9999 integer

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

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


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

Можно ли заюзать ATTRIBUTE L4-Redirect 242 integer для PPPoE?

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


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

Работает ли аксел в режиме IPOE l3 DHCP по схеме:

пользователь-> коммутатор -> маршрутизатор-релей -> аксел

или

пользователь-> коммутатор -> маршрутизатор-релей -> аксел(релей) -> dhcp сервер

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


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

в словаре добавил

ATTRIBUTE PPPD-Redirect-Attribute 9999 integer

По идее, должно быть достаточно. Естественно, это должно быть добавлено в словарь с двух сторон.

Включите дебаг и смотрите в лог, accel должен писать, что ему приходит. Если пришёл атрибут, которого нет в словаре - об этом сообщается отдельно. Если нет ни одного, ни другого - значит, атрибут не приходит.

Работает ли аксел в режиме IPOE l3 DHCP по схеме:

пользователь-> коммутатор -> маршрутизатор-релей -> аксел

или

пользователь-> коммутатор -> маршрутизатор-релей -> аксел(релей) -> dhcp сервер

Как попросите, так и работает.

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


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

Как попросите, так и работает.

Ну может не правильно прошу но аксел dhcp релаю отвечает на 68 порт

192.168.3.1 аксел

192.168.5.1 релай

 

18:51:26.093548 IP 192.168.5.1.67 > 192.168.3.1.67: BOOTP/DHCP, Request from d4:ca:6d:e3:43:e9, length 300
18:51:26.139893 IP 192.168.3.1.67 > 192.168.5.1.68: BOOTP/DHCP, Reply, length 268
18:51:26.145131 IP 192.168.5.1 > 192.168.3.1: ICMP 192.168.5.1 udp port 68 unreachable, length 304

 

Начал смотреть по коду, есть функция dhcpv4_send_udp

для эксперимента изменил

//addr.sin_port = htons(DHCP_CLIENT_PORT);

addr.sin_port = htons(DHCP_SERV_PORT);

 

Клиент аренду получил. В качестве дшсп сервера аксел ему назначил адрес роутера... что тоже не правильно... опять в код ... теперь получает адрес аксела в кчестве дшсп. Теперь не продляет лизу по юникасту.... Аксел вижу что шлёт ответ на продление, как я понял на ip+мак пользователя(надо проверить)

решил остановится и спросить. )) На форуме самая популярная схема влан на пользователя. По этой схеме вообще нет информации. Может она не работает или я не тем путём пошёл.

 

verbose=5
lua-file=/etc/accel-ppp.lua
username=lua:username
password=username1
lease-time=600
max-lease-time=3600
unit-cache=10
shared=1
ifcfg=0
mode=L3
start=dhcpv4
interface=eth3,mode=L3,range=192.168.5.0/24,src=192.168.3.1

 

по L2 завелось без проблем.

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


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

в словаре добавил

ATTRIBUTE PPPD-Redirect-Attribute 9999 integer

По идее, должно быть достаточно. Естественно, это должно быть добавлено в словарь с двух сторон.

Включите дебаг и смотрите в лог, accel должен писать, что ему приходит. Если пришёл атрибут, которого нет в словаре - об этом сообщается отдельно. Если нет ни одного, ни другого - значит, атрибут не приходит.

а в самом конфиге accel-ppp.conf , что указывать, так и оставить?

Нужно ли в конфиге указать атрибут?

 

[pppd-compat]
#ip-pre-up=/etc/ppp/ip-pre-up
ip-up=/etc/ppp/ip-up
ip-down=/etc/ppp/ip-down
ip-change=/etc/ppp/ip-change
radattr-prefix=/var/run/radattr
verbose=1

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

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


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

[pppd-compat]
#ip-pre-up=/etc/ppp/ip-pre-up
ip-up=/etc/ppp/ip-up
ip-down=/etc/ppp/ip-down
ip-change=/etc/ppp/ip-change
radattr-prefix=/var/run/radattr
verbose=1

Нет, не нужно.

Повторяю третий раз для тех, кто в танке: проверьте, приходит ли такой атрибут вообще.

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


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

тестирую L3 режим ipoe

столкнулся с тем что клиенту в качестве siaddr выдаётся адрес основного шлюза(релея), хотя адресом дшсп сервера должен стать аксел.

В итоге лиза не продляется по юникасту, и начинает запрашивать продление по мультикаст.

в ipoe.c

static void __ipoe_session_start(struct ipoe_session *ses)

if (!ses->siaddr && ses->router != ses->yiaddr)
ses->siaddr = ses->router;

if (!ses->siaddr)
find_gw_addr(ses);

if (!ses->siaddr)
ses->siaddr = ses->serv->opt_src;

if (!ses->siaddr && ses->serv->dhcpv4_relay)
ses->siaddr = ses->serv->dhcpv4_relay->giaddr;

 

Такой порядок справедлив для L2 но не для l3.

ввести параметр в конфиге siaddr аналогично src, или src подставлять в первую очередь я не думаю, что это будет не правильно.

Поправте если ошибаюсь.

не совсем понял в чём проблема, опиши конкретно кому какие адреса выдаются

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


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

roysbike, надо указать в конфиге

[radius]

verbose=1

 

[log]

level=4

 

и посмотреть что в логе

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


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

verbose=5
lua-file=/etc/accel-ppp.lua
username=lua:username
password=username1
lease-time=600
max-lease-time=3600
unit-cache=10
shared=1
ifcfg=0
mode=L3
start=dhcpv4
interface=eth3,mode=L3,range=192.168.5.0/24,src=192.168.3.1

 

по L2 завелось без проблем.

вообще-то, mode=L3 - для старта сессии по не классифицированному пакету

для дхцп - только L2, к нему L3 как-то мало применим

я вообще не понимаю зачем там ещё нужен где-то промежуточный релей ?

 

пользователь-> коммутатор -> маршрутизатор-релей -> аксел
насчёт маршрутизатора-релея не понял, как он собирается L2 маршрутизировать ?

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


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

ATTRIBUTE PPPD-Redirect-Attribute 9999 integer
атрибута с номер 9999 быть не может, 1-255

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


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

У меня в MPD

А с каких пор MPD стал стандартом? :)

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


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

У меня в MPD

А с каких пор MPD стал стандартом? :)

я не утверждал, заметьте) Я спросил, может оно и так не верно, хотел спросить, как верно то?)

 

ATTRIBUTE PPPD-Redirect-Attribute 9999 integer
атрибута с номер 9999 быть не может, 1-255

ВОт где я лоханулся. Все работает! Спасибо !

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


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

насчёт маршрутизатора-релея не понял, как он собирается L2 маршрутизировать

В том то и дело что не l2,тут вопросов пока не возникло и в этой схеме никаких маршрутизаторов - релеев нет :)

А l3 режим. Схема удобна тем что не надо гнать кучу vlan в ядро сети.

По такой схеме настраивал se600, cisco asr.

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

Функциональное отличие L2 от L3, заключается в том что в случае L2 входящий пакет будет 
проверяться на совпадение mac адреса установленного при старте сессии, а исходящие пакеты 
будут отправляться прямиком на этот mac адрес, без дополнительных запросов ARP, что обеспечивает защиту от подмены IP/mac адресов. 
В случае L3 исходящий пакет будет маршрутизироваться согласно установленным правилам маршрутизации. 

А реализовать L3 режим со стартом по DHCP не планируете?

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

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


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

А реализовать L3 режим со стартом по DHCP не планируете?
изначально планировался, но в ходе реализации возникли определённые вопросы

поясню немного в чём функция и как работает accel: его функция, помимо всего прочего, заключается в предоставлении, либо отказе прохождения клиентского трафика куда-то далее, решается это методом добавления маршрутов до клиентских ип на заданные интерфейсы

в случае L2 эти интефейсы однозначно идентифицируются по приходу дхцп пакетов

в случае L3 релейные запросы будут приходить скорее всего по одному интерфейсу, а клиентский трафик бегать по другим

если клиентский интефейс один, то задачу в принципе можно решить, если несколько, то тупик

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


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

Xeb хотел попросить добавить если возможно

чуть выше спрашивал

и насчёт этого вопроса: разные номера портов в запросе авторизации и аккаунтинга, проблему решил так

 

static void ipoe_session_start(struct ipoe_session *ses)

{

int r;

char *passwd;

struct ifreq ifr;

struct unit_cache *uc;

 

__sync_add_and_fetch(&stat_starting, 1);

 

if (!ses->ses.username) {

strncpy(ses->ses.ifname, ses->serv->ifname, AP_IFNAME_LEN);

 

ipoe_session_set_username(ses);

 

if (!ses->ses.username) {

ipoe_session_finished(&ses->ses);

return;

}

}

 

ses->ses.unit_idx = ses->serv->ifindex;

 

/*My insert */

if ((ses->ifindex == -1)&& (ses->serv->opt_shared )) {

pthread_mutex_lock(&uc_lock);

if (!list_empty(&uc_list)) {

uc = list_entry(uc_list.next, typeof(*uc), entry);

ses->ifindex = uc->ifindex;

list_del(&uc->entry);

--uc_size;

pthread_mutex_unlock(&uc_lock);

mempool_free(uc);

} else {

pthread_mutex_unlock(&uc_lock);

ses->ifindex = ipoe_nl_create(0, 0, ses->serv->opt_mode == MODE_L2 ? ses->serv->ifname : NULL, ses->hwaddr);

if (ses->ifindex == -1) {

log_ppp_error("ipoe: failed to create interface\n");

ap_session_terminate(&ses->ses, TERM_NAS_ERROR, 1);

return;

}

}

 

memset(&ifr, 0, sizeof(ifr));

ifr.ifr_ifindex = ses->ifindex;

if (ioctl(sock_fd, SIOCGIFNAME, &ifr, sizeof(ifr))) {

log_ppp_error("ipoe: failed to get interface name\n");

ses->ifindex = -1;

ap_session_terminate(&ses->ses, TERM_NAS_ERROR, 1);

return;

}

 

strncpy(ses->ses.ifname, ifr.ifr_name, AP_IFNAME_LEN);

ses->ses.ifindex = ses->ifindex;

ses->ses.unit_idx = ses->ifindex;

ses->ctrl.dont_ifcfg = 0;

}

/*My insert */

 

 

 

 

triton_event_fire(EV_CTRL_STARTING, &ses->ses);

triton_event_fire(EV_CTRL_STARTED, &ses->ses);

 

ap_session_starting(&ses->ses);

 

if (!conf_noauth) {

r = pwdb_check(&ses->ses, ses->ses.username, PPP_PAP, conf_password ? conf_password : ses->ses.username);

if (r == PWDB_NO_IMPL) {

passwd = pwdb_get_passwd(&ses->ses, ses->ses.username);

if (!passwd)

r = PWDB_DENIED;

else {

r = PWDB_SUCCESS;

_free(passwd);

}

}

 

if (r == PWDB_DENIED) {

/*My insert */

if ((ses->ifindex != -1)&& (ses->serv->opt_shared )) {

if (uc_size < conf_unit_cache && ipoe_nl_modify(ses->ifindex, 0, 0, "", NULL)) {

uc = mempool_alloc(uc_pool);

uc->ifindex = ses->ifindex;

pthread_mutex_lock(&uc_lock);

list_add_tail(&uc->entry, &uc_list);

++uc_size;

pthread_mutex_unlock(&uc_lock);

} else

ipoe_nl_delete(ses->ifindex);

ses->ifindex = -1;

}

/*My insert */

 

 

if (conf_ppp_verbose)

log_ppp_warn("authentication failed\n");

if (conf_l4_redirect_on_reject && !ses->dhcpv4_request && ses->ifindex != -1) {

l4_redirect_list_add(ses->yiaddr, ses->ifindex);

ses->ifindex = -1;

}

ap_session_terminate(&ses->ses, TERM_AUTH_ERROR, 0);

return;

}

}

 

 

Но не хочется при каждом обновлении править код. Да и не знаю правильно ли сделал.

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


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

посмотрю что можно сделать...

 

А l3 режим. Схема удобна тем что не надо гнать кучу vlan в ядро сети.
чтобы не гнать кучу влан, их можно сагригировать в QinQ и включить монитор вланов

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


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

чтобы не гнать кучу влан, их можно сагригировать в QinQ и включить монитор вланов

Насчёт этого знаю. Не хочется весь L2 гнать в ядро. И сеть построена l3(есть нюансы).

 

в случае L2 эти интефейсы однозначно идентифицируются по приходу дхцп пакетов

в случае L3 релейные запросы будут приходить скорее всего по одному интерфейсу, а клиентский трафик бегать по другим

если клиентский интефейс один, то задачу в принципе можно решить, если несколько, то тупик

у вас реализована схема l2 шаред, когда один родительский интерфейс и ipoeXXX клиентские. Ну и l3 режим шаред старт по не классифицированному пакету тоже есть. И эта проблемма там решена.

Во всех реализациях "железных IPOE" дшсп запросы должны приходить именно на "родительский интерфейс" иначе не работает.

Единственное необходимо разрешать трафик на dhcp релеии(указывая их) либо просто разрешать любой дшсп трафик.

У редбека se600 например, что то аналогичное вашим виртуальным интерфейсам.

Редбек

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

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


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

Вопрос к XEB по консольке accel-ppp: Имеется сервер с accel-ppp 1.7.3 есть ли возможность посмотреть подключенные абонентские сессии на конкретном интерфейсе? Т. е. аналог "show sessions" только не всех, а на каком то конкретном интерфейсе.

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


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

Join the conversation

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

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

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

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

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

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

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