diff --git a/internal/netlink/ipv6.go b/internal/netlink/ipv6.go index 07c51aff..d8eff77e 100644 --- a/internal/netlink/ipv6.go +++ b/internal/netlink/ipv6.go @@ -14,16 +14,21 @@ func (n *NetLink) IsIPv6Supported() (supported bool, err error) { // as IPv6 routes at container start, see: // https://github.com/qdm12/gluetun/issues/1241#issuecomment-1333405949 for _, route := range routes { + link, err := n.LinkByIndex(route.LinkIndex) + if err != nil { + return false, fmt.Errorf("finding link corresponding to route: %w", err) + } + sourceIsIPv6 := route.Src.IsValid() && route.Src.Is6() destinationIsIPv6 := route.Dst.IsValid() && route.Dst.Addr().Is6() - if sourceIsIPv6 || destinationIsIPv6 { - link, err := n.LinkByIndex(route.LinkIndex) - if err != nil { - return false, fmt.Errorf("finding IPv6 supported link: %w", err) - } - n.debugLogger.Debugf("IPv6 is supported by link %s", link.Name) - return true, nil + switch { + case !sourceIsIPv6 && !destinationIsIPv6, + destinationIsIPv6 && route.Dst.Addr().IsLoopback(): + continue } + + n.debugLogger.Debugf("IPv6 is supported by link %s", link.Name) + return true, nil } n.debugLogger.Debugf("IPv6 is not supported after searching %d routes",