Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Dec 2016 21:53:31 +0100
From:      Michael Grimm <trashcan@ellael.org>
To:        freebsd-jail@FreeBSD.org
Subject:   Re: multiple interfaces for jail.conf(1) and jail_set(2)
Message-ID:  <818391CE-7425-49DF-8794-B6E43C1389AD@ellael.org>
In-Reply-To: <907B489D-899A-4204-96D8-ACF86EE829A7@blackskyresearch.net>
References:  <0ED7F403-F14E-4A72-8E54-AF74AAE15061@blackskyresearch.net> <45822529-2096-4B32-8515-F5875BEF7101@ellael.org> <907B489D-899A-4204-96D8-ACF86EE829A7@blackskyresearch.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Isaac (.ike) Levy <ike@blackskyresearch.net> wrote

> Wow, that=E2=80=99s rad Michael,
>=20
>> On Dec 14, 2016, at 3:30 PM, Michael Grimm <trashcan@ellael.org> =
wrote:
>>=20
>> Isaac (.ike) Levy <ike@blackskyresearch.net> wrote:
>>=20
>>> Can I specify multiple IP interfaces and assign IP=E2=80=99s to them =
using jail.conf?
>>=20
>> Not sure if I understand your question correctly, but I do define the =
following in my jail.conf for VNET jails:
>>=20
>> #
>> # host dependent global settings
>> #
>> $ip6prefixLOCAL		 =3D "fd00:dead:beef:1234";
>>=20
>> #
>> # global jail settings
>> #
>> host.hostname		 =3D "${name}";
>> path			 =3D "/usr/home/jails/${name}";
>> mount.fstab		 =3D "/etc/fstab.${name}";
>> exec.consolelog 	 =3D "/var/log/jail_${name}_console.log";
>> vnet			 =3D "new";
>> vnet.interface		 =3D "epair${jailID}b";
>> exec.clean;
>> mount.devfs;
>> persist;
>>=20
>> #
>> # network settings to apply/destroy during start/stop of every jail
>> #
>> exec.prestart		 =3D "sleep 2";
>> exec.prestart		+=3D "/sbin/ifconfig epair${jailID} =
create up";
>> exec.prestart		+=3D "/sbin/ifconfig bridge0 addm =
epair${jailID}a";
>> exec.start		 =3D "/sbin/sysctl net.inet6.ip6.dad_count=3D0";
>> exec.start		+=3D "/sbin/ifconfig lo0 127.0.0.1 up";
>> exec.start		+=3D "/sbin/ifconfig epair${jailID}b inet =
${ip4_addr}";
>> exec.start		+=3D "/sbin/ifconfig epair${jailID}b inet6 =
${ip6_addr}";
>> exec.start		+=3D "/sbin/route add default -gateway =
10.1.1.254";
>> exec.start		+=3D "/sbin/route add -inet6 default -gateway =
${ip6prefixLOCAL}::254";
>> exec.stop		 =3D "/sbin/route del default";
>> exec.stop		+=3D "/sbin/route del -inet6 default";
>> exec.stop		+=3D "/bin/sh /etc/rc.shutdown";
>> exec.poststop 		 =3D "/sbin/ifconfig epair${jailID}a =
destroy";
>>=20
>> #
>> # individual jail settings
>> #
>> dns {
>> 	$jailID		 =3D 1;
>> 	$ip4_addr	 =3D 10.1.1.1;
>> 	$ip4_addr_2	 =3D 10.1.1.2;
>> 	$ip6_addr	 =3D ${ip6prefixLOCAL}::1/64;
>> 	$ip6_addr_2	 =3D ${ip6prefixLOCAL}::2/64;
>> 	exec.start	+=3D "/sbin/ifconfig epair${jailID}b inet  =
${ip4_addr_2} alias";
>> 	exec.start	+=3D "/sbin/ifconfig epair${jailID}b inet6 =
${ip6_addr_2} alias";
>> 	exec.start	+=3D "/bin/sh /etc/rc";
>> }
>>=20
>> etc.
>=20
> I=E2=80=99ll need to study/look up some of that syntax, to fully grok =
this, but that comprehensive example appears to hit the nail on the head =
several times over with the exec.start/exec.stop action.
>=20
> Two questions though:
>=20
> - I=E2=80=99m confused how you define the shell style $ variables in =
your individual jail settings above, e.g. =E2=80=98$ip4_addr_2 =3D =
10.1.1.2;=E2=80=99, why/how does that work?  Is that a variable to be =
expanded, or some other behavior?

This is described in jail.conf(5) under the section "variables". I do =
have 10 jails running, and those $ variables/parameters are very =
helpful, indeed.

>> Again, not sure if I do understand your issue correctly, but the =
shown examples of exec.start, exec.stop, etc. are quite versatile to =
use.
>>=20
>> I do start/stop my jails by "service jail start/stop=E2=80=9D.
>=20
> - Obviously you state you=E2=80=99re using service to start/stop =
jails, but shouldn=E2=80=99t this work with =E2=80=98jail -c =
<jailname>=E2=80=99, or are these subsystems not interoperable?

Hmm. I do have to admit that I never tried 'jail -c <jailname>', but I =
just gave it a try, and yes, it works as well :-)=20

I do use "service jail start/stop" because that will obey my pre-defined =
starting/stopping order of jails (which I do need to have, e.g. dns =
before mail and such) in /etc/rc.conf

	jail_enable=3D"YES"
	jail_reverse_stop=3D"YES"
	jail_list=3D"dns mail ..."

Regards,
Michael




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?818391CE-7425-49DF-8794-B6E43C1389AD>