LoginSignup
0
1

More than 3 years have passed since last update.

結局DHCPv6入れてDNSはunboundにした話

Last updated at Posted at 2021-04-25

1. 結局DHCPv6

以前「YAMAHA RTシリーズルーターをIPv6ネイティブ環境に接続して、v6用DNSをLAN内サーバーに設定させた話」という記事を書いたのですが、結局ローカルにDHCPv6サーバーを立てて動かすようになりました。
何故かって理由なのですが、どうもWindowsではIPv6 DNSを真面目に設定してある方が、IPv6を空にしてIPv4 DNSに任せるよりも早い「気がする」のです。「気がする」です。気分の問題です(ここ重要)。以前の記事通りにIPv4 DNSがちゃんと動いていれば別に困ることはないはずです。
そんなわけで、DHCPv6でDNS情報を広告させることにしました。

2. ISC DHCPの設定

CentOS8で作っていたDNSサーバー上にDHCPを構築しました。
DHCPは新しいKea DHCPも試したのですが動作が安定せず、ごく安パイにISC DHCPをdnf installで入れました。
書いたconfigはこれだけです。

/etc/dhcp/dhcpd6.conf
subnet6 2001:db8::/64
{
    option dhcp6.name-servers 2001:db8::2;
    option dhcp6.domain-search "local.example.net";
}

もちろんDNSサーバー側にもスタティックなIPv6アドレスを付与しておき、DHCPv6で配布する情報と合わせておきます。

firewall-cmd --add-service=dhcpv6 --permanent
firewall-cmd --reload

でファイアウォールを開けて、

systemctl enable dhcpd6
systemctl start dhcpd6

で起動。問題なく動いていれば、すぐにDNSサーバー情報が各端末に伝播するでしょう。

DHCPv6サーバーを作ったので、ついでにDHCPv4サーバーも相乗りさせてRTX830のDHCPは止めました。

/etc/dhcp/dhcpd.conf
default-lease-time          43200;
max-lease-time              86400;

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.21 192.168.0.99;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    option domain-name "local.example.net";
    option domain-name-servers 192.168.0.2;
}

当たり前ですが、DNS情報しか配っていないv6に比べてv4はconfigが多いですね。

firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

でファイアウォールを開けて、

systemctl enable dhcpd
systemctl start dhcpd

で起動します。
動作確認は端末側でipconfig /renewとか、スマホだったらWi-Fiを切断→接続とかしてアドレスリースを確認します。

3. unboundの設定

DNSはpdns-recursorで作ってましたが、パフォーマンスが優れていると聞いてunboundを入れて置き換えました。これも自己満足ですpdns-recursorがダメとかないです。
unboundは設定できる項目が多く、かつネットで拾える設定例が間違ってるのも多く見かけたので、今の弊宅の設定を貼っておきます。
デフォルトの/etc/unbound/unbound.confは触らず、/etc/unbound/conf.dの下に unbound.confperformance.confを置いてカスタマイズ、さらにローカルゾーンの情報としてlocal.example.net.confを置いています。

/etc/unbound/conf.d/unbound.conf
server:
    interface: 0.0.0.0
    interface: ::0

    prefer-ip6: yes

    access-control: 0.0.0.0/0 refuse
    access-control: 127.0.0.0/8 allow
    access-control: 192.168.0.0/24 allow
    access-control: ::0/0 refuse
    access-control: ::1/128 allow
    access-control: 2001:db8::/64 allow
    access-control: fe80::/64 allow

    hide-version: yes
    hide-identity: yes

    logfile: "/var/log/unbound/unbound.log"
    use-syslog: no
    log-time-ascii: yes

forward-zone:
    name: "."
    forward-addr: 2001:4860:4860::8888
    forward-addr: 2001:4860:4860::8844
    forward-addr: 202.232.2.2
    forward-addr: 202.232.2.3

remote-control:
    control-interface: 127.0.0.1
    control-interface: ::1

フォワーダーは鉄板のGoogle Public DNSをプライマリに、プロバイダDNSをバックアップに指定しています。
Google Public DNSはプロバイダDNSに比べてTTLが、という話があって私もこないだまでそっちの宗派だったのですが、実際にtracertしてみると、DS-Lite環境ではプロバイダDNSよりもGoogle Public DNSの方がhop数が少なく近いところにいました。
また構築後にベンチマーク(namebench)を走らてフォワーダーがプロバイダDNSのみの設定と比較しましたが、これもGoogle Public DNSの方が良好なスコアとなりました。
DS-Liteはtransixから出て行くのでPPPoEとはまた話が違っちゃうんでしょうね。

/etc/unbound/conf.d/performance.conf
server:
    msg-cache-slabs: 4
    rrset-cache-slabs: 4
    infra-cache-slabs: 4
    key-cache-slabs: 4

    rrset-cache-size: 128m
    msg-cache-size: 64m

    outgoing-range: 8192
    num-queries-per-thread: 4096

    so-rcvbuf: 4m
    so-sndbuf: 4m

    minimal-responses: yes
    qname-minimisation: yes

    infra-cache-numhosts: 1000000

この辺もunboundで鉄板のパフォーマンスカスタマイズですが、デフォルトのunbound.confに記載済みの項目は省きました(num-threadsprefetch等)。
後はso-rcvbufso-sndbufに絡んでCentOS側で

/etc/sysctl.conf
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304

とかやってます。

/etc/unbound/conf.d/local.example.net.conf
server:
    local-zone: "local.example.net." transparent

    local-data: "mail. 600 A 192.168.0.10"
    local-data: "mail.local.example.net. 600 A 192.168.0.10"
    local-data: "www.example.net. 600 A 192.168.0.20"

    local-data-ptr: "192.168.0.10 600 mail.local.example.net."

ローカルゾーンはお好みのように。説明は割愛します。

それでは本記事はこの辺で。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1