Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Jan 2019 16:48:53 -0500
From:      Mark Saad <nonesuch@longcount.org>
To:        FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Removing an alias can remove routes ?
Message-ID:  <CAMXt9NbV%2Bh8tjugcss%2BdafbUOT2o6bh2eWbBFAKNoJ9GeYs1Cw@mail.gmail.com>
In-Reply-To: <201901141821.x0EILVem036356@pdx.rh.CN85.dnsmgr.net>
References:  <CAMXt9NZ8VtTETH0_pRBeHZ7P%2Bgocpxa3EypWuJ6P=b8-%2B3VgqA@mail.gmail.com> <201901141821.x0EILVem036356@pdx.rh.CN85.dnsmgr.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jan 14, 2019 at 1:21 PM Rodney W. Grimes
<freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote:
>
> > On Mon, Jan 14, 2019 at 11:59 AM Rodney W. Grimes
> > <freebsd-rwg@pdx.rh.cn85.dnsmgr.net> wrote:
> > >
> > > > All
> > > >  I ran into a peculiar over the weekend on two FreeBSD 10-STABLE
> > > > servers that has me at a loss. Both servers have the same setup  lacp
> > > > lagg wtih vlans using the lagg as a parent dev.
> > > > On the vlans I have some alias along with the primary ip.  When a
> > > > alias was added or deleted routes that sourced out of the primary ip
> > > > on that vlan were dropped from the routing table.
> > > >
> > > >
> > > > So for example. I have lagg0.vlan1044 . (both servers are similarly
> > > > configured as routers / firewalls )
> > > >
> > > >   [root@pineapple01 ~]# ifconfig lagg0.vlan1044
> > > >   lagg0.vlan1044: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>
> > > > metric 0 mtu 1500
> > > >           options=300<TSO4,TSO6>
> > > >           ether 00:0f:53:20:9b:d0
> > > >           inet6 fe80::20f:53ff:fe20:9bd0%lagg0.vlan1044 prefixlen 64
> > > > scopeid 0x80
> > > >           inet 10.24.213.84 netmask 0xffffffe0 broadcast 10.24.213.95
> > > >           inet 10.24.212.129 netmask 0xffffffff broadcast 10.24.212.129
> > > >           inet 10.24.213.163 netmask 0xfffffff0 broadcast 10.24.213.175
> > > >           inet 10.24.213.76 netmask 0xffffffe0 broadcast 10.24.213.95
> > > >           inet 10.24.213.94 netmask 0xffffffe0 broadcast 10.24.213.95
> > > >           inet 10.24.213.89 netmask 0xffffffe0 broadcast 10.24.213.95
> > > >           inet 10.24.213.75 netmask 0xffffffe0 broadcast 10.24.213.95
> > > >           nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
> > > >           media: Ethernet autoselect
> > > >           status: active
> > > >           vlan: 1044 parent interface: lagg0
> > > >
> > > > [root@pineapple01 ~]# netstat -nr4Wl
> > > > ...
> > > >   192.168.144.32/27   10.24.213.65     UGS           0   1500 lagg0.vlan1044
> > > >   192.168.144.96/27   10.24.213.65     UGS           0   1500 lagg0.vlan1044
> > > >   192.168.23.0/24     10.24.213.65     UGS           0   1500 lagg0.vlan1044
> > > >   192.168.120.0/21   10.24.213.65     UGS           0   1500 lagg0.vlan1044
> > > >
> > > >
> > > > So I wanted to remove the alias ended in 163 and fix its netmask back to /32
> > > >
> > > > I ran this
> > > >
> > > > ifconfig lagg0.vlan1044 inet 10.24.213.163/24 -alias && ifconfig
> > >                                                       ^ delete?
> >
> > I use -alias which is an alias of -delete
> >
> > >
> > > > lagg0.vlan1044 inet 10.24.213.163/32 -alias
>
> This is also a delete?
> I am concerend that what you think the command you
> typed is not actually the command you typed and what
> you did actually type has the bad side effects.
>
>
> > > > and shortly there after all of the routes that went out lagg0.vlan1044
> > > > were gone . I quickly undid my change and put the routes back but I am
> > > > not sure what caused this ? Anyone have any ideas  I have done this in
> > > > the past with out issue and I am unsure whats changed other then the
> > > > box have a long up time of 463 days .
> > >
> > > I believe what happened here is that 10.24.213.163/24 when reduced
> > > to a network address is 10.24.213.0/24, which probably got sent to
> > > the route removal code, which since the route to that covers the
> > > gateway at 10.24.213.65 that gateway was no longer accessable
> > > so all routes via it got removed.
> > >
> >
> > ok I see what you are saying and it makes sense to me; do you know why
> > the routing code does not see the primary ip ( the non-alias one) is
> > still
> > live on the interface before deciding to drop the routes associated with it ?
>
> It should, but I can not see enough of your routing table to
> guess as to exactly what the kernel did when you removed
> this interface.  The routes I see above all would go through
> the interface you showed you removed, thus they would all
> go away.
>
> --
> Rod Grimes                                                 rgrimes@freebsd.org


Ok some further testing shows what appears to be unintended results.

On my test box I do the following

ifconfig vlan98 create
ifconfig vlan98 vlan 98 vlandev lagg0
ifconfig vlan98 inet 10.1.68.12/26
ifconfig vlan98 inet 10.1.68.13/26 alias
ifconfig vlan98 inet 10.1.68.14/28 alias
ifconfig vlan98 inet 10.1.68.15/32 alias

route add 10.24.213.0/24 10.1.68.11
route add 10.24.214.0/24 10.1.68.11
route add 10.24.215.0/24 10.1.68.11

root@potato2:~ # netstat -nr4Wl
Routing tables

Internet:
Destination        Gateway            Flags       Use    Mtu      Netif Expire
default            10.21.160.1        UGS        1216   1500       igb0
10.1.68.0/26       link#12            U             0   1500     vlan98
10.1.68.12         link#12            UHS           0  16384        lo0
10.1.68.13         link#12            UHS           0  16384        lo0
10.1.68.13/32      link#12            U             0   1500     vlan98
10.1.68.14         link#12            UHS           0  16384        lo0
10.1.68.14/32      link#12            U             0   1500     vlan98
10.1.68.15         link#12            UHS           0  16384        lo0
10.1.68.15/32      link#12            U             0   1500     vlan98
10.21.160.0/21     link#3             U         26985   1500       igb0
10.21.160.85       link#3             UHS           0  16384        lo0
10.24.213.0/24     10.1.68.11         UGS           0   1500     vlan98
10.24.214.0/24     10.1.68.11         UGS           0   1500     vlan98
10.24.215.0/24     10.1.68.11         UGS           0   1500     vlan98
127.0.0.1          link#5             UH          840  16384        lo0

Then I realize that my masks are wrong and I change the aliases back to "/32's"

root@potato2:~ # ifconfig vlan98
vlan98: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0f:53:20:9d:00
        inet 10.1.68.12 netmask 0xffffffc0 broadcast 10.1.68.63
        inet6 fe80::20f:53ff:fe20:9d00%vlan98 prefixlen 64 scopeid 0xc
        inet 10.1.68.13 netmask 0xffffffff broadcast 10.1.68.13
        inet 10.1.68.14 netmask 0xffffffff broadcast 10.1.68.14
        inet 10.1.68.15 netmask 0xffffffff broadcast 10.1.68.15
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        media: Ethernet autoselect
        status: active
        vlan: 98 parent interface: lagg0
root@potato2:~ # netstat -nr4Wl
Routing tables

Internet:
Destination        Gateway            Flags       Use    Mtu      Netif Expire
default            10.21.160.1        UGS        1217   1500       igb0
10.1.68.0/26       link#12            U             0   1500     vlan98
10.1.68.12         link#12            UHS           0  16384        lo0
10.1.68.13         link#12            UHS           0  16384        lo0
10.1.68.13/32      link#12            U             0   1500     vlan98
10.1.68.14         link#12            UHS           0  16384        lo0
10.1.68.14/32      link#12            U             0   1500     vlan98
10.1.68.15         link#12            UHS           0  16384        lo0
10.1.68.15/32      link#12            U             0   1500     vlan98
10.21.160.0/21     link#3             U         27166   1500       igb0
10.21.160.85       link#3             UHS           0  16384        lo0
10.24.213.0/24     10.1.68.11         UGS           0   1500     vlan98
10.24.214.0/24     10.1.68.11         UGS           0   1500     vlan98
10.24.215.0/24     10.1.68.11         UGS           0   1500     vlan98
127.0.0.1          link#5             UH          840  16384        lo0
root@potato2:~ #

So far no problems.

Then I see ohh my primary ip needs to be a "/24"


root@potato2~ # ifconfig vlan98 inet 10.1.68.12/24
root@potato2:~ # netstat -nr4Wl
Routing tables

Internet:
Destination        Gateway            Flags       Use    Mtu      Netif Expire
default            10.21.160.1        UGS        1218   1500       igb0
10.1.68.0/24       link#12            U             0   1500     vlan98
10.1.68.12         link#12            UHS           0  16384        lo0
10.1.68.13         link#12            UHS           0  16384        lo0
10.1.68.13/32      link#12            U             0   1500     vlan98
10.1.68.14         link#12            UHS           0  16384        lo0
10.1.68.14/32      link#12            U             0   1500     vlan98
10.1.68.15         link#12            UHS           0  16384        lo0
10.1.68.15/32      link#12            U             0   1500     vlan98
10.21.160.0/21     link#3             U         27230   1500       igb0
10.21.160.85       link#3             UHS           0  16384        lo0
10.24.213.0/24     10.1.68.11         UGS           0   1500     vlan98
10.24.214.0/24     10.1.68.11         UGS           0   1500     vlan98
10.24.215.0/24     10.1.68.11         UGS           0   1500     vlan98
127.0.0.1          link#5             UH          840  16384        lo0
root@potato2:~ #


So far so good; then I accidentally hit up arrow and enter / or re-run
the promotion to /24 again two times

IE:
root@potato2:~ # ifconfig vlan98 inet 10.1.68.12/24
root@potato2:~ # ifconfig vlan98 inet 10.1.68.12/24

root@potato2:~ # netstat -nr4Wl
Routing tables

Internet:
Destination        Gateway            Flags       Use    Mtu      Netif Expire
default            10.21.160.1        UGS        1223   1500       igb0
10.1.68.0/24       link#12            U             0   1500     vlan98
10.1.68.12         link#12            UHS           0  16384        lo0
10.1.68.15         link#12            UHS           0  16384        lo0
10.1.68.15/32      link#12            U             0   1500     vlan98
10.21.160.0/21     link#3             U         27847   1500       igb0
10.21.160.85       link#3             UHS           0  16384        lo0
127.0.0.1          link#5             UH          868  16384        lo0



What just happened to my routes and check out what just happened to my aliases

root@potato2:~ # ifconfig vlan98
vlan98: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether 00:0f:53:20:9d:00
        inet6 fe80::20f:53ff:fe20:9d00%vlan98 prefixlen 64 scopeid 0xc
        inet 10.1.68.15 netmask 0xffffffff broadcast 10.1.68.15
        inet 10.1.68.12 netmask 0xffffff00 broadcast 10.1.68.255
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        media: Ethernet autoselect
        status: active
        vlan: 98 parent interface: lagg0



Anyone have an idea what happened here ?

-- 
mark saad | nonesuch@longcount.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMXt9NbV%2Bh8tjugcss%2BdafbUOT2o6bh2eWbBFAKNoJ9GeYs1Cw>