Closed Phoenix1969 closed 5 months ago
Looks like you're using a config file -- can you please show the relevant lines as you have them configured? This will help us replicate and better understand your issue.
I'm confused because the DNS lines are EthDiscoveryURLs
and SnapDiscoveryURLs
, and your screenshot shows BootstrapNodes
.
Thanks to @ziogaschr's investigation, we've reproduced your report with
BootstrapNodes = ["enode://6b6ea53a498f0895c10269a3a74b777286bd467de6425c3b512740fcc7fbc8cd281dca4ab041dd97d62b38f3d0b5b05e71f48d28a3a2f4b5de40fe1f6bf05531@mai829.ddnssdsadsa.net:30303"]
This host is unreachable:
dig mai829.ddnssdsadsa.net
; <<>> DiG 9.16.1-Ubuntu <<>> mai829.ddnssdsadsa.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 7985
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;mai829.ddnssdsadsa.net. IN A
;; Query time: 131 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Feb 05 11:46:42 MST 2024
;; MSG SIZE rcvd: 51
Geth is exiting because it can't resolve the host name in your configuration, which its treating like an invalid enode address. You can avoid this error by replacing the host name with an IP, and geth should then tolerate even unavailable bootnodes.
// Parse the IP address.
ip := net.ParseIP(u.Hostname())
if ip == nil {
ips, err := lookupIPFunc(u.Hostname())
if err != nil {
return nil, err
}
ip = ips[0]
}
https://github.com/etclabscore/core-geth/blob/master/p2p/enode/urlv4.go#L110
Isn't it possible for GETH to skip the nodes that are not reachable even with DNS names? Just like it is with an IP?
This is by design based on the specification.
The hostname can only be given as an IP address; DNS names are not allowed.
Source: https://ethereum.org/developers/docs/networking-layer/network-addresses#enode
p.s.: I can't find the exact specification, still I was able to find mentions of it on all major clients documentation.