s.lobanov Опубликовано 19 марта, 2014 · Жалоба Есть опция tr101=1. Формат посмотрите сами Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 19 марта, 2014 (изменено) · Жалоба 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 . все режет !! Спасибо) Изменено 19 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 19 марта, 2014 · Жалоба accel передает NAS-Port-Type = Virtual, а для PPPoE вроде должно быть Ethernet , PPP вроде как должно быть, не? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 19 марта, 2014 · Жалоба accel передает NAS-Port-Type = Virtual, а для PPPoE вроде должно быть Ethernet , PPP вроде как должно быть, не? У меня в MPD при подключении PPPoE NAS-Port-Type=Ethernet, а при подключении L2TP/PPTP NAS-Port-Type=Virtual . Может и не верно, вот и хочу спросить у Xeb. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 19 марта, 2014 · Жалоба 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-а) - приходит ли что-нибудь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 19 марта, 2014 (изменено) · Жалоба 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 Изменено 19 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 19 марта, 2014 · Жалоба Можно ли заюзать ATTRIBUTE L4-Redirect 242 integer для PPPoE? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 19 марта, 2014 · Жалоба Судя по исходникам, нет Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
brodayga Опубликовано 19 марта, 2014 · Жалоба Работает ли аксел в режиме IPOE l3 DHCP по схеме: пользователь-> коммутатор -> маршрутизатор-релей -> аксел или пользователь-> коммутатор -> маршрутизатор-релей -> аксел(релей) -> dhcp сервер Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 19 марта, 2014 · Жалоба в словаре добавил ATTRIBUTE PPPD-Redirect-Attribute 9999 integer По идее, должно быть достаточно. Естественно, это должно быть добавлено в словарь с двух сторон. Включите дебаг и смотрите в лог, accel должен писать, что ему приходит. Если пришёл атрибут, которого нет в словаре - об этом сообщается отдельно. Если нет ни одного, ни другого - значит, атрибут не приходит. Работает ли аксел в режиме IPOE l3 DHCP по схеме: пользователь-> коммутатор -> маршрутизатор-релей -> аксел или пользователь-> коммутатор -> маршрутизатор-релей -> аксел(релей) -> dhcp сервер Как попросите, так и работает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
brodayga Опубликовано 19 марта, 2014 · Жалоба Как попросите, так и работает. Ну может не правильно прошу но аксел 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 завелось без проблем. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 19 марта, 2014 (изменено) · Жалоба в словаре добавил 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 Изменено 19 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 19 марта, 2014 · Жалоба [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 Нет, не нужно. Повторяю третий раз для тех, кто в танке: проверьте, приходит ли такой атрибут вообще. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xeb Опубликовано 19 марта, 2014 · Жалоба тестирую 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 подставлять в первую очередь я не думаю, что это будет не правильно. Поправте если ошибаюсь. не совсем понял в чём проблема, опиши конкретно кому какие адреса выдаются Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xeb Опубликовано 19 марта, 2014 · Жалоба roysbike, надо указать в конфиге [radius] verbose=1 [log] level=4 и посмотреть что в логе Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xeb Опубликовано 19 марта, 2014 · Жалоба 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 маршрутизировать ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xeb Опубликовано 19 марта, 2014 · Жалоба ATTRIBUTE PPPD-Redirect-Attribute 9999 integer атрибута с номер 9999 быть не может, 1-255 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 19 марта, 2014 · Жалоба У меня в MPD А с каких пор MPD стал стандартом? :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 20 марта, 2014 · Жалоба У меня в MPD А с каких пор MPD стал стандартом? :) я не утверждал, заметьте) Я спросил, может оно и так не верно, хотел спросить, как верно то?) ATTRIBUTE PPPD-Redirect-Attribute 9999 integer атрибута с номер 9999 быть не может, 1-255 ВОт где я лоханулся. Все работает! Спасибо ! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
brodayga Опубликовано 20 марта, 2014 (изменено) · Жалоба насчёт маршрутизатора-релея не понял, как он собирается L2 маршрутизировать В том то и дело что не l2,тут вопросов пока не возникло и в этой схеме никаких маршрутизаторов - релеев нет :) А l3 режим. Схема удобна тем что не надо гнать кучу vlan в ядро сети. По такой схеме настраивал se600, cisco asr. просто из документации сделал вывод что аксел тоже может. Функциональное отличие L2 от L3, заключается в том что в случае L2 входящий пакет будет проверяться на совпадение mac адреса установленного при старте сессии, а исходящие пакеты будут отправляться прямиком на этот mac адрес, без дополнительных запросов ARP, что обеспечивает защиту от подмены IP/mac адресов. В случае L3 исходящий пакет будет маршрутизироваться согласно установленным правилам маршрутизации. А реализовать L3 режим со стартом по DHCP не планируете? Изменено 20 марта, 2014 пользователем brodayga Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xeb Опубликовано 20 марта, 2014 · Жалоба А реализовать L3 режим со стартом по DHCP не планируете? изначально планировался, но в ходе реализации возникли определённые вопросыпоясню немного в чём функция и как работает accel: его функция, помимо всего прочего, заключается в предоставлении, либо отказе прохождения клиентского трафика куда-то далее, решается это методом добавления маршрутов до клиентских ип на заданные интерфейсы в случае L2 эти интефейсы однозначно идентифицируются по приходу дхцп пакетов в случае L3 релейные запросы будут приходить скорее всего по одному интерфейсу, а клиентский трафик бегать по другим если клиентский интефейс один, то задачу в принципе можно решить, если несколько, то тупик Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
brodayga Опубликовано 20 марта, 2014 · Жалоба 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; } } Но не хочется при каждом обновлении править код. Да и не знаю правильно ли сделал. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
xeb Опубликовано 20 марта, 2014 · Жалоба посмотрю что можно сделать... А l3 режим. Схема удобна тем что не надо гнать кучу vlan в ядро сети. чтобы не гнать кучу влан, их можно сагригировать в QinQ и включить монитор вланов Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
brodayga Опубликовано 20 марта, 2014 (изменено) · Жалоба чтобы не гнать кучу влан, их можно сагригировать в QinQ и включить монитор вланов Насчёт этого знаю. Не хочется весь L2 гнать в ядро. И сеть построена l3(есть нюансы). в случае L2 эти интефейсы однозначно идентифицируются по приходу дхцп пакетов в случае L3 релейные запросы будут приходить скорее всего по одному интерфейсу, а клиентский трафик бегать по другим если клиентский интефейс один, то задачу в принципе можно решить, если несколько, то тупик у вас реализована схема l2 шаред, когда один родительский интерфейс и ipoeXXX клиентские. Ну и l3 режим шаред старт по не классифицированному пакету тоже есть. И эта проблемма там решена. Во всех реализациях "железных IPOE" дшсп запросы должны приходить именно на "родительский интерфейс" иначе не работает. Единственное необходимо разрешать трафик на dhcp релеии(указывая их) либо просто разрешать любой дшсп трафик. У редбека se600 например, что то аналогичное вашим виртуальным интерфейсам. Редбек Изменено 20 марта, 2014 пользователем brodayga Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ua_mister Опубликовано 20 марта, 2014 · Жалоба Вопрос к XEB по консольке accel-ppp: Имеется сервер с accel-ppp 1.7.3 есть ли возможность посмотреть подключенные абонентские сессии на конкретном интерфейсе? Т. е. аналог "show sessions" только не всех, а на каком то конкретном интерфейсе. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...