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

brodayga

Пользователи
  • Публикации

    61
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем brodayga


  1. Da, rabotaet. Vklucheno po umulchaniu.

    Спасибо, Проблемма была в "Warning Application - Link down on port 0"

     

    Еще вопрос как я понимаю для extfilter в скрипте zapret нет необходимости резолвить ?

  2. а что выступает в роли dhcp сервера?

    У FIGO Проблема в том что порт 15 а в опции

    Agent information{82}=
       sub{1}={000405F70111}
    

    Номер порта hex11 = 17

    ДШСП Сервер тут не причём. Циска вставляет не номер порта а внутренний номер интерфейса, как я понимаю, и необходимо заставить вставлять номер порта.

  3. схема

     

    dhcp-server <--10port vlan 11,12,20>  orion A10  <vlan 12,20 9port--26port vlan 12,20>  orion A26 <vlan 12 1port--> dhcp клиент

     

    если на A10 просто прогнать влан то клиент получает адрес.

    Но,если на a10

    create vlan 11,12,20 active
    
    interface port 1
    switchport access vlan 11
    switchport access egress-allowed vlan remove 1
    ip dhcp snooping information option vlan-list 11
    
    !
    interface port 9
    switchport trunk allowed vlan 12,20
    switchport trunk untagged vlan remove 1
    switchport mode trunk
    ip dhcp snooping trust
    !
    interface port 10
    switchport trunk allowed vlan 11,12,20
    switchport trunk untagged vlan remove 1
    switchport mode trunk
    ip dhcp snooping trust
    
    !
    ip dhcp snooping
    ip dhcp snooping information option
    ip dhcp information option remote-id string 192.168.10.11
    

    То клиент перестаёт получать адрес,

    в дебаге на a26

    
    DHCPS PACKET: inserted an option 82(subscriber-id 00:06:00:0C:01:00:00:01 remote
    -id 31:39:32:2E:31:36:38:2E:32:30:33:2E:34:32) into this request packet(type:1), new packet length 315
    %Jan 18 20:39:30 2006 DHCPS: rcv packet from client e8-11-32-67-38-0b,
     interface Ethernet1/1(portID 0x1000001), length 361,
     type DHCPDISCOVER, opcode BOOTREQUEST, stacking 0
    
    %Jan 18 20:39:30 2006 DHCPS: flood dhcp pkt from Ethernet1/1 dst mac ff-ff-ff-ff-ff-ff
            to all up port except input port Ethernet1/1 in vlan 12
    %Jan 18 20:39:30 2006 DHCPS: do binding info from client e8-11-32-67-38-0b,
            interface Ethernet1/1, type DHCPDISCOVER, flag 0
    %Jan 18 20:39:31 2006 The value of the segment iph->tot_len 306 is not equal to skb->len 334
    %Jan 18 20:39:31 2006 DHCPS:dhcpSnoopingCheckIPUDPheader failed, return (-4)!
    

    При этом в логе дшсп сервера опции именно A26

     

     

    Отключаю всё что касаемо DHCP snooping на a10 то на a26 всё ок:

     

    DHCPS PACKET: inserted an option 82(subscriber-id 00:06:00:0C:01:00:00:01 remote
    -id 31:39:32:2E:31:36:38:2E:32:30:33:2E:34:32) into this request packet(type:1),
    new packet length 315
    %Jan 18 20:43:04 2006 DHCPS: rcv packet from client e8-11-32-67-38-0b,
            interface Ethernet1/1(portID 0x1000001), length 361,
            type DHCPDISCOVER, opcode BOOTREQUEST, stacking 0
    %Jan 18 20:43:04 2006 DHCPS: flood dhcp pkt from Ethernet1/1 dst mac ff-ff-ff-ff
    -ff-ff
            to all up port except input port Ethernet1/1 in vlan 12
    %Jan 18 20:43:04 2006 DHCPS: do binding info from client e8-11-32-67-38-0b,
            interface Ethernet1/1, type DHCPDISCOVER, flag 0
    %Jan 18 20:43:05 2006 DHCPS PACKET: stripped an option 82 from this reply packet
    (type:2), new packet length 300
    %Jan 18 20:43:05 2006 DHCPS: rcv packet to client e8-11-32-67-38-0b,
            interface Ethernet1/26(portID 0x100001A), length 346,
            type DHCPOFFER, opcode BOOTREPLY, stacking 0
    %Jan 18 20:43:05 2006 DHCPS: Get send port Ethernet1/1 for DHCP reply unicast pa
    cket
           for dhcp client e8-11-32-67-38-0b in vlan 12
    

    Ну и далее весь процес получения. Клиент получил адрес.

     

    С A10 в 1 порту (11 влан) клиент получает адреса.

  4. Возможно ли подключить inelt 500lt, если да то можно показать распиновку?

    ЕРД умеет снимать параметры с УПС'ов по протоколу мегатек.

    Схема подключения обычно такая:

    ERD     -> UPS
    3 (Tx)  -> 3 (Rx)
    4 (Rx)  -> 2 (Tx)
    10 (GND)-> 5 (GND)
    

     

    Так же некоторым моделям УПС требуется дополнительное питание порта RS-232, которое можно подключить с 2 контакта 10-контактного разъёма ЕРД.

     

    2 -> 7 (+5V)

     

    Спасибо.

    не хватало

    2 -> 7 (+5V)

    всё заработало.

  5. Давно не просматривал форум. Всплывал вопрос по l3 который интересен мне.

    тут выше уже обсуждалось, но я так и не понял до конца как оно должно работать

    клиенты находятся за каким-то маршрутизатором, который релеит дхцп запросы ?

    Именно так

    в режиме L2 accel при старте сессии добавляет до клиента маршрут на интерфейс с которого пришел дхцп запрос

    в случае L3 получается маршрут нужно добавлять через этот релейный маршрутизатор ? тогда нужно знать его ип, тогда нужны новые опции в конфиге ... или может быть его ип соотвествует giaddr

    В случае L3 маршрутизируется в в соответствии с таблицей маршрутизации.

  6. При авторизации <NAS-Port 7>

    а при аккаунтинге <NAS-Port 190>

    По идее так не должно быть.

    commit 33bdf4071ab9db915aa069ef69176f3e4b57484e
    Author: Dmitry Kozlov <xeb@mail.ru>
    Date:   Fri Apr 11 13:04:54 2014 +0400
    
    ipoe: early allocate interface for shared vlans (prevents different values of NAS-Port in Access-Request and Account-Request)
    

    Спасибо

  7. если включено nat=1, то адрес выданный дхцп клиенту через внешний дхцп сервер, локальный поинтерфейный пул или радиусом через атрибут attr-dhcp-client-ip считаются локальными

    при этом, адрес выданный через ip-pool или радиусом через атрибут Framed-IP-Address считается внешним

    так-же нужно указать в конфиге через опции local-net сети которые являются локальными, к которым, соотвественно, не будет применяться нат

    Изначально то что вешал 192.168.5.2 разобрался - экспериментировал с выдачей по радиусу framed-pool и забыл убрать.

    убрал он теперь вешает адрес из первого пула.

     

     

    Конфиг

    [ipoe]
    verbose=10
    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=L2
    start=dhcpv4
    proxy-arp=0
    nat=1
    local-net=192.168.5.0/24
    interface=eth3,mode=L2,relay=192.168.0.111,giaddr=192.168.3.1
    
    

    ответ радиуса

    [2014-03-25 18:35:34]:  info: eth3: recv [RADIUS(1) Access-Accept id=1 <Acct-Interim-Interval 60> <Service-Type Framed-User> <Framed-Protocol PPP> <PPPD-Down
    stream-Speed-Limit 1200> <PPPD-Upstream-Speed-Limit 1200> <Vendor-Specific > <Vendor-Specific >]
    

    DHCP ответ клиенту
    send [DHCPv4 Ack xid=dad46773 yiaddr=192.168.5.253 chaddr=00:0c:42:89:64:01 <Message-Type Ack> <Server-ID 192.168.5.1> <
    Lease-Time 660> <Router 192.168.5.1> <Subnet 255.255.255.0> <Relay-Agent {Agent-Circuit-ID eth3} {Agent-Remote-ID accel-pppd}> <Relay-Agent {Agent-Circuit-ID
    eth3} {Agent-Remote-ID accel-pppd}>]

     

     

    ip a show dev ipoe0
    ipoe0: <POINTOPOINT,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc tbf state UNKNOWN qlen 100
       link/ether a0:36:9f:2c:f0:4b peer ff:ff:ff:ff:ff:ff
       inet 192.168.5.1 peer 192.168.0.2/32 scope global ipoe0
    
    

     

     

     

    ippool подключён в модулях

    и есть конфиг он из него и выдает на нат.

    Если его отключить тогда не вешает,но тогда pool нельзя будет использовать нигде.

    [ip-pool]
    gw-ip-address=192.168.0.1
    attr=Framed-Pool
    192.168.0.2-255
    192.168.1.1-255,name=pool1
    192.168.2.1-255,name=pool2
    192.168.3.1-255,name=pool3
    192.168.4.0/24

     

     

     

    всё разобрался, надо оставить только именованные пулы.

  8. Xeb не совсем понятна функция нат.

    из доки

    Если радиус (или локальный пул) выдаст внешний ип, то он будет назначен на этот псевдоинтерфейс и с помощью него будет осуществляться NAT.
    

    Не совсем понятно как аксел определяет это внешний или локальный адрес. но судя по всему пока не включишь недокументированную nat=1 ничего не происходит.

    После включения нат работает, но как я понял для всех адресов локальный или внешний без разницы.

    Но:

    Если использовать внешний DHCP сервер то например

    сервер выдал адрес 192.168.5.254, а на ipoe0 назначается адрес 192.168.5.2 и осуществляется нат.

    клиент получил адрес 192.168.5.254 аксел его натит в 192.168.5.2

    Если используется внутренний dhcp то всё нормально.

  9. спасибо, у вас приходит в radius NAS-Port-Id = ? В словарях accel есть, а в радиус не прилетает .

    Можно так

    [pppoe]

    ifname-in-sid=called-sid

     

     

    в радиусе будет что то типо

    Called-Station-Id=eth1.3002:00:02:55:53:10:6d

     

     

    А NAS-Port-Id вроде как нет.

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

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

     

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

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

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

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

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

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

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

    Редбек

  11. 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;

    }

    }

     

     

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

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

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

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

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

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

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

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

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

    Ну может не правильно прошу но аксел 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 завелось без проблем.

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

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

    или

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

  15. т.е 2000, 3000, 4000 - это на самом деле номера радиус-атрибутов, а не скорость в кб?

    нет это скорости

    ATTRIBUTE Filter-Id 11 string

     

    Любой атрибут. Главное чтоб он был в словаре или добавлен в словарь.

    какой атрибут использовать

    attr=Filter-Id

     

     

     

    Пример ответа радиуса

    Type=AUTHENTICATION_ACCEPT
    Attributes:
    Acct-Interim-Interval=120
    Service-Type=2
    Framed-Protocol=1
    Filter-Id=1000
    Filter-Id=1,2000
    Filter-Id=2,3000
    Filter-Id=3,4000
    

     

    можно сделать и отправлять

    attr=PPPD-Downstream-Speed-Limit

    тогда будет

    Type=AUTHENTICATION_ACCEPT
    Attributes:
    Acct-Interim-Interval=120
    Service-Type=2
    Framed-Protocol=1
    PPPD-Downstream-Speed-Limit=1000
    PPPD-Downstream-Speed-Limit=1,2000
    PPPD-Downstream-Speed-Limit=2,3000
    PPPD-Downstream-Speed-Limit=3,4000

     

    только PPPD-Downstream-Speed-Limit нет в словарях аксела и его нужно будет добавить.

  16. Здравствуйте, честно прошерстил форум, ответа не нашел.

    Используем связку Lanbilling+Accel-pppd. Сейчас используем встроенный в accel-pppd шейпер. На нем бы и остались пожалуй.

    Планируем запустить ночное удвоение скорости. Ланбиллинг умеет передавать радиус-атрибуты для accel-pppd. Сейчас он передает параметры скорости, которая постоянна в любое время суток. Здесь - http://sourceforge.net/apps/trac/accel-ppp/wiki/ShaperAdvanced - расписано, как использовать разные скорости в разное время суток, но эти скорости жестко задаются в файле конфигурации. Есть ли возможность использовать радиус-атрибуты для задания скорости по временным промежуткам? Ну, например, как-то так:

    attr=Filter-Id

    time-range=1,1:00-3:00

    time-range=2,3:00-5:00

    time-range=3,5:00-7:00

    Filter-Id=1,PPPD-Downstream-Speed-Limit

    Filter-Id=2,PPPD-Downstream-Speed-Limit-1

    Filter-Id=3,PPPD-Downstream-Speed-Limit-2

     

     

    [shaper]

    attr=Filter-Id

    time-range=1,1:00-3:00

    time-range=2,3:00-5:00

    time-range=3,5:00-7:00

     

    и передавать

    в аксепте три атрибута

    Filter-Id=2000

    Filter-Id=1,2000

    Filter-Id=2,3000

    Filter-Id=3,4000

  17. тестирую 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 подставлять в первую очередь я не думаю, что это будет не правильно.

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

  18. Опять вопрос к Xeb.

    Не планировали добавить в запросы радиуса IPOE(авторизации и аккаунтинга) remoteId и circutid, по аналогии с tr101.

     

    Например

    У cisco ASR это

    (с вендором и атрибутом тут всё понятно)

    cisco-avpair=circuit-id-tag=000407d00018

    cisco-avpair=remote-id-tag=010931302e31312e342e33

     

    у redback

    vendor 2352

    String 96 Agent-Remote-Id

    String 97 Agent-Circuit-Id

     

    Agent-Remote-Id=00060022B004515D

    Agent-Circuit-Id=000400DE0019

     

    и у первого и у второго присутствуют эти атрибуты и в авторизации и в аккаунтинге. И эти атрибуты просто копируются из dhcp опций.