mirror of
https://github.com/netbirdio/docs.git
synced 2026-04-21 18:06:38 +00:00
Restructuring Phase 3 (#492)
This commit is contained in:
167
src/pages/manage/dns/index.mdx
Normal file
167
src/pages/manage/dns/index.mdx
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
# Manage DNS in your network
|
||||
|
||||
<div className="videowrapper">
|
||||
<iframe src="https://www.youtube.com/embed/xxQ_QeEMC0U" allow="fullscreen;"></iframe>
|
||||
</div>
|
||||
<br/><br/>
|
||||
|
||||
With NetBird, you don't need to worry about designing your private network or configuring [DHCP](https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)
|
||||
as it is automatically done in a single place - the NetBird Management service.
|
||||
NetBird assigns and automatically distributes IP addresses to your peers.
|
||||
Once your peers have their IP addresses, they can communicate with each other, establish direct encrypted WireGuard® tunnels,
|
||||
and access services running on connected peers, such as SSH.
|
||||
Even though we trust our memory capacity, there is a limit to what we can remember,
|
||||
especially when it comes to IP addresses like this one, 100.128.185.34.
|
||||
|
||||
Starting [v0.11.0](https://github.com/netbirdio/netbird/releases), NetBird automatically assigns a domain name
|
||||
to each peer in a private `netbird.cloud` space that can be used to access the machines. E.g., `my-server.netbird.cloud`.
|
||||
|
||||
Besides accessing machines by their domain names, you can configure NetBird to use your private nameservers,
|
||||
control what nameservers a specific [peer group](/manage/access-control/manage-network-access#groups) should use, and set up split DNS.
|
||||
|
||||
<Note>
|
||||
Nameservers feature is available in NetBird [v0.11.0](https://github.com/netbirdio/netbird/releases) or later on both
|
||||
cloud and self-hosted versions.
|
||||
</Note>
|
||||
|
||||
## Core concepts
|
||||
### Local resolver
|
||||
To minimize system changes, NetBird runs a local embedded DNS resolver on each peer.
|
||||
This resolver handles queries for domain names of registered peers in your network and forwards queries to upstream nameservers that you configure in the system.
|
||||
|
||||
<Note>
|
||||
DNS Forwarder port change: starting with NetBird v0.59.0, the local DNS forwarder used for routed DNS routes switches from port <code>5353</code> to <code>22054</code> to avoid collisions on client devices. For backward compatibility, the Management Service applies the new port only when <strong>all peers in the account</strong> run v0.59.0 or newer. If any peer is below v0.59.0, port <code>5353</code> will be used for all peers in that account.
|
||||
</Note>
|
||||
|
||||
### Nameserver
|
||||
A nameserver is an upstream DNS server responsible for name resolution. If a query is not related to a peer domain name,
|
||||
it will be resolved by one of the upstream servers. You can assign private and public IPs, as well as custom ports for your nameservers.
|
||||
Ensure that network routes for private addresses are set up to allow peers to connect to them, when configuring private nameservers.
|
||||
|
||||
### Match domains
|
||||
When creating nameserver groups without match domains, it implies that the nameservers will resolve all DNS queries.
|
||||
For specific cases, you may want to deploy a split horizon configuration for private or specific domains.
|
||||
Match domains allow you to route queries to specific nameservers, which is useful for internal DNS configurations
|
||||
that only internal servers can resolve.
|
||||
<Note>
|
||||
Only macOS, Windows 10+, and Linux running `systemd-resolved` support nameservers with match domains.
|
||||
For a better experience, we recommend setting at least one nameserver group without match domains to be applied to the `All` group.
|
||||
</Note>
|
||||
#### Mark match domains as search domains
|
||||
Marking a match domain as a search domain configures peers to use only hostnames to perform FQDN queries, e.g., `ping host-a` instead of `ping host-a.netbird.cloud`.
|
||||
<Note>
|
||||
Marking a match domains as a search domain feature is available in NetBird [v0.24.0](https://github.com/netbirdio/netbird/releases) or later.
|
||||
</Note>
|
||||
|
||||
### Distribution groups
|
||||
Distribution groups define which peers will receive the nameserver configuration.
|
||||
They are particularly useful when using private nameservers to link routing peers and clients of the private servers.
|
||||
<Note>
|
||||
When using private nameservers, you may use these groups to link routing peers and clients of the private servers.
|
||||
</Note>
|
||||
|
||||
## Managing nameserver groups
|
||||
A nameserver group defines up to 2 nameservers to resolve DNS to a set of peers in the distribution groups.
|
||||
|
||||
### Creating a nameserver group
|
||||
Access the `DNS` tab, the `Nameservers` section and click `Add Nameserver`.
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-add-button.png" alt="high-level-dia" className="imagewrapper-big"/>
|
||||
</p>
|
||||
That will open a nameserver selection configuration screen where you can choose between using three predefined public
|
||||
nameservers or using a custom setup.
|
||||
|
||||
### Selecting predefined nameservers
|
||||
If you choose a predefined public nameserver option, you can select the following nameservers:
|
||||
- [Google DNS servers](https://developers.google.com/speed/public-dns/docs/using)
|
||||
- [Cloudflare DNS servers](https://one.one.one.one/dns/)
|
||||
- [Quad9 DNS servers](https://www.quad9.net/)
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-selection-view-open.png" alt="high-level-dia" className="imagewrapper"/>
|
||||
</p>
|
||||
|
||||
After selecting one of the three options, you need to assign a peer group for which this nameserver will be effective.
|
||||
In the example below, we chose the `All` group:
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-all-group.png" alt="high-level-dia" className="imagewrapper"/>
|
||||
</p>
|
||||
|
||||
### Creating custom nameservers
|
||||
You can also configure a custom nameserver by clicking `Add custom`. Now you can enter the details of your custom nameserver.
|
||||
|
||||
In the example below, we are creating a nameserver with the following information:
|
||||
|
||||
- Name: `Office resolver`
|
||||
- Description: `Berlin office resolver`
|
||||
- Add at least one nameserver: `192.168.0.32` with port `53`
|
||||
- Distribution group: `Remote developers`
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-custom.png" alt="high-level-dia" className="imagewrapper"/>
|
||||
</p>
|
||||
|
||||
### Creating a nameserver for specific domains
|
||||
Sometimes one may want to forward DNS queries to specific nameservers but only for particular domains that match a setting.
|
||||
Taking the example of custom nameservers above, you could select a match mode for only domains listed there.
|
||||
Below you can see the same nameserver setup but only for the `berlinoffice.com` domain:
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-remote-resolver.png" alt="high-level-dia" className="imagewrapper"/>
|
||||
</p>
|
||||
|
||||
<Note>
|
||||
Only macOS, Windows 10+, and Linux running `systemd-resolved` support nameservers with only match domains. For a better experience, we recommend setting at least a nameserver group without match domains to be applied to the `All` group.
|
||||
</Note>
|
||||
|
||||
### Distributing DNS settings with groups
|
||||
You can select as many distribution groups as you want for your nameserver setup.
|
||||
Keep in mind to link them to peers and, if required, to add access control rules when using private nameservers.
|
||||
### Adding remote private DNS servers
|
||||
To add a private DNS server that is running behind routing peers, you need to create resources to ensure communication between your nameserver clients.
|
||||
In the Berlin office example from previous steps, we have a peer from the `Office network` that can route traffic to the `192.168.0.32` IP,
|
||||
so we need to ensure that a similar network route exists:
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-remote-route.png" alt="high-level-dia" className="imagewrapper-big"/>
|
||||
</p>
|
||||
|
||||
Then we need to confirm that an access rule exists to connect `Remote developers` to `Office network` group allowing port `UDP 53`:
|
||||
<p>
|
||||
<img src="/docs-static/img/manage/dns/netbird-nameserver-remote-rule.png" alt="high-level-dia" className="imagewrapper-big"/>
|
||||
</p>
|
||||
|
||||
## Testing configuration
|
||||
### Querying records
|
||||
DNS configuration has evolved in the past few years, and each operating system might expose its nameserver configuration differently.
|
||||
Unfortunately, tools like `nslookup` or `dig` didn't get updated to match these OS configurations, and in many cases,
|
||||
they won't use the same servers as your browser to query domain names.
|
||||
|
||||
For these cases, we listed some tools to support your checks:
|
||||
#### macOS
|
||||
You can use `dscacheutil`:
|
||||
```shell
|
||||
dscacheutil -q host -a name peer-a.netbird.cloud
|
||||
```
|
||||
#### Windows
|
||||
You can use `Resolve-DnsName` on `Powershell`:
|
||||
```shell
|
||||
Resolve-DnsName -Name peer-a.netbird.cloud
|
||||
```
|
||||
#### Linux
|
||||
In most cases, you will be fine with traditional tools because most DNS managers on Linux tend to update the /etc/resolv.conf.
|
||||
```shell
|
||||
dig peer-a.netbird.cloud
|
||||
# or
|
||||
nslookup peer-a.netbird.cloud
|
||||
```
|
||||
If your system is running systemd-resolved, you can also use ```resolvectl```:
|
||||
```shell
|
||||
resolvectl query peer-a.netbird.cloud
|
||||
```
|
||||
## Get started
|
||||
<p float="center" >
|
||||
<Button name="button" className="button-5" onClick={() => window.open("https://netbird.io/pricing")}>Use NetBird</Button>
|
||||
</p>
|
||||
|
||||
- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird)
|
||||
- Follow us [on X](https://x.com/netbird)
|
||||
- Join our [Slack Channel](/slack-url)
|
||||
- NetBird [latest release](https://github.com/netbirdio/netbird/releases) on GitHub
|
||||
Reference in New Issue
Block a user