Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Could not resolve ENS domains #8836

Closed
3 tasks done
caunt opened this issue Mar 31, 2022 · 6 comments
Closed
3 tasks done

Could not resolve ENS domains #8836

caunt opened this issue Mar 31, 2022 · 6 comments
Labels
kind/bug A bug in existing code (including security flaws) need/triage Needs initial labeling and prioritization

Comments

@caunt
Copy link

caunt commented Mar 31, 2022

Checklist

Installation method

ipfs-update or dist.ipfs.io

Version

% ipfs version --all
go-ipfs version: 0.12.1-da2b9bd71
Repo version: 12
System version: arm64/darwin
Golang version: go1.17.8

Config

% ipfs config show
{
  "API": {
    "HTTPHeaders": {}
  },
  "Addresses": {
    "API": "/ip4/127.0.0.1/tcp/5001",
    "Announce": [],
    "Gateway": "/ip4/127.0.0.1/tcp/8080",
    "NoAnnounce": [],
    "Swarm": [
      "/ip4/0.0.0.0/tcp/4001",
      "/ip6/::/tcp/4001",
      "/ip4/0.0.0.0/udp/4001/quic",
      "/ip6/::/udp/4001/quic"
    ]
  },
  "AutoNAT": {},
  "Bootstrap": [
    "/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
    "/ip4/104.131.131.82/udp/4001/quic/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
    "/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
    "/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
    "/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
    "/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt"
  ],
  "DNS": {
    "Resolvers": {}
  },
  "Datastore": {
    "BloomFilterSize": 0,
    "GCPeriod": "1h",
    "HashOnRead": false,
    "Spec": {
      "mounts": [
        {
          "child": {
            "path": "blocks",
            "shardFunc": "/repo/flatfs/shard/v1/next-to-last/2",
            "sync": true,
            "type": "flatfs"
          },
          "mountpoint": "/blocks",
          "prefix": "flatfs.datastore",
          "type": "measure"
        },
        {
          "child": {
            "compression": "none",
            "path": "datastore",
            "type": "levelds"
          },
          "mountpoint": "/",
          "prefix": "leveldb.datastore",
          "type": "measure"
        }
      ],
      "type": "mount"
    },
    "StorageGCWatermark": 90,
    "StorageMax": "10GB"
  },
  "Discovery": {
    "MDNS": {
      "Enabled": true,
      "Interval": 10
    }
  },
  "Experimental": {
    "AcceleratedDHTClient": false,
    "FilestoreEnabled": false,
    "GraphsyncEnabled": false,
    "Libp2pStreamMounting": false,
    "P2pHttpProxy": false,
    "ShardingEnabled": false,
    "StrategicProviding": false,
    "UrlstoreEnabled": false
  },
  "Gateway": {
    "APICommands": [],
    "HTTPHeaders": {
      "Access-Control-Allow-Headers": [
        "X-Requested-With",
        "Range",
        "User-Agent"
      ],
      "Access-Control-Allow-Methods": [
        "GET"
      ],
      "Access-Control-Allow-Origin": [
        "*"
      ]
    },
    "NoDNSLink": false,
    "NoFetch": false,
    "PathPrefixes": [],
    "PublicGateways": null,
    "RootRedirect": "",
    "Writable": false
  },
  "Identity": {
    "PeerID": "12D3KooWSWdDigvvPvHaEp65UuMd2MbxQDedzKH2pR4sXXPU4ukr"
  },
  "Internal": {},
  "Ipns": {
    "RecordLifetime": "",
    "RepublishPeriod": "",
    "ResolveCacheSize": 128
  },
  "Migration": {
    "DownloadSources": [],
    "Keep": ""
  },
  "Mounts": {
    "FuseAllowOther": false,
    "IPFS": "/ipfs",
    "IPNS": "/ipns"
  },
  "Peering": {
    "Peers": null
  },
  "Pinning": {
    "RemoteServices": {}
  },
  "Plugins": {
    "Plugins": null
  },
  "Provider": {
    "Strategy": ""
  },
  "Pubsub": {
    "DisableSigning": false,
    "Router": ""
  },
  "Reprovider": {
    "Interval": "12h",
    "Strategy": "all"
  },
  "Routing": {
    "Type": "dht"
  },
  "Swarm": {
    "AddrFilters": null,
    "ConnMgr": {
      "GracePeriod": "20s",
      "HighWater": 900,
      "LowWater": 600,
      "Type": "basic"
    },
    "DisableBandwidthMetrics": false,
    "DisableNatPortMap": false,
    "EnableAutoRelay": false,
    "EnableRelayHop": false,
    "Transports": {
      "Multiplexers": {},
      "Network": {},
      "Security": {}
    }
  }
}

Description

DNSLink (eth.link) does not work anymore for unknown reason. I can not resolve any .eth ENS domain through dweb.link gateway:
https://vitalik-eth.ipns.dweb.link/
https://vitalik.eth.ipns.dweb.link/

ipfs resolve -r /ipns/vitalik.eth/: could not resolve name: "vitalik.eth" is missing a DNSLink record (https://docs.ipfs.io/concepts/dnslink/)
@caunt caunt added kind/bug A bug in existing code (including security flaws) need/triage Needs initial labeling and prioritization labels Mar 31, 2022
@caunt
Copy link
Author

caunt commented Mar 31, 2022

The problem is in cloudflare EthDNS resolver:

% curl -H 'content-type: application/dns-json' 'https://resolver.cloudflare-eth.com/dns-query?type=TXT&name=vitalik.eth'
{"AD":true,"CD":false,"RA":true,"RD":true,"TC":false,"Status":2,"Question":[{"name":"vitalik.eth.","type":16}],"Answer":[]}

Status 2 means SERVFAIL error. Should be 0.
I think we should add fallback possibility for *.eth resolvers. If field "Status" not equals 0, then try next one resolver.

Also I see there is no alternative *.eth resolvers on internet. I can run my one for longterm if you agree.

@lidel
Copy link
Member

lidel commented Apr 15, 2022

Notes from triage:

  • When the implicit default resolver for .eth fails, user can choose a different one by setting DNS.Resolvers in their config.
    • The errror at resolver.cloudflare-eth.com should be raised with Cloudflare or ENS projects (this is a third-party service), and not the go-ipfs repo. Since there is no bug in go-ipfs, I'm closing this issue.
  • Fallback DNS resolvers are already tracked in Add DNS Fallback Resolvers #8173 – feel free to provide feedback there 🙏

@livid
Copy link

livid commented Sep 16, 2022

This problem is happening right now.

Many IPFS gateways, including ipfs.io and cloudflare-ipfs.com are unable to resolve ENS domains.

Screen Shot 2022-09-15 at 3 54 35 PM

Even kubo CLI and Brave's support for IPFS + ENS websites are impacted:

Screen Shot 2022-09-15 at 9 15 28 PM

Screen Shot 2022-09-15 at 7 27 24 PM

@Stebalien
Copy link
Member

May have been a glitch in eth.link? It appears to be working now.

@livid
Copy link

livid commented Sep 21, 2022

May have been a glitch in eth.link? It appears to be working now.

It is working now. I have confirmed with someone from Cloudflare.

Currently, resolver for .eth is defined in the 16th line here:

https://github.com/ipfs/kubo/blob/master/core/node/dns.go#L16

But I cannot find alternative resolvers for it.

@livid
Copy link

livid commented Sep 21, 2022

If you googled and found this page for alternative ENS resolver, here is one provided by eth.limo:

https://eth-limo.gitbook.io/documentation/ipfs/config

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug A bug in existing code (including security flaws) need/triage Needs initial labeling and prioritization
Projects
None yet
Development

No branches or pull requests

4 participants