How early can jails be started?
Allan Jude
allanjude at freebsd.org
Thu Aug 14 01:21:04 UTC 2014
On 2014-08-13 21:08, Warren Block wrote:
> On Sat, 9 Aug 2014, James Gritton wrote:
>
>> On 8/9/2014 6:53 PM, Warren Block wrote:
>>> Is it technically possible to start a jail much earlier in the boot
>>> order?
>>>
>>> The reason is that a jailed DNS server could be used by the host if
>>> it was started before any of the host's network services needed DNS.
>>> After /etc/rc.d/netwait, say.
>>>
>>> There may be other jailed services that would also benefit from an
>>> early start, but DNS is something of a special case and the only one
>>> that comes to mind.
>>
>> Sure - jails can go quite early. Technically, very near the beginning.
>>
>> You'll want local filesystems, assuming you want your jail chrooted
>> somewhere (you do for normal-use jails, but it's not as obviously true
>> for single-purpose jails). In the same situation, you'd want to
>> depend on devfs so you can mount a devfs with the proper ruleset.
>>
>> If you want to add IP address aliases, you'll need networking set up,
>> but if you just want to restrict to already existing addresses or run
>> in an unrestricted IP setup, you don't even need that. Except ...
>>
>> Other than that, the only restriction is what you want to do with the
>> jail. So for the DNS server example, it's whatever an unjailed DNS
>> server would require. So yeah, something like netwait.
>
> (Sorry for multiposting--I put this on the ezjail list also. But it's
> generally applicable to ordinary jails too.)
>
> It works... mostly. This file is /etc/rc.d/earlyjail:
>
> #!/bin/sh
> # PROVIDE: earlyjail
> # REQUIRE: netwait
> # KEYWORD:
> # BEFORE: mountcritremote
> /usr/local/etc/rc.d/ezjail start dns1
>
> That was a quick hack, not expected to work, but it did. However...
>
> /usr/local/etc/rc.d/ezjail
>
> When /etc/rc.d/jail runs much later in the startup, it tries to start
> that jail again, and gets an error because of it. Seeing the error, it
> deletes /var/run/jail_dns1.id. ezjail uses those jail_*.id files to
> detect which jails are running, and is sure that dns1 is not running.
> jls does show things correctly. I'm not sure if there is a workaround
> short of modifying /etc/rc.d/jail.
>
> The second problem might be simpler to solve. With sendmail_enable="NO"
> in the dns1 jail (so it can send status email), sendmail on the host is
> blocked:
>
> sm-mta[679]: daemon Daemon0: problem creating SMTP socket
> sm-mta[679]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon Daemon0:
> cannot bind: Can't assign requested address
>
> If the host sendmail is killed and restarted, it works. And of course
> it also works when sendmail is started on the host first and the jails
> use sendmail_enable="NO". I'm not really sure what's going on there.
> _______________________________________________
> freebsd-jail at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-jail
> To unsubscribe, send any mail to "freebsd-jail-unsubscribe at freebsd.org"
Sendmail still starts with sendmail_enable="NO"
try sendmail_enable="NONE"
--
Allan Jude
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 899 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-jail/attachments/20140813/eb88b788/attachment.sig>
More information about the freebsd-jail
mailing list