Перейти до

Рекомендованные сообщения

Опубліковано: (відредаговано)

Lynx100,

Да я в курсе. Но всё равно не устану подковыривать ;).

на самом деле нареканий на МХ особых нет, сначала конечно глюки с IPoE были АДСКИМИ... но в послледних прошивках все стабилизировалось, работает и хлопот пока не доставляет

одно есть но - цена! строить и расширяться на МХ будет понятно гораздо дороже! НУ и когда мы запускали ipoe -  в accel-ppp функционал отсутствовал и только обговаривалось на наге в ветке с xeb как вообще оно должно функционировать.... с дешевого и  удобосъедобного был только LISG - но там подход абсолютно другой и он мне не совсем подходил, и свои какое-то самопально-костыльные решения....

 

из самопального считаю что на Cisco 3550-3560-3750 с их аннамберед в принципе можна построить  недорого и надежно ipoe... но в этой схеме надо все таки тогда дхцп сервер гибкий.... с нага перловый от Ivan83 подпиленный под себя прекрасно ложится в схему (я даже дописал радиус авторизацию к нему, криво но работала), но в этой схеме полуяается надо думать о шейпинге на отдельном тазике

 

По поводу Accel-ppp - то прикольный софт... вот сейчас буду на стенде пробовать раздавать в6....

Відредаговано Lynx100
Опубліковано: (відредаговано)

xaoc_nsk,

 

mkdir build
cd build
cmake -DBUILD_DRIVER=FALSE -DKDIR=/usr/src/linux -DCMAKE_INSTALL_PREFIX=/usr/local -DSHAPER=TRUE -DRADIUS=TRUE -DBUILD_IPOE_DRIVER=TRUE ..
make
BUILD_DRIVER - это для pptp. Для ipoe - BUILD_IPOE_DRIVER.

Обязательно собирать в отдельной директории, а не прямо в сырцах.

 

Lynx100,

Дык а я ж о глюках MX-а и не спрашивал, ты сам :-P.

На 3550 знаю даже одного провайдера - работают, вроде нормально. Дешево и мило. Но как-то не по мне. В качестве DHCP-сервера, кстати, можно использовать тот же FreeRADIUS.

IPv6 тоже думаю посмотреть, но немного позже.

Відредаговано Abram
Опубліковано: (відредаговано)

Lynx100,

На 3550 знаю даже одного провайдера - работают, вроде нормально. Дешево и мило. Но как-то не по мне. В качестве DHCP-сервера, кстати, можно использовать тот же FreeRADIUS.

На FreeRADIUS не пробовал, знаю что можна...

по ходу вопрос он в одном флаконе и раздает адреса и может авторизировать и аккаунтинг делать ?

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

 

а как с нагрузкой справляется ?

Відредаговано Lynx100
Опубліковано:

про то что в сорцах не собирать вкурсе из инструкции
 

 # cmake -DKDIR=/usr/src/linux -DCMAKE_INSTALL_PREFIX=/usr/local/src -DSHAPER=TRUE -DRADIUS=TRUE -DBUILD_IPOE_DRIVER=TRUE ..
-- The C compiler identification is GNU 4.3.4
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- 'x86_64'
-- Looking for timerfd_create
-- Looking for timerfd_create - found
-- Looking for linux/netfilter/ipset/ip_set.h
-- Looking for linux/netfilter/ipset/ip_set.h - not found
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/accel-ppp/build
 
make
 
куча ошибок типа 
/usr/local/src/accel-ppp/accel-pppd/include/log.h:45: warning: ‘gnu_printf’ is an unrecognized format function type
 
и в конце
 
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1655: error: too many arguments to function ‘dev->netdev_ops->ndo_vlan_rx_add_vid’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1683:5: warning: "LINUX_VERSION_CODE" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1683:26: warning: "KERNEL_VERSION" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1683:40: error: missing binary operator before token "("
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1700:5: warning: "LINUX_VERSION_CODE" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1700:26: warning: "KERNEL_VERSION" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1700:40: error: missing binary operator before token "("
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c: In function ‘ipoe_nl_cmd_add_vlan_mon_vid’:
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1704: error: ‘NETIF_F_HW_VLAN_CTAG_FILTER’ undeclared (first use in this function)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1705: error: too many arguments to function ‘dev->netdev_ops->ndo_vlan_rx_add_vid’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1735:5: warning: "LINUX_VERSION_CODE" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1735:27: warning: "KERNEL_VERSION" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1735:41: error: missing binary operator before token "("
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c: In function ‘ipoe_nl_cmd_del_vlan_mon’:
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1738: error: ‘ipoe_kfree_rcu’ undeclared (first use in this function)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1856:5: warning: "LINUX_VERSION_CODE" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1856:27: warning: "KERNEL_VERSION" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1856:41: error: missing binary operator before token "("
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c: At top level:
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1865: error: array type has incomplete element type
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1867: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1867: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1868: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1868: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1869: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1869: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1870: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1870: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1871: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1871: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1874: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1874: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1875: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1875: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1876: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1876: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1877: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1877: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1878: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1878: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1881: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1881: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1882: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1882: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1883: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1883: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1884: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1884: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1885: error: field name not in record or union initializer
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1885: error: (near initialization for ‘ipt_ops’)
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1920:5: warning: "LINUX_VERSION_CODE" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1920:26: warning: "KERNEL_VERSION" is not defined
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1920:40: error: missing binary operator before token "("
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c: In function ‘ipoe_init’:
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1952: error: implicit declaration of function ‘nf_register_hooks’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1952: warning: type defaults to ‘int’ in declaration of ‘type name’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1952: warning: type defaults to ‘int’ in declaration of ‘type name’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1952: error: negative width in bit-field ‘<anonymous>’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c: In function ‘ipoe_fini’:
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1978: error: implicit declaration of function ‘nf_unregister_hooks’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1978: warning: type defaults to ‘int’ in declaration of ‘type name’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1978: warning: type defaults to ‘int’ in declaration of ‘type name’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1978: error: negative width in bit-field ‘<anonymous>’
/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.c:1994: error: implicit declaration of function ‘rcu_barrier’
make[4]: *** [/usr/local/src/accel-ppp/build/drivers/ipoe/driver/ipoe.o] Error 1
make[3]: *** [_module_/usr/local/src/accel-ppp/build/drivers/ipoe/driver] Error 2
make[2]: *** [drivers/ipoe/driver/ipoe.ko] Error 2
make[1]: *** [drivers/ipoe/CMakeFiles/ipoe_drv.dir/all] Error 2
make: *** [all] Error 2
 
Опубліковано:

Ну конечно...руки кривые после установки modules Invironment на sles драйвер таки собрался)))

 

Осталось только вот что.

 

/usr/local/src/accel-ppp/accel-pppd/include/log.h:42: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:44: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:45: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:46: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:47: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:48: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:49: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:51: warning: ‘gnu_printf’ is an unrecognized format function type
/usr/local/src/accel-ppp/accel-pppd/include/log.h:52: warning: ‘gnu_printf’ is an unrecognized format function type
 
на такие ошибки внимание не обращать чтоль?
Опубліковано:

на такие ошибки внимание не обращать чтоль?

Да, это warning-и, пофигу.

 

На FreeRADIUS не пробовал, знаю что можна...

по ходу вопрос он в одном флаконе и раздает адреса и может авторизировать и аккаунтинг делать ?

Там начиная со 2 ветки логика с sites как у апача - можно слушать разные порты несколькими внутренними серверами. Ну или на крайняк запустить два экземпляра.

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

Да, самому. Мне нравится на питоне - я писал для себя работу с abills для accel-ppp. Писать надо именно логику и только логику - всю низкоуровневую работу он берет на себя.

Можно вроде без релеев, даже сам может релеем быть: https://github.com/FreeRADIUS/freeradius-server/blob/master/raddb/sites-available/dhcp.relay .

а как с нагрузкой справляется ?

У меня он только как RADIUS, но по логике - ему пофигу, зависит от твоих модулей и БД.
Опубліковано:

KaYot,

У меня раньше было похоже, но сейчас я написал для себя логику в FreeRADIUS и отказался от отдельного DHCP-сервера вообще; получилось намного проще и удобней. Хотя тебе с твоим биллингом... :)

Опубліковано:

KaYot,

У меня раньше было похоже, но сейчас я написал для себя логику в FreeRADIUS и отказался от отдельного DHCP-сервера вообще; получилось намного проще и удобней. Хотя тебе с твоим биллингом... :)

И не вспоминай, ту гору костылей уже ничем не испортить))

Опубліковано:

 

KaYot,

У меня раньше было похоже, но сейчас я написал для себя логику в FreeRADIUS и отказался от отдельного DHCP-сервера вообще; получилось намного проще и удобней. Хотя тебе с твоим биллингом... :)

И не вспоминай, ту гору костылей уже ничем не испортить))

 

А що за біллінг? Щось самописне? Чи просто якийсь біллінг допилений під вашу мережу?

Опубліковано:

И не вспоминай, ту гору костылей уже ничем не испортить))

Ну если присобачить в RADIUS модуль, который будет читать из его базы напрямую - то по крайней мере избавишься от промежуточных костылей.
Опубліковано:

 

И не вспоминай, ту гору костылей уже ничем не испортить))

Ну если присобачить в RADIUS модуль, который будет читать из его базы напрямую - то по крайней мере избавишься от промежуточных костылей.

 

А можна детальніше дізнатися за фрірадіус?

Він у вас в якості дхцп сервера виступає?

Опубліковано:

А можна детальніше дізнатися за фрірадіус?

Він у вас в якості дхцп сервера виступає?

У мене - ні, я вище писав. У мене він працює власне як RADIUS (своя логіка написана на Python), DHCP роздає accel-ppp (на основі отриманих RADIUS-атрибутів).
Опубліковано:

 

А можна детальніше дізнатися за фрірадіус?

Він у вас в якості дхцп сервера виступає?

У мене - ні, я вище писав. У мене він працює власне як RADIUS (своя логіка написана на Python), DHCP роздає accel-ppp (на основі отриманих RADIUS-атрибутів).

 

Зрозумів.

Тобто здихались непотрібного вузлу у вигляді окремого дхцп серверу.

А атрибути як виглядають? Можна приклад радіус відповіді?

Опубліковано: (відредаговано)

Зрозумів.

Тобто здихались непотрібного вузлу у вигляді окремого дхцп серверу.

А атрибути як виглядають? Можна приклад радіус відповіді?

Access-Request id=1 <User-Name "vlan1204.1456"> <NAS-Identifier "lol1"> <NAS-IP-Address 1.2.3.4> <NAS-Port 32891> <NAS-Port-Type Ethernet> <Calling-Station-Id "01:02:03:04:05:06"> <Called-Station-Id "vlan1204.1456"> <User-Password >
Access-Accept id=1 <Framed-IP-Address 10.250.42.212> <DHCP-Client-IP-Address 10.250.42.212> <Framed-IP-Netmask 255.255.255.128> <DHCP-Mask 25> <DHCP-Router-IP-Address 10.250.42.129> <Acct-Interim-Interval 60> <Filter-Id "102400/102400">
Якось отак.

Тут немає часу dhcp lease, т.я. він записаний в конфігурації accel-ppp.

Acct-Interim-Interval - це інтервал для RADIUS-запитів Interim-Update.

 

Відповідно, якщо відповісти Access-Reject - клієнт отримує NAK.

Всілякі неправильні запити (типу REQUEST-ів адреси, відмінної від тої, що є у Framed-IP-Address) accel-ppp NAK-ає сам, без участі RADIUS.

 

Абонент ідентифікується по номеру VLAN-а з User-Name.

Відредаговано Abram
Опубліковано:

 

А можна детальніше дізнатися за фрірадіус?

Він у вас в якості дхцп сервера виступає?

У мене - ні, я вище писав. У мене він працює власне як RADIUS (своя логіка написана на Python), DHCP роздає accel-ppp (на основі отриманих RADIUS-атрибутів).

 

аналогично только у меня не модуль к радиусу а модуль от биллинга
Опубліковано:

 

Зрозумів.

Тобто здихались непотрібного вузлу у вигляді окремого дхцп серверу.

А атрибути як виглядають? Можна приклад радіус відповіді?

Access-Request id=1 <User-Name "vlan1204.1456"> <NAS-Identifier "lol1"> <NAS-IP-Address 1.2.3.4> <NAS-Port 32891> <NAS-Port-Type Ethernet> <Calling-Station-Id "01:02:03:04:05:06"> <Called-Station-Id "vlan1204.1456"> <User-Password >
Access-Accept id=1 <Framed-IP-Address 10.250.42.212> <DHCP-Client-IP-Address 10.250.42.212> <Framed-IP-Netmask 255.255.255.128> <DHCP-Mask 25> <DHCP-Router-IP-Address 10.250.42.129> <Acct-Interim-Interval 60> <Filter-Id "102400/102400">
Якось отак.

Тут немає часу dhcp lease, т.я. він записаний в конфігурації accel-ppp.

Acct-Interim-Interval - це інтервал для RADIUS-запитів Interim-Update.

 

Відповідно, якщо відповісти Access-Reject - клієнт отримує NAK.

Всілякі неправильні запити (типу REQUEST-ів адреси, відмінної від тої, що є у Framed-IP-Address) accel-ppp NAK-ає сам, без участі RADIUS.

 

Абонент ідентифікується по номеру VLAN-а з User-Name.

 

Дякую, тепер зрозумів.

Опубліковано:

L1ght,

Будь ласка.

Тобто у цьому випадку accel-ppp виступає як повноцінний BRAS, з ігрищами і всім що положено.

Опубліковано:

В принципе удалось все собрать и установить. Все стартует норм.

 

Есть кто кто может подсказать по настройке? Именно ip unnumbered + qinq и автосоздание интерфейсов

Опубліковано:

Это вам лучше тему на наге почитать, там и примеры есть, и обсуждение граблей возможных. Хотя в принципе вся нужная инфа есть в accel-wiki.

Опубліковано:

Странная какая-то фигня...не вникаю. Нашел на наге запись от Xeb, что можно обойтись без radius

 

входящий vlan100 на нем инет. ип 10.28.2.29

vlan2 c ип 192.168.0.1

 

вот конфиг:

 

chap-secrets

 

[ipoe]
verbose=1
username=ifname
lease-time=600
max-lease-time=3600
shared=0
ifcfg=1
mode=L2
start=up
proxy-arp=0
proto=100
local-net=192.168.8.0/24
gw-ip-address=192.168.0.1/24
vlan-mon=re:vlan6,1002-1003
vlan-timeout=10
vlan-name=%I.%N
interface=re:vlan6\.100[2-3]
 
[chap-secrets]
gw-ip-address=192.168.0.1/24
chap-secrets=/etc/ppp/chap-secrets
 

в файле chap-secrets :

 

#client><------>hostname<------><password><---->192.168.1.1
vlan6.1002 * vlan6.1002 192.168.8.10
 
все круто, клиент авторизуется, vlan поднимается
 
и тут интересное, на vlan6.1002 вешается ип 10.28.2.29 и создается роут 
192.168.8.10 dev vlan6.1002  proto kernel  scope link  src 10.28.2.29
 
что я делаю не так.
Пытаюсь реализовать ip unnumbered + vlan per user

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Створити нове...