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

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 интерфейс с тем же ип если уже такой существует? Ну и почему не удаляются старые сессии?

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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 что то на предмет нетграфа и попробовать подиагностировать.

 

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

Share this post


Link to post
Share on other sites

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.х :(

Share this post


Link to post
Share on other sites

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: крайне некрасиво выдавать абонентам чужие днс, ты же сливаешь все их запросы прямиком в анб, прощай приватность.

Share this post


Link to post
Share on other sites

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

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