Будет время - погляжу. Только в контекте mpd локальными адресами являются адреса на интерфейсе ng0, соответствующие серверу, а не клиенту, клиентские адреса по отношению к серверу - удаленные. Не для всякого типа подключения определен IP клиента, например, для PPPoE определен MAC клиента, а не IP. Вам для которого типа это потребовалось?
Мы используем PPTP и L2TP. По идее, в mpd уже все есть, так как адрес с которого клиент соединился отправляется в радиус и в биллинге отображается.. Было бы удобно видеть полную цепочку прям в descripton. Буду признателен за помощь!
В set iface description для внешних адресов интерфейсов ngX добавлены новые шаблоны: %o для локального адреса (самого роутера), %O для удаленного адреса (клиента). Это не ноль (0), это первая буква в слове "outer".
Обнаружился нюанс. Не отображает ip локального адреса (%o) в случае l2tp. При использовании pptp все показывает. Не то чтобы это было сильно критично, но для порядка. %P и %O работает в обоих случаях.
Так и должно быть. BSD sockets API позволяет приложению узнать локальный IP соединения для TCP (используется для управляющего соединения PPtP), но не для UDP (используется в L2TP), если при создании сокета было указано принимать подключение на любой адрес. Если в конфигурации указать команду set l2tp self, то %o и в случае l2tp будет показывать адрес.
Некоторые программы типа ntpd или named, которым всё-таки нужно определять локальный IP, используют сложную логику для обхода этого недостатка API: они определяют все IP-адреса в системе и создают не один сокет, принимающий соединения на любой адрес, а по одному сокету на каждый IP, принимающие соединения каждый на свой адрес. Таким образом они узнают, на который IP пришло подключение в зависимости от того, который серверный сокет его породил. Плюс им приходится мониторить изменения набора IP в системе, чтобы открывать новые серверные сокеты для новых адресов IP. Всей этой логики в mpd нет и добавлять её было бы слишком инвазивно. И я вообще не уверен, что она нужна в mpd.
Согласен, такие сложности не нужны, тем более, если можно указать ip в конфиге. Значит все работает штатно.
Еще такой вопрос, не совсем по данной конкретной теме: есть проблема с l2tp и роутерами. Вот здесь тема подробно обсуждается (хотя и старая, но решения нет) http://bit.ly/1LUwxQO Вкратце, с компа (win) при отключеном ipsec l2tp работает нормально, а вот с роутера - соединение устанавливается, но стоит открыть через роутер пару страниц, связь пропадает, при этом пир продолжает висеть. Логи по ссылке есть, на самой свежей версии ситуация аналогичная. В какую сторону стоит копать, не посоветуете?
Сложно ли добавить еще параметр, скажем, %f, который будет заменяться на локальный ip?
Спасибо!
Reply
Reply
Reply
cd /usr/ports/net/mpd5/files
fetch http://www.grosbein.net/freebsd/patches/mpd5/patch-iface-addr.c
cd ..
make clean all deinstall install
В set iface description для внешних адресов интерфейсов ngX добавлены новые шаблоны: %o для локального адреса (самого роутера), %O для удаленного адреса (клиента). Это не ноль (0), это первая буква в слове "outer".
Reply
Reply
Reply
Некоторые программы типа ntpd или named, которым всё-таки нужно определять локальный IP, используют сложную логику для обхода этого недостатка API: они определяют все IP-адреса в системе и создают не один сокет, принимающий соединения на любой адрес, а по одному сокету на каждый IP, принимающие соединения каждый на свой адрес. Таким образом они узнают, на который IP пришло подключение в зависимости от того, который серверный сокет его породил. Плюс им приходится мониторить изменения набора IP в системе, чтобы открывать новые серверные сокеты для новых адресов IP. Всей этой логики в mpd нет и добавлять её было бы слишком инвазивно. И я вообще не уверен, что она нужна в mpd.
Reply
Еще такой вопрос, не совсем по данной конкретной теме: есть проблема с l2tp и роутерами. Вот здесь тема подробно обсуждается (хотя и старая, но решения нет) http://bit.ly/1LUwxQO Вкратце, с компа (win) при отключеном ipsec l2tp работает нормально, а вот с роутера - соединение устанавливается, но стоит открыть через роутер пару страниц, связь пропадает, при этом пир продолжает висеть. Логи по ссылке есть, на самой свежей версии ситуация аналогичная. В какую сторону стоит копать, не посоветуете?
Reply
Похоже на проблемы с CCP (компрессией/шифрованием). Первым делом почитать http://dadv.livejournal.com/187619.html и поискать в логах упомянутые там ошибки.
Reply
Leave a comment