Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Jan 2023 13:09:51 +0100
From:      Mathias Picker <Mathias.Picker@virtual-earth.de>
To:        Alexander Leidinger <Alexander@leidinger.net>
Cc:        freebsd-emulation@freebsd.org
Subject:   Re: Linux jail 14-CURRENT: DNS does not work for *some* programs?
Message-ID:  <86h6wyvb1f.fsf@virtual-earth.de>
In-Reply-To: <20230110084013.Horde.685bQie_CaYVmp_jzMaMTeq@webmail.leidinger.net>
References:  <CA4C4A0C-F394-473C-9FC2-3EF5B1E2F1FD@virtual-earth.de> <20230110084013.Horde.685bQie_CaYVmp_jzMaMTeq@webmail.leidinger.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Alexander,

thanks for your suggestion.

Alexander Leidinger <Alexander@leidinger.net> writes:

> [[PGP Signed Part:Undecided]]
> Quoting Mathias Picker <Mathias.Picker@virtual-earth.de> (from=20
> Tue, 10 Jan 2023
> 06:51:06 +0100):
>
>> Hi all,
>>
>> I=E2=80=99m testing a few linux triplestore in a linux jail, and used=20
>> 13.1  which
>> worked fine most of the time.
>>
>> Now one of the stores shows dropped connections with many=20
>> clients,  and as I
>> can see logs of netlink errors in the logs, I thought I=E2=80=99d  try=20
>> -CURRENT.
>>
>> Sadly, my linux jail (Ubuntu 16.04.7) now shows an irritating=20
>> behaviour, some
>> programs seem to hang indefinitely waiting for name=20
>> resolution:
>>
>> Inside the jail:
>>
>> Working version with ping
> [example]
>
>> Non-working with wget (same for curl and others)
> [example]
>
>> So, this tcpdump looks pretty much as if both got answers from=20
>> unbound.
>> Why is wget (and host, and curl, and sudo) not =E2=80=9Cgetting=E2=80=9D=
 this=20
>> answer?
>>
>> Any ideas where to look or questions about my setup welcome!
>
> Current has netlink support, 13.1 doesn't. Current may have=20
> changes in the
> linuxumaltor, which aren't in 13.1. You need to debug the kernel=20
> path. Possible
> tools to do so are ktrace and dtrace.
>
> The most easy cmdline would be ktrace, whereas dtrace gives more=20
> flexibility in
> what you do and how you look at it. As a first step I would=20
> recommend ktrace.
> Not sure if it will work as I want it to work...
>
> ktrace -di jexec "ID or name of jail" ping google.de
> After you have seen the answer with tcpdump, you can kill=20
> ktrace/ping (or wait
> for a timeout, but this will increase the amount of data traced)=20
> and inspect the
> result via "kdump" (this will take the file "ktrace.out" in the=20
> current
> directory and print out the data).

This trace ends with

 32282 wget     CALL  linux_socket(0x10,0x3,0)
 32282 wget     RET   linux_socket 3
 32282 wget     CALL  linux_bind(0x3,0x7fffffffad20,0xc)
 32282 wget     STRU  struct sockaddr { AF_NETLINK, unknown=20
 address family }
 32282 wget     RET   linux_bind 0
 32282 wget     CALL=20
 linux_getsockname(0x3,0x7fffffffad20,0x7fffffffad1c)
 32282 wget     STRU  struct sockaddr { AF_NETLINK, unknown=20
 address family }
 32282 wget     RET   linux_getsockname 0
 32282 wget     CALL=20
 linux_sendto(0x3,0x7fffffffad50,0x14,0,0x7fffffffad30,0xc)
 32282 wget     GIO   fd 3 wrote 20 bytes
       0x0000 1400 0000 1600 0103 f324  |.........$|
       0x000a bd63 0000 0000 0000 0000  |.c........|
 32282 wget     RET   linux_sendto 20/0x14
 32282 wget     CALL  linux_recvmsg(0x3,0x7fffffffad70,0)
 32282 wget     GIO   fd 3 read 40 bytes
       0x0000 2800 0000 0200 0000 f324  |(........$|
       0x000a bd63 1a7e 0000 eaff ffff  |.c.~......|
       0x0014 1400 0000 1600 0103 f324  |.........$|
       0x001e bd63 1a7e 0000 0000 0000  |.c.~......|
 32282 wget     STRU  struct sockaddr { AF_NETLINK, unknown=20
 address family }
 32282 wget     RET   linux_recvmsg 40/0x28
 32282 wget     CALL  linux_recvmsg(0x3,0x7fffffffad70,0)
 32282 wget     RET   linux_recvmsg -1 errno -4 Interrupted system=20
 call
 32282 wget     PSIG  SIGINT SIG_DFL code=3DSI_KERNEL

Sadly, I have to get the benchmarks up and running, so I will=20
install Linux on the machine and cannot follow up on this.

Maybe I=E2=80=99ll try this again next week on another server, since=20
installing -CURRENT in another boot environment was so easy.

Thanks,

Mathias

> IF this works (I'm not sure if the ktrace inherits(descents into=20
> a jail), you
> will see the calls to jexec and the exec of ping and what all=20
> those do in the
> kernel. This will then give a hint where to look next.
>
> IF this doesn't work, you can use "ktrace -di -p <pid of ping>"=20
> from the
> jail-host while ping is running. If ping tries to redo the DNS=20
> lookup, or a
> second nameserver is configured and it tries to get the info=20
> from the second
> after a timeout, you may be lucky to catch that in the trace.
>
> Bye,
> Alexander.


--=20
Mathias Picker=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20
Gesch=C3=A4ftsf=C3=BChrer
Mathias.Picker@virtual-earth.de

virtual earth Gesellschaft f=C3=BCr Wissens re/pr=C3=A4 sentation mbH
http://www.virtual-earth.de/           HRB126870
support@virtual-earth.de               Westendstr. 142
089 / 1250 3943=20=20=20=20=20=20=20=20=20=20=20=20



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