[Bug 252334] Regression for running jails with fibs

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jan 1 18:02:33 UTC 2021


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252334

            Bug ID: 252334
           Summary: Regression for running jails with fibs
           Product: Base System
           Version: CURRENT
          Hardware: amd64
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: misc
          Assignee: bugs at FreeBSD.org
          Reporter: freebsd at fizz.buzz

I've noticed that there appears to be a regression in FreeBSD 13 when trying to
run a jail with a fib. I've created a minimal example script:
https://gist.github.com/tomalexander/3ecde8933e482794ef808a37047b07a0

If you take that script and run it in a FreeBSD virtual machine with a clean
install of FreeBSD with git installed then it will update itself to a revision
you specify at the top of the script and build a jail using the same revision.
I strongly advise everyone to only run the script inside a VM because it will
overwrite system config files.

This process will involve multiple reboots, but the script installs itself as a
service to auto-launch itself on reboots so it should fully set itself up
without intervention. Regardless, the script is quite small and readable so you
should be able to follow the steps manually if you'd like (explanation at
bottom of email).

If you set REVISION="stable/12" at the top of the script then after it goes
through its full setup you can run "service jail onestart test" and you can
read /var/log/jail.log and see that no errors related to the fib are printed.
The jail itself won't have network connectivity because this setup is missing
other pieces like a firewall to do NAT since I wanted to cut this down to a
minimal example.

If instead you set REVISION="main" at the top of the script then if you had
KERNCONF="GENERIC" at the top of the script you will get dropped into a
debugger upon running "service jail onestart test":
https://user-images.githubusercontent.com/458272/103318144-75636800-49fb-11eb-92f8-66351c65ca7d.png
. If instead you set KERNCONF="GENERIC-NODEBUG" then you can read
/var/log/jail.log and see messages that say "route: fiboptlist_csv failed."

Through some printf debugging, I have found that in FreeBSD 12 the numfibs in
route.c inside the jail is 2 but in FreeBSD 13 the numfibs in route.c inside
the jail is 1. Thats as far as my debugging has reached so far. I've attempted
to git bisect my way there, but I've been unsuccessful (hitting a lot of
revision that fail to build between stable/12 and main)

Finally, a quick overview of what the script does for people who want to
recreate this on their own. I'll leave out the minutia of the script injecting
itself as a service and cleaning itself up:

1. Creates devfs rule for vnet
2. sets net.fibs=2 in the host /boot/loader.conf
3. sets net.add_addr_allfibs=1 in the host /etc/sysctl.conf
4. sets up a jail.conf using the example from /usr/share/examples/jails for
if_bridge but set the fib for the jail to 1
5. Checks out the revision of freebsd specified in the script. Builds and
installs that version to the host.
6. Also install that built version to /jail to be used as a jail
7. Configure the jail's rc.conf to use a static local ip address

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list