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

FreeBSD 11.2 + mpd 5.8 словил странный глюк

Сегодня вечером словил странный глюк на следующей связке.

FreeBSD 11.2-RELEASE-p9

MPD version: 5.8

Клиенты подключаются по PPPOE.

Онлайна на машине в районе 1600 абонентов

 

Стали звонить под вечер клиенты с проблемой на неработающий интернет. Причем некоторые.

Стали разбираться

В результате выяснился странный глюк

 

[] show sessions ip 10.10.0.9
ng1865  10.10.0.9       C-1866  7956732-C-1866  vlan60-1137     1137    7956732-vlan60-1137     vova    54:e6:fc:fe:5d:53
ng2233  10.10.0.9       C-2234  7959914-C-2234  vlan60-2290     2290    7959914-vlan60-2290     vova    54:e6:fc:fe:5d:53
ng2151  10.10.0.9       C-2152  7960268-C-2152  vlan60-2298     2298    7960268-vlan60-2298     vova    54:e6:fc:fe:5d:53
ng2112  10.10.0.9       C-2113  7960073-C-2113  vlan60-2299     2299    7960073-vlan60-2299     vova    54:e6:fc:fe:5d:53

Почему-то перестали удаляться старые неактивные сессии клиентов. Руками удаляю все сессии - клиент подключается и работает но я так думаю это до следующего реконнекта.

 

Вот конфиг мпд (может там что-то довписать надо, хотя конфиг переносится от сервака к серваку уже долгие годы)

pppoe_server:
        create bundle template C
        set bundle disable encryption
        set bundle disable compression
        set ccp disable mppc
        set ipcp dns 8.8.8.8 1.1.1.1
        set ipcp range a.b.c.d/32 0.0.0.0/0
        set iface enable tcpmssfix
        create link template oe pppoe
        set link action bundle C
        set link disable chap pap eap
        set link enable pap chap
        set link enable peer-as-calling
        load radius

		create link template vlan2 oe
        set link max-children 1000
        set pppoe iface vlan2
        set pppoe service "*"
        set link enable incoming

......

 

Почему мпд создает ng интерфейс с тем же ип если уже такой существует? Ну и почему не удаляются старые сессии?

 

Подскажите может сталкивался кто и как побороть.

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


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

Самое обновиться до FreeBSD 12-STABLE.

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


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

2 часа назад, vlad11 сказал:

Самое обновиться до FreeBSD 12-STABLE.

 

Не ну конечно это выход НО - у меня стабильно работают уйма 9.х, 10.х, 11.х без особых проблем уйму времени. И эта машина отлично работала в течении 3-х месяцев. Должно быть решение проблемы без обновления версии. Да и STABLE версии как-то не внушают доверия еще со времен 8.х

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


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

9 часов назад, Bear_UA сказал:

Не ну конечно это выход НО - у меня стабильно работают уйма 9.х, 10.х, 11.х без особых проблем уйму времени.

И тебя не смущает:

https://www.freebsd.org/security/notices.html

https://www.freebsd.org/security/advisories.html

?

 

9 часов назад, Bear_UA сказал:

И эта машина отлично работала в течении 3-х месяцев. Должно быть решение проблемы без обновления версии. Да и STABLE версии как-то не внушают доверия еще со времен 8.х

Оно разумеется есть, всего то нужно найти багу в коде и пофиксить.

Можно и просто найти и бэкпортировать фикс из 100500 коммитов :)

 

Кроме того, вот тебе не внушает доверия а нетфликс сидит на карренте да и ещё со своими патчами :)

Правда у них есть команда погромистов которые ядро пилят.

 

Да и я всё чаще задумываюсь о переезде со stable на current даже на десктопе - дрова на амд видюху там свежее.

 

Конкретно в твоём случае похоже где то что то не очистилось, возможно у тебя упёрлось в лимит буфера сокета и сообщения гоняемые через ngctl не пролезли целиком.

Кажется maxpipekva и от netgraph что то.

в лоадере:

kern.ipc.maxpipekva="33554432"    # Pipe KVA limit

в сисцтл:

# ng_socket

net.graph.maxdgram=262144        # Maximum outgoing Netgraph datagram size / really max datagram size
net.graph.recvspace=262144        # Maximum space for incoming Netgraph datagrams /

можешь ещё больше сделать, раза в 4.

 

Можно поискать в netstat что то на предмет нетграфа и попробовать подиагностировать.

 

Обычный ребут должен помочь.

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


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

13 минут назад, Ivan_83 сказал:

Конкретно в твоём случае похоже где то что то не очистилось, возможно у тебя упёрлось в лимит буфера сокета и сообщения гоняемые через ngctl не пролезли целиком.

Кажется maxpipekva и от netgraph что то.

в лоадере:

kern.ipc.maxpipekva="33554432"    # Pipe KVA limit

в сисцтл:

# ng_socket

net.graph.maxdgram=262144        # Maximum outgoing Netgraph datagram size / really max datagram size
net.graph.recvspace=262144        # Maximum space for incoming Netgraph datagrams /

можешь ещё больше сделать, раза в 4.

 

kern.ipc.maxpipekva: 128659456

 

в сисцтл

net.graph.maxdgram=8388608
net.graph.recvspace=8388608
kern.ipc.maxsockbuf=83886080
 

 

14 минут назад, Ivan_83 сказал:

Обычный ребут должен помочь.

Ребут то помог - но надолго ли? Под 9.х/10.x с такой же настройкой NAS-ы стоят с аптаймом в несколько лет и никаких нюансов :( Только вот не поддерживаются уже и обновлений нет ни на 9.х ни на 10.х :(

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


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

3 минуты назад, Bear_UA сказал:

в сисцтл

net.graph.maxdgram=8388608
net.graph.recvspace=8388608
kern.ipc.maxsockbuf=83886080

Можно ещё в 2х увеличить.

 

4 минуты назад, Bear_UA сказал:

Ребут то помог - но надолго ли? Под 9.х/10.x с такой же настройкой NAS-ы стоят с аптаймом в несколько лет и никаких нюансов :( Только вот не поддерживаются уже и обновлений нет ни на 9.х ни на 10.х :(

Кажется нынче минимально поддерживаемое это 11.4.

Только на днях выставили метку что 12.1 пререлиз для стабле ветки.

Там процесс разработки такой: current - master ветка куда всё впиливается, дальше это стараются обкатать и бэкпортирую по возможности в stable (недели через две). А в прошлый стабле бэкпортируют только совсем-совсем важные вещи типа секурити фиксов, ну или может то что не требует усилий.

Потом всякие изменения ломающие совместимость в куренте накапливаются и становится всё сложнее в стабле бэкпортировать, тогда апают мажорную версию :)

Во всём процессе занято меньше сотни человек, я бы сказал что активных менее 50, так что тянуть даже это - уже на пределе возможностей. Это редхат может позволить себе содержать армию макак которые круглосуточно бэкпортируют всё подряд в окаменелости.

 

Как workaround можешь написать скрипты которые будут вычищать старые сессии как это делал ты руками.

Можно подобные скрипты повесить на хуки if up, if down - помнится mpd5 такое умел.

Скажем на if down ты посылаешь ngctl shutdown (или как ты их там килял) на ноду с интерфейсом, а на if up скрипт делает что то типа "[] show sessions ip 10.10.0.9" и дальше так же киляет всё что не текущий интерфейс.

 

 

PS: крайне некрасиво выдавать абонентам чужие днс, ты же сливаешь все их запросы прямиком в анб, прощай приватность.

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


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

Да, ДНС лучше, чтоб был кеширующий и локальный.

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


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

Join the conversation

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

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

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

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

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

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

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