/usr/sbin/ppp doubling connections on tun0

andrew clarke mail at ozzmosis.com
Tue Nov 20 00:49:52 UTC 2012


I'm using /usr/sbin/ppp for PPPoE over an ADSL modem in bridged mode:

# ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
        options=80000<LINKSTATE>
        inet 203.217.27.170 --> 203.215.15.252 netmask 0xffffffff 
        inet 203.214.46.107 --> 203.215.7.251 netmask 0xffffffff 
        Opened by PID 49158

What would cause this?

Notice the two IP addresses assigned to the same interface. It should
just have one address assigned.

Something causes the initial PPPoE session to stop, then another to
restart without properly closing the previous PPPoE session.

I'm not sure when this started happening but I've noticed it's become
more frequent in the past few weeks. One theory I have is that it may
have begun after I upgraded FreeBSD from 8.2 to 8.3 a few months back.

I suppose concurrent PPPoE sessions aren't the end of the world, but
obviously it makes no sense to have two on the same interface, so I'd
like to prevent that.

(Strictly speaking they aren't concurrent as the previously allocated
IP [203.217.27.170 in the case above] no longer responds to pings,
etc. It's dead, Jim.)

The multiple IP addresses also causes /usr/ports/dns/ddclient to get
confused and not tell DynDNS when a new IP address has been assigned,
although perhaps that's a bug (sort of) in ddclient.

I notice FreeBSD PR 151400 mentions:

"The patch also makes a small change to how ppp(8) destroys interfaces
at exit. Instead of just dealiasing interfaces and leaving them
behind, they are now destroyed in the same manner "ifconfig destroy"
works."

I wonder if that's the cause? If I get a chance I'll try building a
local copy of /usr/sbin/ppp with the patch reverted and test that,
although it can be a difficult problem to replicate. Plus of course
the patch doesn't explain the initial disconnections. I suspect that's
an issue unrelated to /usr/sbin/ppp though.

# cat /etc/ppp/ppp.conf
default:
  set log phase chat lcp ipcp ccp tun command lqm
  set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255
  nat enable yes
  disable lqr
  disable ipv6cp
  set echoperiod 30
  enable echo
    
iinet:
  set device PPPoE:bge0
  set authname secret
  set authkey secret
  set dial
  set login
  set mru 1492
  set mtu 1492
  set redial 15 0
  add default HISADDR

# grep ppp /etc/rc.conf
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"
ppp_profile="iinet"

# uname -a
FreeBSD blizzard.phoenix 8.3-RELEASE-p3 FreeBSD 8.3-RELEASE-p3 #0: Tue Jun 12 00:39:29 UTC 2012
root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

In the meantime I've switched to using mpd5 (/usr/ports/net/mpd5) and
/sbin/ipnat. So far, so good:

# ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1492
        inet 124.170.51.116 --> 203.215.7.251 netmask 0xffffffff 

Regards
Andrew


More information about the freebsd-questions mailing list