Skip to content

Commit

Permalink
allow binding particularly link-local addresses (using a scope/zone)
Browse files Browse the repository at this point in the history
also as a side effect allows using hostnames
  • Loading branch information
riedel committed Mar 13, 2024
1 parent 5a1995c commit c86aa92
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
2 changes: 1 addition & 1 deletion plugin/bind/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ another IP instead.

If several addresses are provided, a listener will be open on each of the IP provided.

Each address has to be an IP or name of one of the interfaces of the host. Bind by interface name, binds to the IPs on that interface at the time of startup or reload (reload will happen with a SIGHUP or if the config file changes).
Each address has to be an IP, a host name (not recommended as it resolves to at most one IP) or name of one of the interfaces of the host. Bind by interface name, binds to the IPs on that interface at the time of startup or reload (reload will happen with a SIGHUP or if the config file changes).

If the given argument is an interface name, and that interface has several IP addresses, CoreDNS will listen on all of the interface IP addresses (including IPv4 and IPv6), except for IPv6 link-local addresses on that interface.

Expand Down
3 changes: 2 additions & 1 deletion plugin/bind/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ func listIP(args []string, ifaces []net.Interface) ([]string, error) {
}
}
if !isIface {
if net.ParseIP(a) == nil {
_, err := net.ResolveIPAddr("ip", a)
if err != nil {
return nil, fmt.Errorf("not a valid IP address or interface name: %q", a)
}
all = append(all, a)
Expand Down

0 comments on commit c86aa92

Please sign in to comment.