[SERVER-42065] 'Address family not supported by protocol' depending on the way used to disable IPv6 Created: 03/Jul/19  Updated: 29/Oct/23  Resolved: 10/Mar/20

Status: Closed
Project: Core Server
Component/s: Networking
Affects Version/s: None
Fix Version/s: 4.7.0

Type: Bug Priority: Major - P3
Reporter: Carlos Rodríguez Hernández Assignee: Amirsaman Memaripour
Resolution: Fixed Votes: 0
Labels: neweng
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Backwards Compatibility: Fully Compatible
Operating System: ALL
Steps To Reproduce:

Using a configuration file with 

net:  
  ipv6: true

disabling IPv6 in the system by running

sudo sysctl -w net.ipv6.conf.*.disable_ipv6=1

it works fine, but disabling it passing 

ipv6.disable=1

as a bootarg to the Linux kernel, we obtain the 
 

2019-06-21T14:09:17.995+0000 I STORAGE [initandlisten] exception in initAndListen std::exception: open: Address family not supported by protocol, terminating 

error message in the logs and the service doesn't run.

Sprint: Service Arch 2019-10-07, Service Arch 2019-10-21, Service Arch 2019-11-18, Service Arch 2019-12-02, Service Arch 2019-12-16, Service Arch 2019-12-30, Service Arch 2020-01-13, Service Arch 2020-01-27, Service Arch 2020-02-10, Service Arch 2020-03-23
Participants:

 Description   

Tested on k8s by setting the ipv6 parameter to true or false in the mongodb.conf file:

# network interfaces
net:
  port: 27017
  unixDomainSocket:
    enabled: true
    pathPrefix: /opt/bitnami/mongodb/tmp
  ipv6: true
  bindIpAll: true

 

In some k8s cluster, mongodb service is not running because of the following error (from mongodb.log):

2019-06-21T14:09:17.987+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] MongoDB starting : pid=36 port=27017 dbpath=/opt/bitnami/mongodb/data/db 64-bit host=carlosrh-mongo-mongodb-76bc884646-ztpxl
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] db version v4.0.10
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.1.0j 20 Nov 2018
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] allocator: tcmalloc
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] modules: none
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] build environment:
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] distmod: debian92
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] distarch: x86_64
2019-06-21T14:09:17.992+0000 I CONTROL [initandlisten] target_arch: x86_64
2019-06-21T14:09:17.993+0000 I CONTROL [initandlisten] options: { config: "/opt/bitnami/mongodb/conf/mongodb.conf", net: { bindIpAll: true, ipv6: true, port: 27017, unixDomainSocket: { enabled: true, pathPrefix: "/opt/bitnami/mongodb/tmp" } }, processManagement: { fork: false, pidFilePath: "/opt/bitnami/mongodb/tmp/mongodb.pid" }, security: { authorization: "disabled" }, setParameter: { enableLocalhostAuthBypass: "true" }, storage: { dbPath: "/opt/bitnami/mongodb/data/db", directoryPerDB: false, journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, logRotate: "reopen", path: "/opt/bitnami/mongodb/logs/mongodb.log", quiet: false, verbosity: 0 } }
2019-06-21T14:09:17.995+0000 I STORAGE [initandlisten] exception in initAndListen std::exception: open: Address family not supported by protocol, terminating
2019-06-21T14:09:17.996+0000 I CONTROL [initandlisten] now exiting
2019-06-21T14:09:17.996+0000 I CONTROL [initandlisten] shutting down with code:100

This message is very descriptive:

2019-06-21T14:09:17.995+0000 I STORAGE [initandlisten] exception in initAndListen std::exception: open: Address family not supported by protocol, terminating

 

Although the host has disabled IPv6, it is expected that MongoDB will try to use IPv4 in its absence, in fact, we tried it when using this parameter for the first time, so why in some k8s cluster works and not in others?

We can disable IPv6 support by running

sudo sysctl -w net.ipv6.conf.*.disable_ipv6=1

in this case, mongodb server does not complain about unsupported address family when IPv6 is enabled in the configs. This reflects with our earlier findings as we had used the same method to disable IPv6.

 

Continuing on our investigation, we found that the alternate way of disabling IPv6 support is to pass

ipv6.disable=1

as a bootarg to the Linux kernel and with this, we were able to see the unsupported address family error with mongodb.

With these findings, we cannot make the assumption that IPv6 enabled in the mongodb configs by default will always work regardless of whether the underlying host supports IPv6 or not.

 



 Comments   
Comment by Githook User [ 10/Mar/20 ]

Author:

{'name': 'Amirsaman Memaripour', 'username': 'samanca', 'email': 'amirsaman.memaripour@mongodb.com'}

Message: SERVER-42065 Handle bindIpAll exception when ipv6 is not supported
Branch: master
https://github.com/mongodb/mongo/commit/fe90d82d6ce709828c8ed22e83262190dda5570a

Comment by Carlos Rodríguez Hernández [ 29/Aug/19 ]

Sorry for the delay, as you can imagine after that, this is not a blocking issue for me, I just want to know the reasons and let you know. So you can schedule the task as you prefer.
Thanks!

Comment by Mira Carey [ 29/Jul/19 ]

setting ipv6.disable is fundamentally different than setting disable_ipv6.

The former completely avoids loading the ipv6 kernel module. The latter loads the kernel module, but avoids assigning addresses.

carrodher,
I can take a look at making the system a little more robust to that particular configuration (start the server with ipv6 on, but make the kernel completely unaware of ipv6), but I'd like to understand the urgency for you. If you specifically need ipv6.disable style disabling, I can look into scheduling that work sooner. If you're happy with either path and just want raise the issue to our attention, we may tackle this ticket on a looser schedule.

Comment by Carlos Rodríguez Hernández [ 10/Jul/19 ]

Thanks Daniel.

Comment by Danny Hatcher (Inactive) [ 08/Jul/19 ]

Thanks for your report, I will forward this ticket to the appropriate team.

Generated at Thu Feb 08 04:59:30 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.