dns-reverse-proxy

command module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

README

DNS reverse proxy

Build Status Godoc

A DNS reverse proxy to route queries to different DNS servers. To illustrate, imagine an HTTP reverse proxy but for DNS.

It listens on both TCP/UDP IPv4/IPv6 on specified port. Since the upstream servers will not see the real client IPs but the proxy, you can specify a list of IPs allowed to transfer (AXFR/IXFR).

Example:

$ go run dns_reverse_proxy.go -address :53 \
    -default 8.8.8.8:53 \
    -route .example.com.=8.8.4.4:53 \
    -allow-transfer 1.2.3.4,::1

A query for example.net or example.com will go to 8.8.8.8:53, the default. However, a query for subdomain.example.com will go to 8.8.4.4:53. -default is optional - if it is not given then the server will return a failure for queries for domains where a route has not been given.

Setup

Install go package, create Debian package, install:

$ go get -u github.com/miekg/dns
$ go get -u github.com/StalkR/dns-reverse-proxy
$ cd $GOPATH/src/github.com/StalkR/dns-reverse-proxy
$ fakeroot debian/rules clean binary
$ sudo dpkg -i ../dns-reverse-proxy_1-1_amd64.deb

Configure in /etc/default/dns-reverse-proxy and start with /etc/init.d/dns-reverse-proxy start.

License

Apache License, version 2.0.

Thanks

Bugs, feature requests, questions

Create a new issue.

Documentation

Overview

Binary dns_reverse_proxy is a DNS reverse proxy to route queries to DNS servers.

To illustrate, imagine an HTTP reverse proxy but for DNS. It listens on both TCP/UDP IPv4/IPv6 on specified port. Since the upstream servers will not see the real client IPs but the proxy, you can specify a list of IPs allowed to transfer (AXFR/IXFR).

Example usage:

$ go run dns_reverse_proxy.go -address :53 \
        -default 8.8.8.8:53 \
        -route .example.com.=8.8.4.4:53 \
        -route .example2.com.=8.8.4.4:53,1.1.1.1:53 \
        -allow-transfer 1.2.3.4,::1

A query for example.net or example.com will go to 8.8.8.8:53, the default. However, a query for subdomain.example.com will go to 8.8.4.4:53. -default is optional - if it is not given then the server will return a failure for queries for domains where a route has not been given.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL