From: Stefano Brivio <sbrivio@redhat.com>
To: Juan Orti <jorti@pm.me>
Cc: David Gibson <david@gibson.dropbear.id.au>,
"passt-user@passt.top" <passt-user@passt.top>
Subject: Re: IPv6 UDP not working
Date: Sun, 28 May 2023 16:38:12 +0200 [thread overview]
Message-ID: <20230528163812.69e359dd@elisabeth> (raw)
In-Reply-To: <f-nJ1KitgkeYn6HdFq8N0pY-dQ-5Uq6H_hJwRgESLcdngsZ8OjuAIONxHroPLpfVd7dgmABFLEmkaQXThIUeNmKkcSBelNgFeEtzBU0sAsE=@pm.me>
On Sun, 28 May 2023 10:50:20 +0000
Juan Orti <jorti@pm.me> wrote:
> ------- Original Message -------
> El domingo, 28 de mayo de 2023 a las 12:12, Juan Orti <jorti@pm.me> escribió:
>
> > I don't understand why it's not working, as the service listens on the :: address. Maybe it's using a socket option that it's causing this? I need to investigate this further.
> >
> > # netstat -putan
> > Active Internet connections (servers and established)
> > Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
> > tcp 0 0 :::3003 :::* LISTEN 2/AdGuardHome
> > tcp 0 0 :::54 :::* LISTEN 2/AdGuardHome
> > udp 0 0 :::54 :::* 2/AdGuardHome
> >
> > # cat /proc/net/udp6
> > sl local_address remote_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
> >
> > 4718: 00000000000000000000000000000000:0036 00000000000000000000000000000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 38510801 2 0000000073476783 0
>
> After stracing the AdGuardHome process, I can see that the UDP packet is indeed reaching the service but it's the reply that fails to be sent:
>
> 11 10:25:04.445902 recvmsg(25<UDPv6:[38993134]>, <unfinished ...>
> 11 10:25:04.446238 <... recvmsg resumed>{msg_name={sa_family=AF_INET6, sin6_port=htons(33308), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fddc:f797:78ef:10::b46", &sin6_addr), sin6_scope_id=0}, msg_namelen=112 => 28, msg_iov=[{iov_base="\246\245\1 \0\1\0\0\0\0\0\1\3www\6google\3com\0\0\1\0\1\0\0)\4\320\0\0\0\0\0\f\0\n\0\10\207a\315\224\245\253\v\37", iov_len=65535}], msg_iovlen=1, msg_control=[{cmsg_len=36, cmsg_level=SOL_IPV6, cmsg_type=0x32}], msg_controllen=40, msg_flags=0}, 0) = 55 <0.000059>
> 11 10:25:04.446371 futex(0xc000064548, FUTEX_WAKE_PRIVATE, 1 <unfinished ...>
> 11 10:25:04.446415 <... futex resumed>) = 1 <0.000032>
> 11 10:25:04.446461 recvmsg(25<UDPv6:[38993134]>, <unfinished ...>
> 11 10:25:04.446658 <... recvmsg resumed>{msg_namelen=112}, 0) = -1 EAGAIN (Resource temporarily unavailable) <0.000097>
> 11 10:25:04.447130 sendmsg(25<UDPv6:[38993134]>, {msg_name={sa_family=AF_INET6, sin6_port=htons(33308), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fddc:f797:78ef:10::b46", &sin6_addr), sin6_scope_id=0}, msg_namelen=28, msg_iov=[{iov_base="\246\245\201\200\0\1\0\1\0\0\0\0\3www\6google\3com\0\0\1\0\1\300\f\0\1\0\1\0\0\0\n\0\4\330\357&x", iov_len=48}], msg_iovlen=1, msg_control=[{cmsg_len=36, cmsg_level=SOL_IPV6, cmsg_type=0x32}], msg_controllen=40, msg_flags=0}, 0) = -1 EINVAL (Invalid argument) <0.000020>
>
> It's not clear to me what's wrong with the sendmsg syscall. Any ideas?
I guess that might come from the IPV6_PKTINFO ancillary data
(cmsg_type 0x32) -- I'm not sure how and why it's used here as strace
doesn't dump the CMSG_DATA content, but, having a look at
ip6_datagram_send_ctl() (net/ipv6/datagram.c), EINVAL might come from:
1. a link-local address being passed along... I doubt that's the case
2. a non-local address (or one we can't bind to anyway) being used. To
check if we're in this case, it would be helpful if you could share
the addressing information from the container (ip -6 address show),
and if you could try 'sysctl -w net.ipv6.ip_nonlocal_bind = 1',
again from the container.
--
Stefano
next prev parent reply other threads:[~2023-05-28 14:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <o0t07HOIe1WVorR4ppjQtAzY-E0bv5xAt-6UHTffXL_jo2sor1DmCVar_CuqwchJNLRUt8Q3mK3eZfQdJh0ryvXvuf-ewSHRBT5MhOoglDw=@pm.me>
2023-05-28 5:23 ` IPv6 UDP not working David Gibson
2023-05-28 10:12 ` Juan Orti
2023-05-28 10:50 ` Juan Orti
2023-05-28 14:38 ` Stefano Brivio [this message]
2023-05-28 16:27 ` Juan Orti
2023-05-28 22:08 ` Stefano Brivio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230528163812.69e359dd@elisabeth \
--to=sbrivio@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=jorti@pm.me \
--cc=passt-user@passt.top \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).