Changing jail's IP automatically

James Gritton jamie at freebsd.org
Sat Sep 3 15:33:22 UTC 2016


On 2016-09-02 15:08, Grzegorz Junka wrote:
> I am using a jail on my laptop and I often connect to different
> WiFi's, which of course assign different IPs to my laptop. I set up
> the jail by adding an alias to wlan0 and I need to update the IP every
> time I switch the WiFi network. Is it possible to create a jail with
> IP assigned dynamically, e.g. from DHCP, or at least switch between
> predefined IPs more easily than by editing /etc/jail.conf?

You can always add addresses later.  I would create the jail without any 
IP address specified in jail.conf, and then have a exec.poststart script 
that sets the address using something like "jail -m name=foo 
ip4.addr=1.2.3.4".  And similarly when the network switches, it would 
need to trigger a similar script that resets the address.

It's a little more complicated that than though: network daemons will be 
bound to the old address after the switch, so you'll need to run the 
proper service(8) commands to restart those, in the right order.  Or 
depending on the service, maybe a kick of some sort (like a kill -1) 
would do the trick.

And at start time, if the jail has no IP address of its own, anything it 
runs will use the regular system IP addresses.  That's definitely not 
what you want.  Unfortunately, jail(8) doesn't have a way to run a 
script in the system environment after the jail is created but before 
exec.start is run.  That would be the right place to set the initial 
address.  So barring that, you may want to have network services not 
started up at all, until this poststart script sets the address.  So 
it's still not a simple issue.

- Jamie


More information about the freebsd-jail mailing list