libp2p: add QUIC and WebTransport to default listen addresses

This commit is contained in:
Marten Seemann 2023-05-10 10:51:08 +03:00
parent ceb3f1e41e
commit 0a064c1b3d
4 changed files with 16 additions and 6 deletions

View File

@ -38,7 +38,7 @@
# #
# type: []string # type: []string
# env var: LOTUS_LIBP2P_LISTENADDRESSES # env var: LOTUS_LIBP2P_LISTENADDRESSES
#ListenAddresses = ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0"] #ListenAddresses = ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0", "/ip4/0.0.0.0/udp/0/quic-v1", "/ip6/::/udp/0/quic-v1", "/ip4/0.0.0.0/udp/0/quic-v1/webtransport", "/ip6/::/udp/0/quic-v1/webtransport"]
# Addresses to explicitally announce to other peers. If not specified, # Addresses to explicitally announce to other peers. If not specified,
# all interface addresses are announced # all interface addresses are announced

View File

@ -38,7 +38,7 @@
# #
# type: []string # type: []string
# env var: LOTUS_LIBP2P_LISTENADDRESSES # env var: LOTUS_LIBP2P_LISTENADDRESSES
#ListenAddresses = ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0"] #ListenAddresses = ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0", "/ip4/0.0.0.0/udp/0/quic-v1", "/ip6/::/udp/0/quic-v1", "/ip4/0.0.0.0/udp/0/quic-v1/webtransport", "/ip6/::/udp/0/quic-v1/webtransport"]
# Addresses to explicitally announce to other peers. If not specified, # Addresses to explicitally announce to other peers. If not specified,
# all interface addresses are announced # all interface addresses are announced

View File

@ -220,14 +220,17 @@ func TestNetBlockIPAddr(t *testing.T) {
firstAddrInfo, _ := firstNode.NetAddrsListen(ctx) firstAddrInfo, _ := firstNode.NetAddrsListen(ctx)
secondAddrInfo, _ := secondNode.NetAddrsListen(ctx) secondAddrInfo, _ := secondNode.NetAddrsListen(ctx)
var secondNodeIPs []string secondNodeIPsMap := map[string]struct{}{} // so we can deduplicate
for _, addr := range secondAddrInfo.Addrs { for _, addr := range secondAddrInfo.Addrs {
ip, err := manet.ToIP(addr) ip, err := manet.ToIP(addr)
if err != nil { if err != nil {
continue continue
} }
secondNodeIPs = append(secondNodeIPs, ip.String()) secondNodeIPsMap[ip.String()] = struct{}{}
}
var secondNodeIPs []string
for s := range secondNodeIPsMap {
secondNodeIPs = append(secondNodeIPs, s)
} }
// Sanity check that we're not already connected somehow // Sanity check that we're not already connected somehow
@ -243,6 +246,8 @@ func TestNetBlockIPAddr(t *testing.T) {
list, err := firstNode.NetBlockList(ctx) list, err := firstNode.NetBlockList(ctx)
require.NoError(t, err) require.NoError(t, err)
fmt.Println(list.IPAddrs)
fmt.Println(secondNodeIPs)
require.Equal(t, len(list.IPAddrs), len(secondNodeIPs), "expected %d blocked IPs", len(secondNodeIPs)) require.Equal(t, len(list.IPAddrs), len(secondNodeIPs), "expected %d blocked IPs", len(secondNodeIPs))
for _, blockedIP := range list.IPAddrs { for _, blockedIP := range list.IPAddrs {
found := false found := false
@ -256,7 +261,8 @@ func TestNetBlockIPAddr(t *testing.T) {
require.True(t, found, "blocked IP %s is not one of secondNodeIPs", blockedIP) require.True(t, found, "blocked IP %s is not one of secondNodeIPs", blockedIP)
} }
require.Error(t, secondNode.NetConnect(ctx, firstAddrInfo), "shouldn't be able to connect to second node") // a QUIC connection might still succeed when gated, but will be killed right after the handshake
_ = secondNode.NetConnect(ctx, firstAddrInfo)
connectedness, err = secondNode.NetConnectedness(ctx, firstAddrInfo.ID) connectedness, err = secondNode.NetConnectedness(ctx, firstAddrInfo.ID)
require.NoError(t, err, "failed to determine connectedness") require.NoError(t, err, "failed to determine connectedness")
require.NotEqual(t, connectedness, network.Connected) require.NotEqual(t, connectedness, network.Connected)

View File

@ -57,6 +57,10 @@ func defCommon() Common {
ListenAddresses: []string{ ListenAddresses: []string{
"/ip4/0.0.0.0/tcp/0", "/ip4/0.0.0.0/tcp/0",
"/ip6/::/tcp/0", "/ip6/::/tcp/0",
"/ip4/0.0.0.0/udp/0/quic-v1",
"/ip6/::/udp/0/quic-v1",
"/ip4/0.0.0.0/udp/0/quic-v1/webtransport",
"/ip6/::/udp/0/quic-v1/webtransport",
}, },
AnnounceAddresses: []string{}, AnnounceAddresses: []string{},
NoAnnounceAddresses: []string{}, NoAnnounceAddresses: []string{},