status-im / nimbus-eth2

Nim implementation of the Ethereum Beacon Chain
https://nimbus.guide
Other
508 stars 214 forks source link

Feature: IPv6 support #4839

Open yorickdowne opened 1 year ago

yorickdowne commented 1 year ago

Is your feature request related to a problem? Please describe.

With CGNAT becoming more prevalent, peering is hard for users when IPv4 incoming connections are not available.

Describe the solution you'd like

Support IPv6 for P2P. This could be done by doing dual-stack by default, and as well by allowing one v4 and one v6 --listen-address. Lighthouse for example does --listen-address 0.0.0.0 --listen-address :: for dual-stack, and specifying only either gets you a v4 or v6 solo stack.

Context

P2P support is the driver, here. Metrics, REST, key manager, all can stay v4, at least initially. If it's trivial to make them dual-stack as well, by all means do, but for the bulk of users where this is an issue - home users with CGNAT - they'll have v4 available and they won't need to reach REST via v6 from "the Internet"

tersec commented 1 year ago

Depends on https://github.com/status-im/nim-eth/issues/243

See also discussion in https://github.com/status-im/nim-eth/pull/367

tersec commented 1 year ago

More IPv6 discussion: https://github.com/status-im/nimbus-eth2/issues/2210

arnetheduck commented 4 months ago

Looked into how other server software deals with config (apache and nginx in this case), here's a UX plan at least:

In the future, we can support multiple --listen-address to bind to several specific protocols and interfaces.

tersec commented 2 months ago

Depends on https://github.com/status-im/nimbus-eth2/issues/6060 / https://github.com/status-im/nimbus-eth2/pull/6154 for full functionality