Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 07 Jul 2017 09:18:47 -0600
From:      James Gritton <jamie@freebsd.org>
To:        freebsd-jail@freebsd.org
Cc:        Heinz Gies <heinz@project-fifo.net>, Kevin Meziere <kevin@project-fifo.net>
Subject:   Re: Fixed ip's for jails
Message-ID:  <a28067a8af8f4b78edffb44553a69424@freebsd.org>
In-Reply-To: <EA6019AD-71ED-4ABB-B99A-248F62D3C369@project-fifo.net>
References:  <EA6019AD-71ED-4ABB-B99A-248F62D3C369@project-fifo.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2017-07-06 12:57, Heinz Gies wrote:
> Good afternoon everyone,
> we are currently contemplating how to handle multi-tenant Jails best
> to allow ProjectFiFo to administer FreeBSD Jails along with Solaris
> Zones.
> 
> The hurdle we have run into is the following:
> 
> With vnet Jails the owner could change the IP, making it impractical
> for multi-tenancy.
> 
> With no-vnet Jails, all the jails would share the same network stack
> removing a layer of isolation and risking a noisy neighbour problem.
> 
> There are a few possible solutions it seems.
> 
> Allen suggested using the firewall to restrict the traffic from a vnet
> in the global zone (host system, not sure how BSD calls it). The top
> of mind issue with this is that it would block multicast.
> 
> An alternative Kevin came up with was putting a jail inside another
> jail, with the outer jail being a vimage jail and the inner jail using
> a static (non-vnet IP). This would also mean later on beehive inside a
> jail would be easier as it could follow the same logic. On the other
> hand, I am a bit worried about unforeseen consequences of this
> approach. Also, I am not 100% positive whether the inner jail would
> use the vnet network stack for it is IP and not the global one.
> 
> Thank you for your input.

I'm for the jail within a jail.  Rest assured that the child jail will 
be inside the vnet that the parent jail was created with.  The outer 
jail need not be running anything - just run enough to set up the 
network, and set its "persist" parameter.  Then it's nothing but an 
empty shell to hold the network for the inner jail, with almost no 
overhead.  The inner jail doesn't need any IP restrictions, which 
inherits (but can't change) the parent's addresses.  Something like 
this:

foo {
   vnet;
   vnet.interface = foo0;
   persist;
}

foo.client {
   <normal jail parameters>;
}

As for unforeseen consequences, I don't foresee any ;-).

- Jamie



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