FS#69258 - [docker] IPv6 is no longer proxied with 20.10.2

Attached to Project: Community Packages
Opened by Sébastien Luttringer (seblu) - Saturday, 09 January 2021, 12:46 GMT
Last edited by Sébastien Luttringer (seblu) - Monday, 12 April 2021, 16:12 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Sébastien Luttringer (seblu)
Morten Linderud (Foxboron)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

Since 20.10.2, IPv6 host forwarding to IPv4 container is broken.

Links:
- https://github.com/moby/moby/issues/41858
- https://github.com/moby/libnetwork/pull/2604
- https://github.com/moby/libnetwork/issues/2607
- https://github.com/moby/libnetwork/pull/2608

Rollback to 20.10.1 is a workaround until further notice.
This task depends upon

Closed by  Sébastien Luttringer (seblu)
Monday, 12 April 2021, 16:12 GMT
Reason for closing:  Fixed
Additional comments about closing:  20.10.6-1
Comment by Morten Linderud (Foxboron) - Saturday, 09 January 2021, 12:49 GMT
How much is this used you reckon? We could wait and see how many people are touched by it before we try wait for available patches?

Also could you write down a way to reproduce :)?
Comment by Sébastien Luttringer (seblu) - Saturday, 09 January 2021, 13:15 GMT
We have no stats about how our great arch users configure their docker, so you know. :)
That remembered, if you have an IPv6 host, your forwarded ports to a container works for IPv4 and IPv6 until now. So, I think it will have impact on folks who use IPv6 (the best of us?) and have no IPv6 stack on containers (IMHO most of them).

The way to reproduce, is well explained in the libnetwork ticket. The ascii schema in this reply helps to catch it quickly: https://github.com/moby/libnetwork/issues/2607#issuecomment-755104810.

Waiting to break people setup to count them doesn't look like a good idea to me. Not to mention, it's sneaky as IPv4 connection still works and service may only be broken on IPv6.

I think discussion around it was a good idea are finished but I will wait the pending patch (2608) to be merged before trying it and eventually release a downstream package.

Comment by Morten Linderud (Foxboron) - Saturday, 09 January 2021, 13:18 GMT
I was thinking about the people upvoting the ticket and/or complaining on this bug ticket. It should give a good approximation how it touches people.

But yes, waiting for the patch to be merged and see if it fixes the problem before contemplating a downgrade sounds good to me :) Thanks for the work!
Comment by Sébastien Luttringer (seblu) - Thursday, 14 January 2021, 10:38 GMT
The patch has been merged upstream, but I still have the same issue a patched package. This has been reported upstream.
Comment by Sébastien Luttringer (seblu) - Tuesday, 19 January 2021, 03:09 GMT
The 20.10.2-2 package was pushed by mistake with others but it doesn't fix this issue.

Our PKGBUILD is broken, we don't build with the libnetwork we fetch in $sources.

$ find -path *bridge/port_mapping.go
./src/moby/vendor/github.com/docker/libnetwork/drivers/bridge/port_mapping.go
./src/libnetwork/drivers/bridge/port_mapping.go
Comment by Sébastien Luttringer (seblu) - Tuesday, 19 January 2021, 04:32 GMT
dockerd is built against a libnetwork shipped in its vendor directory. The driver used to call docker-proxy is in it.
docker-proxy binary is built with a libnetwork at another location (the one we pull in sources).

We have the same library in two places, with potentially 2 different versions, to handle the same component which is the docker-proxy.
Not sure if we are broken or it's upstream design...

The 20.10.2-3 package apply the fixes on the correct file.

Comment by Morten Linderud (Foxboron) - Tuesday, 19 January 2021, 08:11 GMT
I don't think it's broken. It's intended from upstream and the commit we use are backported from vendor.conf.

https://github.com/moby/moby/blob/v20.10.2/vendor.conf#L50

I'm more curious about the case of the other components we are pulling. If we can drop the subcomponents because of the vendor then that is IMO better and simplifies the PKGBUILD.
Comment by Lukas Becker (elovin) - Tuesday, 19 January 2021, 11:11 GMT
I`m not sure if this is the same problem but after updating from 20.10.2-1 to 20.10.2-3 multiple port bindings fail "driver failed programming external connectivity on endpoint" downgrading the package back to 20.10.2-1 resolves the issue.
Comment by Sébastien Luttringer (seblu) - Tuesday, 19 January 2021, 12:07 GMT
Have you created your containers with docker cli?

Could you report this in https://github.com/moby/libnetwork/issues/2607 ?
Comment by Lukas Becker (elovin) - Tuesday, 19 January 2021, 12:57 GMT
Not directly, I use docker-compose.

UPDATE:

You already reported it here ? https://github.com/ansible-collections/community.docker/issues/70
Comment by Sébastien Luttringer (seblu) - Tuesday, 19 January 2021, 13:35 GMT
This issue is about containers created with ansible.

If your issue is with docker-compose, I think you should mention it on the moby issue.
Comment by Lukas Becker (elovin) - Tuesday, 19 January 2021, 13:43 GMT
Sorry my bad, I will report it.

UPDATE:
I tested it with docker cli, the port binding problem exists there too.

There is a new bug report (https://bugs.archlinux.org/task/69367) that seems to be the same problem.
Comment by Sébastien Luttringer (seblu) - Tuesday, 19 January 2021, 17:05 GMT
Looks like the docker-proxy daemons for IPv6 are not killed.

I'm building a -4 version, without the patch. Next patched versions will first land in cty-testing.
Comment by Morten Linderud (Foxboron) - Thursday, 25 February 2021, 17:24 GMT
Is this still a problem?
Comment by Sébastien Luttringer (seblu) - Thursday, 25 February 2021, 18:09 GMT
yes, you can read last comments here: https://github.com/moby/libnetwork/issues/2607
Comment by Morten Linderud (Foxboron) - Thursday, 25 February 2021, 18:12 GMT
Thanks!

Loading...