vacp2p / nim-libp2p

libp2p implementation in Nim
https://vacp2p.github.io/nim-libp2p/docs/
MIT License
248 stars 54 forks source link

Wildcard address resolver does not include IPv4 addresses when dualstack being used. #1147

Closed cheatfate closed 2 months ago

cheatfate commented 2 months ago

In Linux/MacOS/BSD OS if bound address is :: dual-stack become enabled, so such sockets could accept connections from both IPv6 and IPv4.

So for ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:69:7a:61:c2:d9 brd ff:ff:ff:ff:ff:ff
    altname enp0s31f6
    inet 192.168.2.100/24 brd 192.168.2.255 scope global dynamic noprefixroute eno1
       valid_lft 23500sec preferred_lft 12700sec
    inet6 fe80::80ff:200a:44b2:222d/64 scope link
       valid_lft forever preferred_lft forever
3: wlp0s20f3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether d8:3b:bf:95:61:04 brd ff:ff:ff:ff:ff:ff

Wildcard address resolver currently reports:

[
  "/ip6/::1/tcp/43348/p2p/16Uiu2HAmV7mVf3MUFoxRutif6p3MWBohamk4B9LL4C8RQSHoBuuQ",
  "/ip6/fe80::80ff:200a:44b2:222d/tcp/43348/p2p/16Uiu2HAmV7mVf3MUFoxRutif6p3MWBohamk4B9LL4C8RQSHoBuuQ"
]

but it should report

[
  "/ip6/::1/tcp/43348/p2p/16Uiu2HAmV7mVf3MUFoxRutif6p3MWBohamk4B9LL4C8RQSHoBuuQ",
  "/ip6/fe80::80ff:200a:44b2:222d/tcp/43348/p2p/16Uiu2HAmV7mVf3MUFoxRutif6p3MWBohamk4B9LL4C8RQSHoBuuQ",
  "/ip4/127.0.0.1/tcp/43348/p2p/16Uiu2HAmV7mVf3MUFoxRutif6p3MWBohamk4B9LL4C8RQSHoBuuQ",
  "/ip4/192.168.2.100/tcp/43348/p2p/16Uiu2HAmV7mVf3MUFoxRutif6p3MWBohamk4B9LL4C8RQSHoBuuQ"
]
diegomrsantos commented 2 months ago

We support this for all OSes, as Chronos enables IPv6 dual stack for Windows, changing the default behavior.

diegomrsantos commented 2 months ago

@kaiserd