Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Jun 2022 10:26:22 -0700
From:      Lee Brown <leeb@ratnaling.org>
To:        freebsd-net <freebsd-net@freebsd.org>
Subject:   Re: fib 1 DHCP and RA default route
Message-ID:  <CAFPNf59eH3ywi2hf5epKS7VUD6QgJS3zh8yRTL1eWhxcGgEe7Q@mail.gmail.com>
In-Reply-To: <6B824787-2D1D-4811-8EB3-0C59E253DBE3@lassitu.de>
References:  <6B824787-2D1D-4811-8EB3-0C59E253DBE3@lassitu.de>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
On Tue, Jun 21, 2022 at 10:11 AM Stefan Bethke <stb@lassitu.de> wrote:

> I'm setting up a new router that has both an ADSL/PPPoE and a cable modem
> upstream. I've configured mpd5 for the PPPoE connection, and I'd like to
> have the cable modem provide a second, independent connection through FIB 1
> over igb2.
>
> rc.conf (partially):
> ifconfig_igb2_descr="Cable Modem"
> ifconfig_igb2="DHCP fib 1"
> ifconfig_igb2_ipv6="inet6 accept_rtadv defaultif"
>
> gateway_enable="YES"
> ipv6_gateway_enable="YES"
> pf_enable="YES"
>
> dhclient_flags="-b"
> dhcp6c_enable="YES"
> dhcp6c_interfaces="igb2"
> dhcp6c_fib=1
>
> I think this should be sufficient to receive both an IPv4 and IPv6 address
> and a default route, however, neither one is added. When I manually add
> them, they are removed after a while.
>
> $ ifconfig igb2
> igb2: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>         description: Cable Modem
>
> options=4e527bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,NOMAP>
>         ether 00:0d:b9:xx:xx:62
>         inet6 fe80::20d:b9ff:fe58:5262%igb2 prefixlen 64 scopeid 0x3
>         inet6 2a02:8108:0:90:xxxx:8eb4:28c2:6315 prefixlen 128
>         inet 31.16.xxx.4 netmask 0xffffff00 broadcast 31.16.xxx.255
>         fib: 1
>         media: Ethernet autoselect (1000baseT <full-duplex>)
>         status: active
>         nd6 options=8023<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL,DEFAULTIF>
>
> $ setfib 1 netstat -rnfinet
> Routing tables (fib: 1)
>
> Internet:
> Destination        Gateway            Flags     Netif Expire
> 31.16.xxx.0/24     link#3             U          igb2
> 31.16.xxx.4        link#3             UHS         lo0
> 127.0.0.1          link#4             UHS         lo0
>
> $ setfib 1 netstat -rnfinet6
> Routing tables (fib: 1)
>
> Internet6:
> Destination                       Gateway                       Flags
>  Netif Expire
> ::/96                             ::1                           UGRS
>   lo0
> ::1                               link#4                        UHS
>  lo0
> ::ffff:0.0.0.0/96                 ::1                           UGRS
>   lo0
> 2a02:8108:0:90:xxxx:8eb4:28c2:6315 link#3                       UHS
>  lo0
> 2a02:8108:xxxx:9d00::/64          link#17                       U
>  br103
> 2a02:8108:xxxx:9d00:0:ff:fe00:367 link#17                       UHS
>  lo0
> fe80::/10                         ::1                           UGRS
>   lo0
> fe80::%igb2/64                    link#3                        U
> igb2
> fe80::20d:b9ff:fe58:5262%igb2     link#3                        UHS
>  lo0
> ff02::/16                         ::1                           UGRS
>   lo0
>
>
> For IPv6, I thought that setting defaultif would make the kernel add the
> default route when an appropriate RA is received, and on my old router,
> that was working; I can't seem to see what difference I have in the config,
> apart from using FIB 1 instead of the default.
>
> And for IPv4, I see that I get the default router through DHCP, but
> somehow /sbin/dhclient-script is not adding a default route. If I add it
> manually, it will be removed eventually.
>
> Any suggestions?
>
>
> Stefan
>
> --
> Stefan Bethke <stb@lassitu.de>   Fon +49 151 14070811
>
> I had a similar issue, no IPv6, but wanted DHCP to populate FIB 1 as FIB 0
was being adjusted by quagga.

I just hacked the /etc/dhclient-enter-hooks and /etc/dhclient-exit-hooks to
do the work as I couldn't find the correct place to place "fib 1" and have
it work.
The enter hook is looking for the interface and REBOOT or BOUND and
${old_routers} != ${new_routers} to delete the route with -fib 1.  The exit
hook is the same but adds the route with -fib 1

[-- Attachment #2 --]
<div dir="ltr"><div dir="ltr"><br><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jun 21, 2022 at 10:11 AM Stefan Bethke &lt;<a href="mailto:stb@lassitu.de">stb@lassitu.de</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">I&#39;m setting up a new router that has both an ADSL/PPPoE and a cable modem upstream. I&#39;ve configured mpd5 for the PPPoE connection, and I&#39;d like to have the cable modem provide a second, independent connection through FIB 1 over igb2.<br>
<br>
rc.conf (partially):<br>
ifconfig_igb2_descr=&quot;Cable Modem&quot;<br>
ifconfig_igb2=&quot;DHCP fib 1&quot;<br>
ifconfig_igb2_ipv6=&quot;inet6 accept_rtadv defaultif&quot;<br>
<br>
gateway_enable=&quot;YES&quot;<br>
ipv6_gateway_enable=&quot;YES&quot;<br>
pf_enable=&quot;YES&quot;<br>
<br>
dhclient_flags=&quot;-b&quot;<br>
dhcp6c_enable=&quot;YES&quot;<br>
dhcp6c_interfaces=&quot;igb2&quot;<br>
dhcp6c_fib=1<br>
<br>
I think this should be sufficient to receive both an IPv4 and IPv6 address and a default route, however, neither one is added. When I manually add them, they are removed after a while.<br>
<br>
$ ifconfig igb2<br>
igb2: flags=8863&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; metric 0 mtu 1500<br>
        description: Cable Modem<br>
        options=4e527bb&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,NOMAP&gt;<br>
        ether 00:0d:b9:xx:xx:62<br>
        inet6 fe80::20d:b9ff:fe58:5262%igb2 prefixlen 64 scopeid 0x3<br>
        inet6 2a02:8108:0:90:xxxx:8eb4:28c2:6315 prefixlen 128<br>
        inet 31.16.xxx.4 netmask 0xffffff00 broadcast 31.16.xxx.255<br>
        fib: 1<br>
        media: Ethernet autoselect (1000baseT &lt;full-duplex&gt;)<br>
        status: active<br>
        nd6 options=8023&lt;PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL,DEFAULTIF&gt;<br>
<br>
$ setfib 1 netstat -rnfinet<br>
Routing tables (fib: 1)<br>
<br>
Internet:<br>
Destination        Gateway            Flags     Netif Expire<br>
31.16.xxx.0/24     link#3             U          igb2<br>
31.16.xxx.4        link#3             UHS         lo0<br>
127.0.0.1          link#4             UHS         lo0<br>
<br>
$ setfib 1 netstat -rnfinet6<br>
Routing tables (fib: 1)<br>
<br>
Internet6:<br>
Destination                       Gateway                       Flags     Netif Expire<br>
::/96                             ::1                           UGRS        lo0<br>
::1                               link#4                        UHS         lo0<br>
::ffff:<a href="http://0.0.0.0/96" rel="noreferrer" target="_blank">0.0.0.0/96</a>                 ::1                           UGRS        lo0<br>
2a02:8108:0:90:xxxx:8eb4:28c2:6315 link#3                       UHS         lo0<br>
2a02:8108:xxxx:9d00::/64          link#17                       U         br103<br>
2a02:8108:xxxx:9d00:0:ff:fe00:367 link#17                       UHS         lo0<br>
fe80::/10                         ::1                           UGRS        lo0<br>
fe80::%igb2/64                    link#3                        U          igb2<br>
fe80::20d:b9ff:fe58:5262%igb2     link#3                        UHS         lo0<br>
ff02::/16                         ::1                           UGRS        lo0<br>
<br>
<br>
For IPv6, I thought that setting defaultif would make the kernel add the default route when an appropriate RA is received, and on my old router, that was working; I can&#39;t seem to see what difference I have in the config, apart from using FIB 1 instead of the default.<br>
<br>
And for IPv4, I see that I get the default router through DHCP, but somehow /sbin/dhclient-script is not adding a default route. If I add it manually, it will be removed eventually.<br>
<br>
Any suggestions?<br>
<br>
<br>
Stefan<br>
<br>
--<br>
Stefan Bethke &lt;<a href="mailto:stb@lassitu.de" target="_blank">stb@lassitu.de</a>&gt;   Fon +49 151 14070811<br>
<br></blockquote><div><div>I had a similar issue, no IPv6, but wanted DHCP to populate FIB 1 as FIB 0 was being adjusted by quagga.<br></div><div><br></div><div>I
 just hacked the /etc/dhclient-enter-hooks and /etc/dhclient-exit-hooks 
to do the work as I couldn&#39;t find the correct place to place &quot;fib 1&quot; and have it work.</div><div>The enter hook is looking for the interface and REBOOT or BOUND and ${old_routers} != ${new_routers} to delete the route with -fib 1.  The exit hook is the same but adds the route with -fib 1<br></div> </div></div></div>

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFPNf59eH3ywi2hf5epKS7VUD6QgJS3zh8yRTL1eWhxcGgEe7Q>