FreeBSD 5.2.1, User-ppp 3.1, ADSL-модем Dynamix UM-AF
Происходит сабж. Если попытаться восстановить связь, ppp не видит carrier-а. Спасает только перезагрузка сервера. После нее все становится нормально. Перезагрузка модема ничего не дает. Логи в студию:
Aug 17 08:25:49 gate ppp[6987]: Phase: Using interface: tun0
Aug 17 08:25:49 gate ppp[6987]: Phase: deflink: Created in closed state
Aug 17 08:25:49 gate ppp[6987]: tun0: Command: default: add default HISADDR
Aug 17 08:25:49 gate ppp[6987]: tun0: ID0: 9 = socket(17, 3, 0)
Aug 17 08:25:49 gate ppp[6987]: tun0: ID0: 0x2830f220 = fopen("/etc/ppp/ppp.conf", "r")
Aug 17 08:25:49 gate ppp[6987]: tun0: Debug: ReadSystem: Checking papchap (/etc/ppp/ppp.conf).
Aug 17 08:25:49 gate ppp[6987]: tun0: Command: papchap: set authname wdk
Aug 17 08:25:49 gate ppp[6987]: tun0: Command: papchap: set authkey ********
Aug 17 08:25:49 gate ppp[6987]: tun0: Phase: PPP Started (interactive mode).
Aug 17 08:25:49 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:25:53 gate ppp[6987]: tun0: Timer: Select returns 1
Aug 17 08:25:53 gate ppp[6987]: tun0: Command: /dev/ttyp0: dial
Aug 17 08:25:53 gate ppp[6987]: tun0: Phase: bundle: Establish
Aug 17 08:25:53 gate ppp[6987]: tun0: Phase: deflink: closed -> opening
Aug 17 08:25:53 gate ppp[6987]: tun0: ID0: 0 = NgMkSockNode("", &cs, &ds)
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: List of netgraph node ``fxp1:'' (id 2) hooks:
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Found orphans -> ethernet
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Connecting netgraph socket .:tun0 -> [4]::tun0
Aug 17 08:25:53 gate ppp[6987]: tun0: ID0: 4 = socket(2, 2, 0)
Aug 17 08:25:53 gate ppp[6987]: tun0: ID0: 0 = ioctl(4, 3223349521, 0xbfbfdda0)
Aug 17 08:25:53 gate ppp[6987]: tun0: ID0: 0 = ioctl(4, 2149607696, 0xbfbfdda0)
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Sending PPPOE_CONNECT to .:tun0
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Found the following interfaces:
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Index 1, name "fxp0"
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Index 2, name "fxp1"
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Index 3, name "lo0"
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Index 4, name "tun0"
Aug 17 08:25:53 gate ppp[6987]: tun0: Timer: timer_Start: Inserting physical throughput timer[0x80c3068]
Aug 17 08:25:53 gate ppp[6987]: tun0: Phase: deflink: Connected!
Aug 17 08:25:53 gate ppp[6987]: tun0: Phase: deflink: opening -> dial
Aug 17 08:25:53 gate ppp[6987]: tun0: Chat: deflink: Dial attempt 1 of 1
Aug 17 08:25:53 gate ppp[6987]: tun0: Phase: deflink: dial -> carrier
Aug 17 08:25:53 gate ppp[6987]: tun0: Debug: Waiting for carrier
Aug 17 08:25:53 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:25:54 gate ppp[6987]: tun0: Timer: Select returns -1
Aug 17 08:25:54 gate ppp[6987]: tun0: Timer: ---- Begin of Timer Service List---
Aug 17 08:25:54 gate ppp[6987]: tun0: Timer: physical throughput timer[0x80c3068]: freq = 1.00s, next = 0.00s, state = runningAug 17 08:25:54 gate ppp[6987]: tun0: Timer: ---- End of Timer Service List ---
Aug 17 08:25:54 gate ppp[6987]: tun0: Timer: timer_Start: Inserting physical throughput timer[0x80c3068]
Aug 17 08:25:54 gate ppp[6987]: tun0: Debug: Waiting for carrier
Aug 17 08:25:54 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:25:55 gate ppp[6987]: tun0: Timer: Select returns -1
Aug 17 08:25:55 gate ppp[6987]: tun0: Timer: ---- Begin of Timer Service List---
Aug 17 08:25:55 gate ppp[6987]: tun0: Timer: physical throughput timer[0x80c3068]: freq = 1.00s, next = 0.00s, state = runningAug 17 08:25:55 gate ppp[6987]: tun0: Timer: ---- End of Timer Service List ---
Aug 17 08:25:55 gate ppp[6987]: tun0: Timer: timer_Start: Inserting physical throughput timer[0x80c3068]
Aug 17 08:25:55 gate ppp[6987]: tun0: Debug: Waiting for carrier
Aug 17 08:25:55 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:25:56 gate ppp[6987]: tun0: Timer: Select returns -1
Aug 17 08:25:56 gate ppp[6987]: tun0: Timer: ---- Begin of Timer Service List---
Aug 17 08:25:56 gate ppp[6987]: tun0: Timer: physical throughput timer[0x80c3068]: freq = 1.00s, next = 0.00s, state = runningAug 17 08:25:56 gate ppp[6987]: tun0: Timer: ---- End of Timer Service List ---
Aug 17 08:25:56 gate ppp[6987]: tun0: Timer: timer_Start: Inserting physical throughput timer[0x80c3068]
Aug 17 08:25:56 gate ppp[6987]: tun0: Debug: Waiting for carrier
Aug 17 08:25:56 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:25:57 gate ppp[6987]: tun0: Timer: Select returns -1
Aug 17 08:25:57 gate ppp[6987]: tun0: Timer: ---- Begin of Timer Service List---
Aug 17 08:25:57 gate ppp[6987]: tun0: Timer: physical throughput timer[0x80c3068]: freq = 1.00s, next = 0.00s, state = runningAug 17 08:25:57 gate ppp[6987]: tun0: Timer: ---- End of Timer Service List ---
Aug 17 08:25:57 gate ppp[6987]: tun0: Timer: timer_Start: Inserting physical throughput timer[0x80c3068]
Aug 17 08:25:57 gate ppp[6987]: tun0: Debug: Waiting for carrier
Aug 17 08:25:57 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:25:58 gate ppp[6987]: tun0: Timer: Select returns -1
Aug 17 08:25:58 gate ppp[6987]: tun0: Timer: ---- Begin of Timer Service List---
Aug 17 08:25:58 gate ppp[6987]: tun0: Timer: physical throughput timer[0x80c3068]: freq = 1.00s, next = 0.00s, state = runningAug 17 08:25:58 gate ppp[6987]: tun0: Timer: ---- End of Timer Service List ---
Aug 17 08:25:58 gate ppp[6987]: tun0: Timer: timer_Start: Inserting physical throughput timer[0x80c3068]
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: deflink: Disconnected!
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: deflink: carrier -> hangup
Aug 17 08:25:58 gate ppp[6987]: tun0: Debug: deflink: Close
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: deflink: Connect time: 5 secs: 0 octets in, 0 octets out
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: deflink: 0 packets in, 0 packets out
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: total 0 bytes/sec, peak 0 bytes/sec on Wed Aug 17 08:25:53 2005
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: deflink: hangup -> closed
Aug 17 08:25:58 gate ppp[6987]: tun0: Debug: route_IfDelete (4)
Aug 17 08:25:58 gate ppp[6987]: tun0: ID0: 2 = socket(2, 2, 0)
Aug 17 08:25:58 gate ppp[6987]: tun0: ID0: 0 = ioctl(2, 3223349521, 0xbfbfe980)
Aug 17 08:25:58 gate ppp[6987]: tun0: ID0: 0 = ioctl(2, 2149607696, 0xbfbfe980)
Aug 17 08:25:58 gate ppp[6987]: tun0: Phase: bundle: Dead
Aug 17 08:25:58 gate ppp[6987]: tun0: Timer: timer_Start: Inserting dial timer[0x80c1d44]
Aug 17 08:25:58 gate ppp[6987]: tun0: Timer: prompt /dev/ttyp0: fdset(r) 0
Aug 17 08:26:01 gate ppp[6987]: tun0: Timer: Select returns 1
Aug 17 08:26:01 gate ppp[6987]: tun0: Command: /dev/ttyp0: quit
Aug 17 08:26:01 gate ppp[6987]: tun0: Debug: DoLoop done.
Aug 17 08:26:01 gate ppp[6987]: tun0: Phase: PPP Terminated (normal).
Aug 17 08:26:01 gate ppp[6987]: tun0: Debug: route_IfDelete (4)
Aug 17 08:26:01 gate ppp[6987]: tun0: ID0: 2 = socket(2, 2, 0)
Aug 17 08:26:01 gate ppp[6987]: tun0: ID0: 0 = ioctl(2, 3223349521, 0xbfbfea80)
Aug 17 08:26:01 gate ppp[6987]: tun0: ID0: 0 = ioctl(2, 2149607696, 0xbfbfea80)
Aug 17 08:26:01 gate ppp[6987]: tun0: Debug: Radius: radius_Destroy
Aug 17 08:26:01 gate ppp[6987]: tun0: ID0: 0 = unlink("/var/run/tun0.pid")Отличие лога успешного подключения состоит в том, что после dial -> carrier в скором времени приходит ответ от DSLAM, начинается процесс установки соединения, всем становится хорошо и интернетно.
Итак, ни у кого мыслей нет. Тогда начнем развивать тему сами. Если перезагрузка модема ничего не дала, а перезагрузка сервера всегда приводит к восстановлению нормальной работы, значит проблема в сервере. Отключение ethernet-a от модема и повторное включение тоже ничего не дали. ifdown - ifup - аналогично. Т.е. дело не в работе интерфесов ethernet. Судя по логам, ppp тоже работает безо всяких изменений в обоих случаях. Таким образом мы приходим к следующему выводу: проблема заключена между ppp и интерфейсом fxp0. Вопросов два:
-правильно ли я рассуждаю?
-что лежит между эзернетом и ппп, т.е. какие подсистемы следует обновить (или проконтролировать)?
у меня на фре 5.4 tun-oв дофига и больше (запускал по 20-ть).
поищи, будь другом, в нете командочку ЧОБЫ ПРИБИТЬ ЭТОТ ЧЁТРОВ ТУН. года 2 назад (работал плотно с mpd) знал, как это делается, а пару месяцев назад коснулось - никто толком ничего сказать не может (такие варианты, как kill ..., rm ..., ifconfig down.. НЕ РАБОТАЮТ).грохни тун и всё пучком; или в ядро добавь поболее.
т.е. где-то в системе остается подключенный к чему-то tun0, который надо грохнуть?
или прописать в ядро штук 20 tun-ов, тогда хватит на 20 зависаний переподключений?
>у меня на фре 5.4 tun-oв дофига и больше (запускал по 20-ть).
>поищи, будь другом, в нете командочку ЧОБЫ ПРИБИТЬ ЭТОТ ЧЁТРОВ ТУН. года 2 назад (работал плотно с mpd) знал, как это делается, а пару месяцев назад коснулось - никто толком ничего сказать не может (такие варианты, как kill ..., rm ..., ifconfig down.. НЕ РАБОТАЮТ).
>грохни тун и всё пучком; или в ядро добавь поболее.Самбоди!!! (англ. - кто-нить :-D). Если кто в курсе, что это такое - расскажите хоть что-нить подробнее и понятнее.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/ppp.htm...
Решилось все очень просто и тривиально. В netgraph (через который и работает PPPoE) есть фишка для тупых устройств 3COM, которые вместо EtherType 8863 и 8864 используют 3с12 и 3с13. Так вот у меня при обрыве связи netgraph зачем-то начинал использовать 3комовские значения, а концентратор доступа тупо не хотел отвечать на пакеты с таким полем EtherType. Почему netgrpah так поступал - непонятно, а разбираться в коде было лень и некогда. Важно, что после этого исправить значение с 3с12 на нормальное получалось только перезагрузкой системы. Пришлось подкорректировать файлик ng_pppoe.h, исправив значение констант 3с12 и 3с13 на 8863 и 8864 соответственно, и пересобрать ядро. Теперь все нормально.