静看光阴荏苒
不管不顾不问不说也不念

NixOS配置NSD(Authoritative DNS name server)

首先在域名注册商那里添加胶水记录(glue record)这里以namecheap为例:

我这里添加了两个记录,分别是ns1和ns2,指向自己的服务器公网ip,添加完成后点搜索看看能不能搜到,能搜到就说明添加成功了:

然后把域名的ns服务器改为自己的,例如你的域名是example.com,你刚才添加的胶水记录是ns1和ns2,那么这里就填写ns1.example.com和ns2.example.com:

编辑configuration.nix:

nano /etc/nixos/configuration.nix

引入nsd.nix:

{
  imports =
    [
      ./hardware-configuration.nix
      ./lnmp.nix
      ./mastodon.nix
      ./peertube.nix
      ./nextcloud.nix
      ./nsd.nix
    ];
}

新建nsd.nix:

nano /etc/nixos/nsd.nix

我的配置如下:

{ config, pkgs, lib, ... }:
{
  services.nsd = {
    enable = true;
    interfaces = [ 
      "0.0.0.0"
      "::"
    ];
    zones."example.com" = {
      data = ''
$ORIGIN example.com.
$TTL 1800

@ IN SOA ns1.example.com. admin.example.com. (
        2022083101 ; serial number
        10800      ; Refresh
        3600       ; Retry
        604800     ; Expire
        3600       ; Negative response caching TTL
)

           NS ns1.example.com.

ns1        A  1.2.3.4
@          A  1.2.3.4
www        A  1.2.3.4
      '';
    };
    zones."example2.com" = {
      data = ''
$ORIGIN example2.com.
$TTL 1800

@ IN SOA ns1.example.com. admin.example2.com. (
        2022083101 ; serial number
        10800      ; Refresh
        3600       ; Retry
        604800     ; Expire
        3600       ; Negative response caching TTL
)

           NS ns1.example.com.

@          A  1.2.3.4
www        A  1.2.3.4
      '';
    };
  }; 
}

一个services.nsd.zones.name对应一个域名,多个域名就添加多个zones.name即可。例如上面的配置就有2个域名,分别是example.com和example2.com

每次修改区域记录后,soa记录里面的serial number记得往上增加,比如起始值是2022083101,修改一次记录后就可以改为2022083102。

配置完成后重建系统:

nixos-rebuild switch

测试解析是否正常:

dig +short @8.8.8.8 NS example.com
dig +short @8.8.8.8 A example.com

正常的话就能返回正确的解析结果:

赞(14)
未经允许不得转载:荒岛 » NixOS配置NSD(Authoritative DNS name server)
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿