Jump to content
Калькуляторы

error: libnetlink: RTNETLINK answers: Cannot allocate memory

 

Это сообщение ядра линукса. Надо разбираться почему оно не может выделить память

Share this post


Link to post
Share on other sites

error: libnetlink: RTNETLINK answers: Cannot allocate memory

 

Это сообщение ядра линукса. Надо разбираться почему оно не может выделить память

 

Вспомнил, сталкивался с чем-то похожим. Решил путём увеличения vmalloc при загрузке ядра(нужно передать ядру параметр типа vmalloc=512M - через grub/lilo/uboot/ваш_загрузчик)

Share this post


Link to post
Share on other sites

Подскажите, в чём может быть проблема? Некоторые сайты не открываются периодически (pikabu.ru aliexpress.com rada.gov.ua), при этом остальные более-менее сносно работают. Сервер L2TP, логи и конфиг внизу.

Лог с ошибкой incorrect avp received

[2013-07-11 11:03:30]:  warn: l2tp: incorrect avp received (type=6, M=1, must be 0)
[2013-07-11 11:03:30]:  warn: l2tp: incorrect avp received (type=8, M=1, must be 0)
[2013-07-11 11:03:30]:  info: ppp7: connect: ppp7 <--> l2tp(172.16.227.164)
[2013-07-11 11:03:33]:  info: ppp7: nekhai: authentication succeeded
[2013-07-11 11:41:01]:  info: ppp5: disconnected
[2013-07-11 11:51:21]:  info: ppp5: connect: ppp5 <--> pptp(192.168.61.67)
[2013-07-11 11:51:24]:  info: ppp5: zubkov: authentication succeeded
[2013-07-11 11:51:24]:  warn: ppp5: IPV6CP: discarding packet
[2013-07-11 12:00:58]:  info: ppp6: disconnected
[2013-07-11 12:03:37]:  info: ppp6: connect: ppp6 <--> l2tp(192.168.134.160)
[2013-07-11 12:03:40]:  info: ppp6: meshkova: authentication succeeded
[2013-07-11 12:15:10]:  info: ppp3: disconnected
[2013-07-11 12:24:12]:  info: ppp6: disconnected
[2013-07-11 12:27:06]:  info: ppp3: connect: ppp3 <--> l2tp(192.168.134.160)
[2013-07-11 12:27:09]:  info: ppp3: meshkova: authentication succeeded
[2013-07-11 12:28:16]: error: ppp5: pptp: read: Connection timed out
[2013-07-11 12:28:16]:  info: ppp5: disconnected
[2013-07-11 12:28:41]:  info: ppp3: disconnected
[2013-07-11 12:38:07]:  info: ppp3: connect: ppp3 <--> l2tp(192.168.134.160)
[2013-07-11 12:38:10]:  info: ppp3: meshkova: authentication succeeded
[2013-07-11 12:39:41]:  info: ppp3: disconnected
[2013-07-11 12:47:48]:  info: ppp3: connect: ppp3 <--> pptp(192.168.134.160)
[2013-07-11 12:47:51]:  info: ppp3: meshkova: authentication succeeded
[2013-07-11 12:50:33]:  warn: ppp3: lcp: no echo reply
[2013-07-11 15:30:05]:  warn: l2tp: incorrect avp received (type=6, M=1, must be 0)
[2013-07-11 15:30:05]:  warn: l2tp: incorrect avp received (type=8, M=1, must be 0)
[2013-07-11 15:30:05]:  info: ppp0: connect: ppp0 <--> l2tp(172.16.226.109)
[2013-07-11 15:30:07]:  info: ppp1: connect: ppp1 <--> pptp(192.168.70.28)
[2013-07-11 15:30:08]:  info: ppp0: nekhai: authentication succeeded
[2013-07-11 15:30:08]:  info: ppp2: connect: ppp2 <--> pptp(192.168.137.56)
[2013-07-11 15:30:08]:  warn: l2tp: incorrect tid 0 in tunnel 1
[2013-07-11 15:30:10]:  info: ppp3: connect: ppp3 <--> l2tp(192.168.167.63)
[2013-07-11 15:30:10]:  info: ppp1: titov: authentication succeeded
[2013-07-11 15:30:11]:  info: ppp2: sidorov: authentication succeeded
[2013-07-11 15:30:13]:  info: ppp3: silkina: authentication succeeded
[2013-07-11 15:33:04]:  info: ppp4: connect: ppp4 <--> l2tp(192.168.134.160)
[2013-07-11 15:33:07]:  info: ppp4: meshkova: authentication succeeded
[2013-07-11 15:40:08]:  info: ppp5: connect: ppp5 <--> l2tp(172.16.227.164)
[2013-07-11 15:40:11]:  info: ppp5: 1: authentication succeeded
[2013-07-11 15:40:11]:  warn: ppp5: IPV6CP: discarding packet
[2013-07-11 15:45:38]:  info: ppp4: disconnected
[2013-07-11 15:45:45]:  warn: l2tp: incorrect avp received (type=6, M=1, must be 0)
[2013-07-11 15:45:45]:  warn: l2tp: incorrect avp received (type=8, M=1, must be 0)
[2013-07-11 15:45:45]:  info: ppp4: connect: ppp4 <--> l2tp(172.16.227.164)
[2013-07-11 15:45:48]:  info: ppp4: 1: authentication succeeded
[2013-07-11 15:55:58]:  info: ppp6: connect: ppp6 <--> l2tp(192.168.134.160)
[2013-07-11 15:56:58]:  info: ppp6: disconnected
[2013-07-11 15:58:50]:  warn: l2tp: incorrect tid 0 in tunnel 5
[2013-07-11 15:58:52]:  warn: l2tp: incorrect tid 0 in tunnel 5
[2013-07-11 15:58:54]:  info: ppp6: connect: ppp6 <--> l2tp(192.168.134.160)
[2013-07-11 15:58:57]:  info: ppp6: meshkova: authentication succeeded
[2013-07-11 16:02:28]:  info: ppp6: disconnected
[2013-07-11 16:14:30]:  info: ppp6: connect: ppp6 <--> l2tp(192.168.134.160)

 

 

Конфиг

[modules]
#path=/usr/local/lib/accel-ppp
log_file
#log_syslog
#log_tcp
#log_pgsql

pptp
l2tp
#pppoe

auth_mschap_v2
auth_mschap_v1
auth_chap_md5
auth_pap

#radius
ippool
sigchld
pppd_compat

shaper
#shaper_tbf (obsolete)
chap-secrets
#net-snmp
#logwtmp
#connlimit

#ipv6_nd
#ipv6_dhcp
#ipv6pool

[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4

[ppp]
verbose=1
min-mtu=1000
mtu=1400
mru=1400
#ccp=0
#sid-case=upper
#check-ip=0
#single-session=replace
mppe=deny
ipv4=require
ipv6=deny
ipv6-intf-id=0:0:0:1
ipv6-peer-intf-id=0:0:0:2
ipv6-accept-peer-intf-id=1
lcp-echo-interval=20
#lcp-echo-failure=3
lcp-echo-timeout=120
#unit-cache=1000

[auth]
#any-login=0
#noauth=0

[pptp]
echo-interval=30
#mppe=allow
#ip-pool=pool1
verbose=1

#[pppoe]
#interface=eth0
#interface=eth1,padi-limit=1000
#ac-name=xxx
#service-name=yyy
#pado-delay=0
#pado-delay=0,100:100,200:200,-1:500
#ifname-in-sid=called-sid
#tr101=1
#padi-limit=0
#mppe=allow
#ip-pool=pool2
#verbose=1

[l2tp]
dictionary=/usr/local/share/accel-ppp/l2tp/dictionary
hello-interval=60
timeout=60
rtimeout=5
retransmit=5
#host-name=accel-ppp
#dir300_quirk=0
#secret=
#mppe=allow
#ip-pool=pool3
verbose=1
avp_permissive=1

[dns]
dns1=109.86.2.2
dns2=109.86.2.21

[wins]
#wins1=172.16.0.1
#wins2=172.16.1.1

[radius]
dictionary=/usr/local/share/accel-ppp/radius/dictionary
nas-identifier=accel-ppp
nas-ip-address=127.0.0.1
gw-ip-address=10.10.10.1
auth-server=127.0.0.1:1812,testing123 (obsolete)
acct-server=127.0.0.1:1813,testing123 (obsolete)
server=127.0.0.1,testing123 (obsolete)
server=127.0.0.1,testing123,auth-port=1812,acct-port=1813,req-limit=0,fail-time=0
dae-server=127.0.0.1:3799,testing123
verbose=1
#timeout=3
#max-try=3
#acct-timeout=120
#acct-delay-time=0

[client-ip-range]
192.168.0.0/16
172.16.0.0/16

[ip-pool]
gw-ip-address=10.10.10.1
#vendor=Cisco
#attr=Cisco-AVPair
#attr=Framed-Pool
10.10.10.2-254
#192.168.1.1-255,pool1
#192.168.2.1-255,pool2
#192.168.3.1-255,pool3
#192.168.4.0/24

[log]
log-file=/var/log/accel-ppp/accel-ppp.log
log-emerg=/var/log/accel-ppp/emerg.log
log-fail-file=/var/log/accel-ppp/auth-fail.log
#log-debug=/dev/stdout
#syslog=accel-pppd,daemon
#log-tcp=127.0.0.1:3000
copy=1
#color=1
#per-user-dir=per_user
#per-session-dir=per_session
#per-session=1
level=3

[log-pgsql]
conninfo=user=log
log-table=log

[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

[chap-secrets]
#gw-ip-address=192.168.100.1
chap-secrets=/etc/ppp/chap-secrets
#encrypted=0
#username-hash=md5

[shaper]
#attr=Filter-Id
attr-up=230
attr-down=231
down-burst-factor=0.1
up-burst-factor=1.0
##latency=200
#mpu=0
#r2q=10
#quantum=1500
#cburst=1534
#ifb=ifb0
up-limiter=police
up-limiter=htb
down-limiter=police
down-limiter=htb
#leaf-qdisc=sfq perturb 10
#verbose=1

#tbf is obsolete, use shaper module
#[tbf]
#attr=Filter-Id
#down-burst-factor=0.1
#up-burst-factor=1.0
#latency=50

[cli]
telnet=127.0.0.1:2000
#tcp=127.0.0.1:2001
#password=123

[snmp]
master=0
agent-name=accel-ppp

[connlimit]
limit=10/min
burst=3
timeout=60

#[ipv6-pool]
#fc00:0:1::/48,64
#delegate=fc00:1::/36,48

#[ipv6-dns]
#fc00:1::1
#fc00:1::2
#fc00:1::3
#dnssl=suffix1.local.net
#dnssl=suffix2.local.net.

#[ipv6-dhcp]
#verbose=1
#pref-lifetime=604800
#valid-lifetime=2592000
#route-via-gw=1

 

 

Заранее большое спасибо за ответы.

P.S. Провайдер ничего не химичит/не режет.

Edited by serulya

Share this post


Link to post
Share on other sites

Это сообщение ядра линукса. Надо разбираться почему оно не может выделить память

 

Вспомнил, сталкивался с чем-то похожим. Решил путём увеличения vmalloc при загрузке ядра(нужно передать ядру параметр типа vmalloc=512M - через grub/lilo/uboot/ваш_загрузчик)

Спасибо, помогло, но не сильно. С 512М система просто не грузится, с 256М количество виртуальных интерфейсов повысилось до 1800. Похоже, придется ставить 64 разрядную операционку.

Share this post


Link to post
Share on other sites

Для начала попробуйте откатиться на старый конфиг железа. Дабы исключить проблемы с железом или несовместимостью (типа проц более другого степпинга или на другом ядре не совсем корректно инициализируется зашитым в мать биосом).

И да логи перед висом в студию какбы.

В логах абсолютно нормальная картина, ничего неожиданного, просто обрывается.

Share this post


Link to post
Share on other sites

Спасибо, помогло, но не сильно. С 512М система просто не грузится, с 256М количество виртуальных интерфейсов повысилось до 1800. Похоже, придется ставить 64 разрядную операционку.

 

до вроде можно было больше чем 256М сделать на x86(32), не помню от чего оно зависит

 

для тестирования с большим кол-вом интерфейсов лучше использовать ядра посвежее, чем во многих популярных дистрибутивах, обсуждение пробегало на форуме (http://forum.nag.ru/forum/index.php?showtopic=76343 )

Share this post


Link to post
Share on other sites

[2013-03-26 15:10:37]: info: ppp0: connect: ppp0 <--> pptp(10.0.20.5)

[2013-03-26 15:10:40]: error: libnetlink: RTNETLINK answers: No such device

[2013-03-26 15:10:40]: warn: ppp0: failed to get interface statistics

[2013-03-26 15:10:41]: info: ppp0: disconnected

выдает при значении мин мту 1490

Share this post


Link to post
Share on other sites

пптп? с мту 1490? и чо, оно должно работать по эзернету с мту 1500, при длинне заголовков-то в 26 байт? :) или у вас там мту сетевух таки не 1500, а поболее?

Share this post


Link to post
Share on other sites

1340 у меня mtu... А вообще - потюнил ядро, поотключал энергосбережение - вон, стоит 4-ре сервера, до 3к коннектов не напрягаясь ;)

Share this post


Link to post
Share on other sites

Итак, попинал немного IPoE в связке с перепиленным в черновом варианте абиллсом (может, кому-то тоже помогут наблюдения).

Результат: при выдаче биллингом access-accept, пустого, аксель вполне подхватывает локальный пул. Как вариант для редиректа должников/неведомых/прочих без особой перепилки - пойдет. Хотя можно и отдельный пул наваять в биллинге (так, пожалуй, будет правильнее - благое дело несложно).

Сессия с именем ифейса появляется в админке. Завтра уже буду думать над допиливанием аккаунтинга и т.п.

 

Собссно возник вопрос: можно ли реализовать DHCPNAK по DM? Если не ошибаюсь, это должно инициализировать обновление лизы. Во всяком случае, хуже не станет.

 

И да, как вариант костылика для упрощения интеграции с биллинговыми системами - может, стоит предусмотреть смену User-Name радиусом? Хотя, в принципе, не критично.

Share this post


Link to post
Share on other sites

Собссно возник вопрос: можно ли реализовать DHCPNAK по DM? Если не ошибаюсь, это должно инициализировать обновление лизы.

 

Нельзя просто взять и послать NAK. По RFC NAK можно посылать только в ответ на dhcp-запрос от клиента.

 

может, стоит предусмотреть смену User-Name радиусом?

А это как вообще? Запилить функционал radiusproxy в accel-ppp?

Share this post


Link to post
Share on other sites

Нельзя просто взять и послать NAK. По RFC NAK можно посылать только в ответ на dhcp-запрос от клиента.

Пример: в сети 2 дхцп сервера, клиент получает ип от одного, на втором - записи нет и сервер шлет NAK, и клиент тут же теряет лизу. Справедливо для винды ХР, думаю, и для других виндов прокатит.

В худшем случае - клиент проигнорит пакет (если следует букве RFC).

 

А это как вообще? Запилить функционал radiusproxy в accel-ppp?

Не-не-не, если радиус возвращает изменившийся User-Name - обновить аттрибут для сессии. Для IPoE - как по мне было бы весьма полезно.

Share this post


Link to post
Share on other sites

Не-не-не, если радиус возвращает изменившийся User-Name - обновить аттрибут для сессии. Для IPoE - как по мне было бы весьма полезно.

 

И зачем это нужно? Вам не всё равно как будут называться сессии? idXXXXXX или vlan2.vlan3

 

 

Пример: в сети 2 дхцп сервера, клиент получает ип от одного, на втором - записи нет и сервер шлет NAK, и клиент тут же теряет лизу. Справедливо для винды ХР, думаю, и для других виндов прокатит.

В худшем случае - клиент проигнорит пакет (если следует букве RFC).

 

Я всё равно не понимаю эту ситуацию. Кто является dhcp-сервером? (сторонний dhcp-сервер в L2-сегменте с абонентом или доступен через relay или сам accel-ppp?)

Share this post


Link to post
Share on other sites

И зачем это нужно? Вам не всё равно как будут называться сессии? idXXXXXX или vlan2.vlan3

В CLI к примеру рулить удобнее будет. Хоть и редко надо. + меньше биллинг кому-то перепиливать будет.

 

Я всё равно не понимаю эту ситуацию. Кто является dhcp-сервером? (сторонний dhcp-сервер в L2-сегменте с абонентом или доступен через relay или сам accel-ppp?)

В данном примере из жизни - просто 2 сервера через рилеи. От одного клиент получает лизу, второй инициирует ее сброс и обновление. Т.е. - NAK вполне можно попробовать прикрутить для обрыва сессии.

Хотя намеренно эксперимент на стенде еще не ставил...

Share this post


Link to post
Share on other sites

NiTr0

Не будет реакции на NAK, если dhcp-клиент ничего не запрашивал, т.е. мгновенный реализовать "сброс сессии" и уведомить об этом клиента через CoA не получится. Делайте lease time=60sec и будет keepalive в 30сек по аналогии с ppp lcp

 

В CLI к примеру рулить удобнее будет. Хоть и редко надо. + меньше биллинг кому-то перепиливать будет.

 

Т.е. у вас бизнес-процесс оказания саппорта кастомеров начинается с CLI браса, а не с билиинга? (не говоря уж про то, что многие операторы делают гуй, в котором по номеру договору(или другому идентификатору абонента) выводится всё сразу - от блокировок и баланса и заканчивая наличием линка/мак-адреса на порту доступа)

 

+ меньше биллинг кому-то перепиливать будет.

 

а чё его перепиливать-то? переименовал названия учётных записей и все дела. всё равно же придётся делать сопоставления "логин"<->opt82/dot1q/QinQ

Share this post


Link to post
Share on other sites

Не будет реакции на NAK, если dhcp-клиент ничего не запрашивал, т.е. мгновенный реализовать "сброс сессии" и уведомить об этом клиента через CoA не получится.

Ок, проверю сегодня.

 

Т.е. у вас бизнес-процесс оказания саппорта кастомеров начинается с CLI браса, а не с билиинга?

Нет. Но для отладки/запа сессий на брасе - удобнее.

 

а чё его перепиливать-то? переименовал названия учётных записей и все дела. всё равно же придётся делать сопоставления "логин"<->opt82/dot1q/QinQ

Перепилить и авторизацию, и аккаунтинг. Не критично в принципе, у меня-то уже перепилено, но сам факт...

Share this post


Link to post
Share on other sites

У меня уже лет так 7 два dhcp сервера в релеях. И что то не вижу сбросов адресов после получения )

Share this post


Link to post
Share on other sites

Оба авторитативных, и при этом - часть абонов на одном, а часть на другом?

Share this post


Link to post
Share on other sites

сервера с идентичной конфигурацией, оба авторитативны. В каждой подсети существует так называемый "гостевой диапазон" - в нем нет привязки по маку, обычные адреса клиентов привязаны по макам.

Работает уже около 7 лет. Никаких dhcp failover и т.п. не настраивал (пробовали вначале, но пришли к выводу что не сильно то и надо)

[martin@dhcp1 ~]$ ll -h /etc/dhcpd.conf

-rw-r--r-- 1 root root 2,7M Июл 23 17:40 /etc/dhcpd.conf

[martin@dhcp1 ~]$

 

конфиг генерится раз в 5 минут, сервера с такой же периодичностью ходят за ним через rsync. Если контрольная сумма конфига поменялась - сервис перестартовывается.

 

От какого именно сервера клиент получил адрес - значения не имеет.

Share this post


Link to post
Share on other sites

А я говорю о ситуации, когда один сервер отправляет АСК, а второй, чуть погодя - NAK.

Share this post


Link to post
Share on other sites

А я говорю о ситуации, когда один сервер отправляет АСК, а второй, чуть погодя - NAK.

 

Ну так проверьте что будет, потом нам расскажите. Я уже поделился своими практическими наблюдениями. Если клиент не ждёт что-то от сервера(в вашем примере, если ACK ушёл в юзерленд раньше, чем NAK), то и не воспринимает никак эти сообщения.

Share this post


Link to post
Share on other sites

Хм, поигрался с пакетами - не получается ничего внятного. Попробую на досуге таки собрать стенд, и смоделировать наблюдаемую ранее ситуацию на нем.

Share this post


Link to post
Share on other sites

внимание вопрос - а почему второй nak отправит то?

Share this post


Link to post
Share on other sites

martin74

Допустим у вас 2 accel-pppd работающие как IPoE L2-connected. Если один выдаст адрес, то второй, после получения access-reject от радиус-сервера(в предположении, что мультилогин запрещён) ответит NAK

Edited by srg555

Share this post


Link to post
Share on other sites

Вот это у меня пока и одно из препятствий на пути внедрения IPoE. Я не могу придумать, как его корректно сбалансировать на несколько брасов ;)

ЗЫ. Использовать один брас не предлагать ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now