On 28 Feb 2019, at 10:58, Miroslav Lachman wrote:

Is there some easy way to determine the primary (source) address which is used in jail with multiple IP addresses?

I came to this problem with running local_unbound in jail. Unbound refuses queries originating in this jail because the do not come from real 127.0.0.1 (which is the only one allowed by default). Unbound in jail see requests come from jails IP. It is easy to determine (in shell script) if jail has only one IP. But what in case where jail has multiple IPs? Is there some sysctl or some call to ifconfig or any other util to get the IP which will be used as source address for queries on local services in jail?

Bind the listen socket of the local unbound to any IP of your jail and other services (unless the source port got bound) will select the same IP address as the destination if both are in the same jail.


I know I can allow all IPs of jail in
access-control: a.b.c.d/32 allow
access-control: e.f.g.h/32 allow

I am just curios if there is some way to get "primary" IP in jail without calling anything from the host environment.

Open a UDP socket; bind to 127.1; call getsockname; https://reviews.freebsd.org/D19218 is currently having a similar issue solving it exactly that way.


There were people who in the past added a 127.{2,3,4,5,..} for each jail and then used that one instead of 127.1 but I’ve never been a huge fan of that, especially given one may run the resolver for other services outside that jail (maybe in others) as well and they need to be able to reach that in a reliable way.


/bz
_______________________________________________
freebsd-jail@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-jail
To unsubscribe, send any mail to "freebsd-jail-unsubscr...@freebsd.org"

Reply via email to