![]() |
海に佇む朱の鳥居 |
- ドメインレジストラとは、ドメイン名の登録申請を受け付け、レジストリ(ドメインデータベースを管理する機関)に登録する業者
- gTLD (generic Top Level Domain; 分野別トップレベルドメイン)とは,特定の国や地域によらず、世界中から誰でも登録できるトップレベルドメインのことです。
- Raspberry Pi1 Model B Rev.2 512 MB of RAM
- OS : Raspbian GNU/Linux 12 (bookworm) (CMD : lsb_release -a)
- Ubound : Version 1.17.1 (CMD : unbound -h | grep Version)
- 権威DNSサーバはドメイン名の「正規の情報」を監理するサーバです。
- DNSキャッシュサーバは、DNSの情報を一時的な「キャッシュ」として保存しておくサーバです。一度取得した情報を蓄積しますので,同様の問合せに対し早く回答することが可能です。
![]()
RaspberryPi OSのインストールとVNC利用
RaspberryPiOSのインストール方法とVNC利用方法を説明する。IoTセンサーの接続基盤を構築する。
- ホスト名,ユーザ名,パスワードを忘れずにメモしておく。
- SSHサーバは使えるよう設定する。
- キーボードレイアウトを「jp」版にする。
Linuxコード
sudo apt update
sudo apt upgrade
sudo apt install realvnc-vnc-server
Linuxコード
sudo raspi-config
Linuxコード
sudo apt update
sudo apt install unbound
Linuxコード
sudo systemctl status unbound
Linuxコード
sudo systemctl enable unbound
sudo systemctl disable unbound
Linuxコード
sudo systemctl start unbound
sudo systemctl stop unbound
sudo systemctl restart unbound
項 目 | 説 明 | |
(A) Unbound入出力パラメータとlocal-zoneの設定 | インタフェースIPアドレスとその範囲,TCP,UDPおよびローカルドメイン名と対するIPアドレスの設定 | |
(B) RootHintsファイル作成 |
ルートDNSサーバのIPアドレス等の情報を格納したファイルを作成する(今回は自動更新しない) | |
(C) ログローテーション設定 | ログデータが大量に発生するため,ログファイルのローテート回数などを指定し不要なログを消去する | |
(D) DNSSECとDOTによるForward-Zoneの設定 | DNSSEC(DNS応答に電子署名を追加し、問い合わせ側で検証することでDNSの攻撃耐性を向上させる技術)とDOT(DNS over TLS:DNSクエリを暗号化して保護し機密性を高める技術(キャッシュポイズニング保護))の設定 | |
(E) リモートコントロール設定 | Unboundを停止せずに,外部からリモートでUnboundを制御するための設定 | |
(F) パフォーマンス設定 | サーバのコア数,スレッド数,キャッシュサイズ,キャッシュ保持時間などを指定する | |
(G) ラウンドロビンの利用 | 大きなトラフィック負荷をサーバのIPレベルで分散する手法(今回はローカルで負荷が軽いため設定しない) |
/etc/unbound/unbound.conf
# Unbound configuration file for Debian.
#
# See the unbound.conf(5) man page.
#
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
#
# The following line includes additional configuration files from the
# /etc/unbound/unbound.conf.d directory.
include-toplevel: "/etc/unbound/unbound.conf.d/*.conf"
#
/etc/unbound/unbound.conf.d/unbound.conf
server:
# 待受IPアドレスの設定
interface: 192.168.0.XXX
interface: 127.0.0.1
# ポート番号の設定
port: 53
# IPアドレス・プロトコル等の利用設定
do-udp: yes
do-tcp: yes
do-ip4: yes
do-ip6: yes
# アクセスするIPアドレスの許可設定
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.1/8 allow
access-control: 192.168.0.0/16 allow
access-control: ::0/0 refuse
access-control: ::1/128 allow
#ログファイルの設定
logfile: "/var/log/unbound/unbound.log"
use-syslog: no
log-queries: yes
log-time-ascii: yes
# バージョンは隠す
hide-identity: yes
hide-version: yes
# roothintsファイルを指定する
# sudo curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache
root-hints: "/etc/unbound/root.hints"
# ローカルゾーンの設定
local-zone: "local-domain.home." transparent
# ドメインは末尾のドットを忘れないように
# <domain>. [TTL] IN <Type> <IPアドレス>
local-data: "local-domain.home. 300 IN A 192.168.0.XXX"
local-data: "www.local-domain.home. 300 IN A 192.168.0.XXX"
# 逆引きの設定
# <IP> [TTL] <domain>.
local-data-ptr: "192.168.0.XXX 300 www.local-domain.home."
#
- interfaceは,「Unbound」で待ち受けるIPアドレスを設定。「XXX」には固定IPアドレスの具体的数字を入力します。
- portは,DNS用のポート番号「53」を指定します。
- do-udp,do-tcp,do-ip4,do-ip6は,利用は「yes」,非利用は「no」です。
- access-controlは,「Unbound」にアクセスするIPアドレスを制限します。拒否は「refuse」です。「allow」の場合は再帰クエリアクセスのみ許可します。「allow_snoop」は,再帰・非再帰クエリどちらにも応答します。「キャッシュ」の内容を調べる時などに使います。「refuse」で全て拒否した後に,使いたいIPアドレスのみ許可します。
- logfileは,ログを出力するファイルを指定します。syslogを使う場合は指定しなくてもいいですが,故障時の分析等で該当箇所を探すのが大変なので個別ファイルにします。
- use-syslogは,syslogにログを出力する時は「yes」。今回は「no」にしました。
- log-queriesは,クエリをログに出すときは「yes」にします。
- log-time-asciiは,ログの時間を「アスキー」で表現する時は「yes」にします。
- hide-identityは,クエリに応答する際に、自身の識別情報を隠す設定です。
- hide-versionは,クエリに応答する際に、Unboundのバージョンを隠す設定です。
- root-hintsは,ルートDNSのアドレス情報を格納するファイルを指定します。今回は「sudo curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache」で作成しました。
- local-zoneは,「local-domain.home.」を任意のローカルドメイン名に変更して下さい。「transparent」は,local-dataに該当するデータが無い場合にインターネット上に通常の再帰問い合わせ処理をします。再帰問合せをしないでNXDOMAINかNODATAを返したい場合は「static」とします。
- local-dataは,順引き(任意のローカルドメイン→任意のIPアドレス)の設定を示します。ttl時間はクライアントがキャッシュした DNS レコードを保持する時間(秒)を示します。省略した場合は3600秒です。ドメインの末尾には”.”ピリオドが必要です。「XXX」にはローカルドメインに対応する任意のアドレスを入れてください。
- local-data-ptrは,逆引き(任意のIPアドレス→任意のローカルドメイン名)の設定になります。「XXX」にはローカルドメインに対応する任意のアドレスを入れてください。
/etc/resolv.conf
/etc/resolv.conf
# Generated by NetworkManager
nameserver ::1
nameserver 127.0.0.1
「/etc/NetworkManager/NetworkManager.conf」
[main]
dns=none
Linuxコード
sudo systemctl restart NetworkManager
Linuxコード
sudo curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache
Linuxコード
sudo mkdir -v /var/log/unbound
sudo chown -v unbound:unbound /var/log/unbound
/etc/logrotate.d/unbound
#Unboundのログローテーション設定
/var/log/unbound/*.log {
daily
rotate 2
create 644 unbound unbound
dateext
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/sbin/unbound-control log_reopen > /dev/null 2>&1 || true
endscript
}
- daily: 1日に1度ローテーションする。(他にweekly ,monthly等あり)
- rotate 2 : ローテートを2回まで保存する。
- create 644 unbound unbound : ローテーション後に空のファイルを作る。
- dateext : 古いログファイル名の語尾に日付8桁 (-YYYYMMDD)を付加
- missingok : ログファイルがなくても処理続行
- notifempty : ログファイルが空ならローテーションしない
- compress : ローテーションしたログをgzipで圧縮する
- delaycompress : ローテーション1世代目は圧縮しない
- sharedscripts : ローテーション毎に以下のスクリプトを1回だけ実行する。
- prerotate : ローテーション前にendscriptまでのスクリプトをsharedscriptsが無ければログファイル毎に実行する
- postrotate : ローテーション後にendscriptまでのスクリプトをsharedscriptsが無ければログファイル毎に実行する。今回のスクリプトは,新規ログファイルへ出力するようリモートコントロールで「reopen」させています。
Linuxコード
sudo logrotate -d /etc/logrotate.d/unbound
Linuxコード
sudo unbound-anchor -a "/etc/unbound/root.key"
sudo chown unbound:unbound /etc/unbound/root.key
Linuxコード
sudo apt install unbound-anchor
/etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf
server:
# The following line will configure unbound to perform cryptographic
# DNSSEC validation using the root trust anchor.
auto-trust-anchor-file: "/var/lib/unbound/root.key"
Linuxコード
sudo unbound-host -D -v dns.google
/etc/unbound/unbound.d/dot.conf
server:
tls-port: 853
tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
forward-zone:
name: "."
forward-tls-upstream: yes
#
forward-addr: 103.2.57.5@853#public.dns.iij.jp
forward-addr: 103.2.57.6@853#public.dns.iij.jp
#
- Fedora Linux は,/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
- Debian/Ubuntu は,/etc/ssl/certs/ca-certificates.crt
/etc/unbound/unbound.conf.d/remote-control.conf
remote-control:
control-enable: yes
# by default the control interface is is 127.0.0.1 and ::1 and port 8953
# it is possible to use a unix socket too
control-interface: /run/unbound.ctl
#
# Enable remote control with unbound-control(8) here.
# set up the keys and certificates with unbound-control-setup.
control-enable: yes
# what interfaces are listened to for remote control.
# give 0.0.0.0 and ::0 to listen to all interfaces.
control-interface: 127.0.0.1
control-interface: ::1
# port number for remote control operations.
control-port: 8953
# unbound server key file.
server-key-file: "/etc/unbound/unbound_server.key"
# unbound server certificate file.
server-cert-file: "/etc/unbound/unbound_server.pem"
# unbound-control key file.
control-key-file: "/etc/unbound/unbound_control.key"
# unbound-control certificate file.
control-cert-file: "/etc/unbound/unbound_control.pem"#
Control用鍵の生成
sudo unbound-control-setup
- unbound_control.key
- unbound_control.pem
- unbound_server.key
- unbound_server.pem
/etc/unbound/unbound.conf.d/performance.conf
server:
# CPU論理コア数(CMD:sudo nproc)
num-threads: 1
# キャッシュのスラブ数指定(num-threadsに近い「2の累乗」)
msg-cache-slabs: 2
rrset-cache-slabs: 2
infra-cache-slabs: 2
key-cache-slabs: 2
# キャッシュサイズの指定( rrset-cache-size = msg-cache-sizeの2倍)
rrset-cache-size: 128m
msg-cache-size: 64m
# オープンポート数とスレッド毎の同時対応クエリ数を設定
# outgoing-range = num-queries-per-threadの2倍
outgoing-range: 8192
num-queries-per-thread: 4096
# スレッド毎のTCPのクエリ上限数を設定
incoming-num-tcp: 1000
outgoing-num-tcp: 1000
# DNS 応答メッセージを最小限にするための設定
minimal-responses: yes
# クエリ/応答のパケット数を削減させる
qname-minimisation: yes
# TCPポートをリサイクルする
so-reuseport: yes
# キャッシュの最大・最小存続時間(単位:秒)
cache-max-ttl: 14400
cache-min-ttl: 1200
#
Linuxコード
sudo unbound-checkconf
Linuxコード
sudo systemctl restart unbound
Linuxコード
sudo dig +dnssec dns.google
Linuxコード
sudo apt install tcpdump
Linuxコード
sudo tcpdump -vv -x -X -s 1500 -i <RaspberryPiのdev情報> 'port 853'
Linuxコード
dig +dnssec @192.168.0.XXX dns.google SOA
Linuxコード
sudo ss -lutnp
0 件のコメント:
コメントを投稿