From: Stoiko Ivanov <s.ivanov@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH common v2 2/2] daemon: explicitly bind to wildcard address.
Date: Tue, 4 May 2021 19:00:26 +0200 [thread overview]
Message-ID: <20210504170032.8721-3-s.ivanov@proxmox.com> (raw)
In-Reply-To: <20210504170032.8721-1-s.ivanov@proxmox.com>
with the recent change in pve-manager pveproxy (and spiceproxy)
try binding to '::' per default. This fails for hosts having disabled
ipv6 via kernel commandline.
Our desired behavior of binding on '::' and only falling back to
'0.0.0.0' in case this is not supported is not directly possible with
IO::Socket::IP->new (or rather by Socket::GetAddrInfo, which at least
on my system always returns the v4 wildcard-address first).
the code now binds to:
* the provided $host if not undef
* '::' if $host is not set
* '0.0.0.0' if $host is not set and binding on '::' yields an error
Tested-by: Oguz Bektas <o.bektas@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
---
src/PVE/Daemon.pm | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/PVE/Daemon.pm b/src/PVE/Daemon.pm
index 79b90ad..2ab4f35 100644
--- a/src/PVE/Daemon.pm
+++ b/src/PVE/Daemon.pm
@@ -819,14 +819,23 @@ sub create_reusable_socket {
$socket->fcntl(Fcntl::F_SETFD(), Fcntl::FD_CLOEXEC);
} else {
- $socket = IO::Socket::IP->new(
- LocalHost => $host,
+ my %sockargs = (
LocalPort => $port,
Listen => SOMAXCONN,
Proto => 'tcp',
GetAddrInfoFlags => 0,
- ReuseAddr => 1) ||
- die "unable to create socket - $@\n";
+ ReuseAddr => 1,
+ );
+ if (defined($host)) {
+ $socket = IO::Socket::IP->new( LocalHost => $host, %sockargs) ||
+ die "unable to create socket - $@\n";
+ } else {
+ # disabling AF_INET6 (by adding ipv6.disable=1 to the kernel cmdline)
+ # causes bind on :: to fail, try 0.0.0.0 in that case
+ $socket = IO::Socket::IP->new( LocalHost => '::', %sockargs) //
+ IO::Socket::IP->new( LocalHost => '0.0.0.0', %sockargs);
+ die "unable to create socket - $@\n" if !$socket;
+ }
# we often observe delays when using Nagle algorithm,
# so we disable that to maximize performance
--
2.20.1
next prev parent reply other threads:[~2021-05-04 17:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-04 17:00 [pve-devel] [PATCH common/manager/http-server/docs] v2] improve binding, docs and access-control for pveproxy/spiceproxy Stoiko Ivanov
2021-05-04 17:00 ` [pve-devel] [PATCH common v2 1/2] daemon: drop Domain parameter from create_reusable_socket Stoiko Ivanov
2021-05-04 17:00 ` Stoiko Ivanov [this message]
2021-05-04 17:00 ` [pve-devel] [PATCH manager v2 1/1] proxy: fix wildcard address use Stoiko Ivanov
2021-05-04 17:00 ` [pve-devel] [PATCH http-server v2 1/2] access control: correctly match v4-mapped-v6 addresses Stoiko Ivanov
2021-05-04 17:00 ` [pve-devel] [PATCH http-server v2 2/2] access control: also include ipv6 in 'all' Stoiko Ivanov
2021-05-04 17:00 ` [pve-devel] [PATCH docs v2 1/3] pveproxy: add note about bindv6only sysctl Stoiko Ivanov
2021-05-04 17:00 ` [pve-devel] [PATCH docs v2 2/3] pveproxy: update documentation on 'all' alias Stoiko Ivanov
2021-05-04 17:00 ` [pve-devel] [PATCH docs v2 3/3] network: shortly document disabling ipv6 support Stoiko Ivanov
2021-05-05 5:25 ` [pve-devel] [PATCH common/manager/http-server/docs] v2] improve binding, docs and access-control for pveproxy/spiceproxy Thomas Lamprecht
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=20210504170032.8721-3-s.ivanov@proxmox.com \
--to=s.ivanov@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/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