PPPoE reconenction fix - mpd fix ($100)
-
Can you do me a 'ngctl list' when in this situation?
-
here is the output before and after
when normally connected after reboot
$ ngctl list There are 17 total nodes: Name: <unnamed>Type: socket ID: 0000001c Num hooks: 0 Name: <unnamed>Type: socket ID: 0000001b Num hooks: 0 Name: <unnamed>Type: pppoe ID: 00000011 Num hooks: 2 Name: <unnamed>Type: socket ID: 00000010 Num hooks: 0 Name: ng0 Type: iface ID: 0000000d Num hooks: 1 Name: mpd10888-wan_link0-lt Type: tee ID: 0000000f Num hooks: 2 Name: vr1 Type: ether ID: 00000002 Num hooks: 1 Name: vr2 Type: ether ID: 00000003 Num hooks: 0 Name: bridge0 Type: ether ID: 00000018 Num hooks: 0 Name: mpd10888-stats Type: socket ID: 00000012 Num hooks: 0 Name: mpd10888-cso Type: socket ID: 0000000b Num hooks: 0 Name: mpd10888-wan-mss Type: tcpmss ID: 00000013 Num hooks: 2 Name: mpd10888-wan Type: ppp ID: 0000000e Num hooks: 3 Name: mpd10888-eso Type: socket ID: 0000000c Num hooks: 0 Name: mpd10888-lso Type: socket ID: 0000000a Num hooks: 1 Name: wlan0 Type: ether ID: 00000017 Num hooks: 0 Name: ngctl4052 Type: socket ID: 00000023 Num hooks: 0</unnamed></unnamed></unnamed></unnamed>
when endless loop of reconenction
$ ngctl list There are 16 total nodes: Name: <unnamed>Type: socket ID: 0000001c Num hooks: 0 Name: <unnamed>Type: socket ID: 0000001b Num hooks: 0 Name: <unnamed>Type: pppoe ID: 00000011 Num hooks: 2 Name: <unnamed>Type: socket ID: 00000010 Num hooks: 0 Name: ng0 Type: iface ID: 0000000d Num hooks: 0 Name: mpd10888-wan_link0-lt Type: tee ID: 00000028 Num hooks: 2 Name: vr1 Type: ether ID: 00000002 Num hooks: 1 Name: vr2 Type: ether ID: 00000003 Num hooks: 0 Name: ngctl23563 Type: socket ID: 0000002d Num hooks: 0 Name: bridge0 Type: ether ID: 00000018 Num hooks: 0 Name: mpd10888-stats Type: socket ID: 00000012 Num hooks: 0 Name: mpd10888-cso Type: socket ID: 0000000b Num hooks: 0 Name: mpd10888-wan Type: ppp ID: 0000000e Num hooks: 1 Name: mpd10888-eso Type: socket ID: 0000000c Num hooks: 0 Name: mpd10888-lso Type: socket ID: 0000000a Num hooks: 2 Name: wlan0 Type: ether ID: 00000017 Num hooks: 0</unnamed></unnamed></unnamed></unnamed>
-
@ermal:
Can you do me a 'ngctl list' when in this situation?
any luck?
-
still no fix for this
-
Have your tried pfsense 2.1-DEVEL just in case the latest mpd 5.6 improves things?
-
havent tried it coz its not much in a usable state currently for light production, mayb later
-
Try adding
set bundle no noretry
src: http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2007-09/msg01895.html
Apparently it was also discussed here a couple of years ago:
According to http://mpd.sourceforge.net/doc5/mpd4.html
Changes since version 4.1rc2:
Bundle's noretry option is enabled by default now. -
i tried to feed that line in using edit file from the web GUI but it seems pfsense seems to remove that entry if rebooted or even if i goto interfaces and click disconnect and then connect
any help regarding some php code change to keep that entry intact?
-
i managed to edit the interfaces.inc so it adds the line which it does now but i guess mpd ignores it as the system log gives the below message
ppp: mpd_wan.conf:31: Incorrect context for: 'set bundle no noretry'
-
actually the command to use was this
set link no noretry
it didnt help coz the original issue which u mentioned in that first link was his connection wasnt redialing that was due to noretry defaulting to yes but that was in mpd4 and i guess pfsense uses mpd5 in v2.0.1 so thats y that command isnt recognized, only max-redial is the command available which cant be set to some number or 0 for unlimited and -1 to disable redial which pfsense defaults it to 0 so my connection is actually redialed but due to some other reason and the isp's fiber optic modem or their bras server, mpd isnt able to reconnect untill its rebooted so obviously something different happens during pfsense reboot time connection or mayb because the vr1 resets which then allows pfsense to connect fine on reboot but to replicate that i removed the network cable as well and tried and try replugging it in but doesnt help.
-
xbipin,
Let me try to recap:
-
You had no problem with PPPoE auto-reconnection with pfsense 1.2.3
-
You only started having problems with 2.0-something (BETA, RC etc)
-
You are able to reproduce the problem at will
-
There are others who have a similar problem, but most pfsense users don't
I think your best option would be to obtain logs with full verbosity and post them along your mpd config files to the mpd-forum at http://sourceforge.net/projects/mpd/forums/forum/44692
-
-
i already did that in their mailing list, hardly got any reply at all and there r many others with the problem but they r either using 1.2.3 or trying to live with 2.0.1 like me. the basic reconnection issue is mpd attempts but is unable to reconnect and if u read the past posts, i have provided logs, config etc etc almost more than 50 times now till date.
bytheway, all routers available in the market etc work very well over the same link, then y does mpd have issues?
-
there r many others with the problem but they r either using 1.2.3 or trying to live with 2.0.1 like me.
Then why aren't any others bidding here to try to get it fixed?
-
coz officially ermal was on this to get it solved but then mayb he realized its not a easy fix by simply patching some php code so this thread went old as i was out of town and got abandoned so most might not have read it also now but if u look at other threads here and there in the complete forum then there r quiet a few ppl suffering the same and it was already discussed many many times but didnt yield any permanent solution.
after a lot of tracing in the past also it came to light that there was something to do with the isp BRAS or pppoe server or whatever they call it and some security measures but my point is that how do commercial routers overcome this and pfsense or mpd doesnt
-
Looks like I've run into the same issue, not absolutely the same, but similar and solution for the problem is the same - reboot of pfsense always helps.
Is there the way to reboot pfsense automatically after XX PPPoE connection retries? I know this is not the best way, but at least it works always for me. -
not really i backed off just other priorities first.
Sorry about that.
-
ermal, at least you are monitoring ::)
Looks like I've found the solution, that works at least for me
I've added two lines to the end of ppp-linkdownifconfig em0 down
ifconfig em0 upAnd looks like reconnection bug is gone.
P.S. em0 is interface, where PPPoE is
P.P.S. I think it's related to driver. -
@w0w:
ermal, at least you are monitoring ::)
Looks like I've found the solution, that works at least for me
I've added two lines to the end of ppp-linkdownifconfig em0 down
ifconfig em0 upAnd looks like reconnection bug is gone.
P.S. em0 is interface, where PPPoE is
P.P.S. I think it's related to driver.can u mention the location of the file and where exactly did u put those lines, ill give it a try too
-
Certainly that will reset the device by doing up/down.
Just not a generic solution :) -
@w0w:
ermal, at least you are monitoring ::)
Looks like I've found the solution, that works at least for me
I've added two lines to the end of ppp-linkdownifconfig em0 down
ifconfig em0 upAnd looks like reconnection bug is gone.
P.S. em0 is interface, where PPPoE is
P.P.S. I think it's related to driver.can u mention the location of the file and where exactly did u put those lines, ill give it a try too
usr/local/sbin
You can also use Commands-Find File in WinSCP if you have windows
#!/bin/sh if [ -f /tmp/$1up ] && [ -f /conf/$1.log ]; then seconds=$((`date -j +%s` - `/usr/bin/stat -f %m /tmp/$1up`)) /usr/local/sbin/ppp-log-uptime.sh $seconds $1 & fi if [ "$3" != "" ]; then echo "Removing states from $3" | logger -t ppp-linkdown /sbin/pfctl -k 0.0.0.0/0 -k $3/32 /sbin/pfctl -k $3/32 pfctl -K $3/32 fi if [ "$4" != "" ]; then echo "Removing states to $4" | logger -t ppp-linkdown /sbin/pfctl -b 0.0.0.0/32 -b $4/32 if [ -f "/tmp/${interface}_defaultgw" ]; then route delete default $4 fi fi # delete the node just in case mpd cannot do that /usr/sbin/ngctl shutdown $1: if [ -f "/var/etc/nameserver_$1" ]; then # Remove old entries for nameserver in `cat /var/etc/nameserver_$1`; do /sbin/route delete $nameserver >/dev/null 2>&1 done /bin/rm -f /var/etc/nameserver_$1 fi # Do not remove gateway used during filter reload. /bin/rm -f /tmp/$1_router /bin/rm -f /tmp/$1up /bin/rm -f /tmp/$1_ip /usr/local/sbin/pfSctl -c 'service reload dns' ifconfig em0 down ifconfig em0 up
Do not forget to replace em0 with your own device name.