diff --git a/README.md b/README.md index 46d0446..8e014ee 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,18 @@ # wgsd -`wgsd` is a CoreDNS plugin that provides Wireguard peer information via DNS-SD semantics. See [this blog post](https://www.jordanwhited.com/posts/wireguard-endpoint-discovery-nat-traversal/) for the background and reasoning behind it. +`wgsd` is a [CoreDNS](https://github.com/coredns/coredns) plugin that provides WireGuard peer information via DNS-SD ([RFC6763](https://tools.ietf.org/html/rfc6763)) semantics. This enables dynamic discovery of WireGuard Endpoint addressing (both IP and port) with the added of benefit of NAT-to-NAT WireGuard connectivity where [UDP hole punching](https://en.wikipedia.org/wiki/UDP_hole_punching) is supported. -In order to use this plugin with CoreDNS first you need to [enable it](https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/). Once it's enabled it can be configured like so: +See [this blog post](https://www.jordanwhited.com/posts/wireguard-endpoint-discovery-nat-traversal/) for a deep dive on the underlying techniques and development thought. + +## Installation +External CoreDNS plugins can be enabled in one of two ways: + +1. [Build with compile-time configuration file](https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/#build-with-compile-time-configuration-file) +2. [Build with external golang source code](https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/#build-with-external-golang-source-code) + +For method #2 you can simply `go build` the contents of [cmd/coredns](cmd/coredns). The resulting binary is CoreDNS server with all the "internal" plugins + `wgsd`. + +A basic client is available under [cmd/wgsd-client](cmd/wgsd-client). +## Configuration ``` .:53 { @@ -13,6 +24,12 @@ For example: ``` $ cat Corefile .:53 { - wgsd jordanwhited.net. utun4 + wgsd example.com. wg0 } -``` \ No newline at end of file +``` + +## Example Data + +## TODOs +- [ ] SOA record support +- [ ] CI & release binaries \ No newline at end of file