Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wealdtech/coredns-ens
https://github.com/wealdtech/coredns-ens
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/wealdtech/coredns-ens
- Owner: wealdtech
- License: apache-2.0
- Created: 2019-06-25T21:18:33.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-07T01:25:13.000Z (over 1 year ago)
- Last Synced: 2024-04-12T09:34:19.255Z (7 months ago)
- Language: Go
- Size: 234 KB
- Stars: 56
- Watchers: 8
- Forks: 16
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-coredns - ens - serve DNS records from the Ethereum Name Service. (External Plguins)
README
# coredns-ens
CoreDNS-ENS is a CoreDNS plugin that resolves DNS information over ENS. It has two primary purposes:
1. A general-purpose DNS resolver for DNS records stored on the Ethereum blockchain
2. A specialised resolver for IPFS content hashes and gatwaysDetails of the first feature can be found at http://www.wealdtech.com/articles/ethdns-an-ethereum-backend-for-the-domain-name-system/
The second feature provides a mechanism to map DNS domains to ENS domains by removing the relevant suffix, for example the DNS domain `wealdtech.eth.link` maps to the ENS domain `wealdtech.eth`, and returning information for IPFS gateways (if an A or AAAA record is requested) as well as IPFS and content hashes (if a TXT record is requested). The result of this is that IPFS content can be obtained from any web browser by simply
# Building
The latest build is always available as a docker repository at `wealdtech/coredns-ens`. If you want to build a standalone copy of CoreDNS with this plugin enabled run the `build-standalone.sh` script, which should work on most unix-like systems.
# Corefile
The plugin has a number of configuration options. An example annotated Corefile is shown below:
```
# This section enables DNS lookups for all domains on ENS
. {
rewrite stop {
# This rewrites any requests for *.eth.link domains to *.eth internally
# prior to being processed by the main ENS resolver.
name regex (.*)\.eth\.link {1}.eth
answer name (.*)\.eth {1}.eth.link
}
ens {
# connection is the connection to an Ethereum node. It is *highly*
# recommended that a local node is used, as remote connections can
# cause DNS requests to time out.
# This can be either a path to an IPC socket or a URL to a JSON-RPC
# endpoint.
connection /home/ethereum/.ethereum/geth.ipc# ethlinknameservers are the names of the nameservers that serve
# EthLink domains. This will usually be the name of this server,
# plus potentially one or more others.
ethlinknameservers ns1.ethdns.xyz ns2.ethdns.xyz# ipfsgatewaya is the address of an ENS-enabled IPFS gateway.
# This value is returned when a request for an A record of an Ethlink
# domain is received and the domain has a contenthash record in ENS but
# no A record. Multiple values can be supplied, separated by a space,
# in which case all records will be returned.
ipfsgatewaya 176.9.154.81# ipfsgatewayaaaa is the address of an ENS-enabled IPFS gateway.
# This value is returned when a request for an AAAA record of an Ethlink
# domain is received and the domain has a contenthash record in ENS but
# no A record. Multiple values can be supplied, separated by a space,
# in which case all records will be returned.
ipfsgatewayaaaa 2a01:4f8:160:4069::2
}# This enables DNS forwarding. It should only be enabled if this DNS server
# is not exposed to the internet, otherwise it becomes an open DNS server and
# will be flooded with attack packets.
forward . 8.8.8.8errors
}
```It is also possible to run the DNS server over TLS or over HTTPS; details on how to set up certificates the can be found in the CoreDNS documentation.
# Running standalone
Running CoreDNS standalone is simply a case of starting the binary. See the CoreDNS documentation for further information.
# Running with Docker
Running CoreDNS with Docker requires running the image created in the `Building` section. A sample command-line might be:
docker run -p 53:53/udp --volume=/home/coredns:/etc/coredns wealdtech/coredns-ens:latest
where `/home/coredns` is the directory on the server that contains the Corefile and certificates.