0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DNSを学んで触ってみる

Last updated at Posted at 2025-03-08

image.png

こんにちは!
DNSについて書籍を読んだり、Linux環境で触ったりしたのでここでアウトプットしていきます!

DNSとは

インターネットが発展する前、コンピュータ同士はIPアドレス(例:192.168.1.1)を使って通信していました。しかし、IPアドレスは覚えにくく、ネットワークが拡大すると管理が大変になりました。そこで、「人間が覚えやすい名前(ドメイン名)」と「コンピュータが理解できるIPアドレス」を対応させる仕組であるDNSが誕生したのです。

DNSは、「www.example.com」➡「192.0.2.1」 のように、ドメイン名をIPアドレスに変換する役割を持っています。これにより、人間は覚えやすいドメイン名を使いながら、コンピュータは正しいIPアドレスに接続できます。

ドメイン名の構造

ドメイン名は、階層構造(ツリー構造)を持ち、ピリオド(.)で区切られています。
例えば、「www.example.com」は以下のような階層になっています。

階層 ドメイン名 説明
ルートドメイン . 最上位のドメイン(ルートドメイン)
トップレベルドメイン (TLD) com ドメイン名の最上位部分
セカンドレベルドメイン (2LD) example ドメイン名の中間部分
サードレベルドメイン (3LD) www サブドメイン(ホスト名)

名前解決の仕組み

名前解決は、ドメイン名をIPアドレスに変換する仕組みのことです。
例えば、www.example.comにアクセスする際、DNSがドメイン名に対応するIPアドレス(例: 192.0.2.1)を探し、正しいサーバーへ接続できるようにします。

流れは下記のようになります。

手順 処理内容
1 ユーザー端末(PCやスマホ)がwww.example.comの問い合わせを開始し、持っているスタブリゾルバにキャッシュ検索を行う。
2 ISP(インターネットサービスプロバイダ)や社内ネットワークで提供されるリカーシブ(再帰)DNSサーバーがキャッシュ検索を行う。
※もしキャッシュがあれば即応答し、なければ次の手順へ
3 全てのTLDを管理しているルートDNSサーバーが検索を行う。
4 対象のTLD DNSサーバーが検索を行う。
5 ドメインの正式な情報(IPアドレスやサブドメインの管理情報)を持つ権威DNS(オーソリティブDNS)が最終的な応答を行う。
6 リカーシブ(再帰)DNSサーバーがキャッシュを登録し、以後の問い合わせに備える。

リソースレコード

DNSのデータは リソースレコード(RR) という形式で保存されています。リソースレコードには、ドメインに関するさまざまな情報(IPアドレス、メールサーバー、DNSサーバーの情報など) が含まれます。

レコードタイプ 説明
A レコード IPv4アドレスを指定する example.com → 192.0.2.1
AAAA レコード IPv6アドレスを指定する example.com → 2001:db8::1
CNAME レコード 別のドメイン名にエイリアスを設定 www.example.com → example.com
MX レコード メールサーバーの情報を指定する example.com → mail.example.com
NS レコード 権威DNSサーバーを指定する example.com → ns1.example.com
TXT レコード 任意のテキストデータ(SPF, DKIM, etc.) example.com → "v=spf1 include:_spf.google.com ~all"
SRV レコード 特定のサービス用のDNS情報(VoIP, SIP, etc.) _sip._tcp.example.com 10 60 5060 sip.example.com
PTR レコード 逆引きDNS(IPからドメインを取得) 192.0.2.1 → example.com
SOA レコード ゾーン(ドメイン)の管理情報 example.com → 管理者情報、シリアル番号

実際にLinuxに試してみる

では、DNSを実際にローカル環境で試していきたいと思います。

前提条件

  • Ubuntuサーバーが動作している
  • Apache(Webサーバー)がインストールされている
  • 192.168.~.~ をUbuntuサーバーのIPとする

image.png


1. BIND(DNSサーバー)のインストール

まず、DNSサーバーのインストールを行います
下記コマンドを実行していきます

sudo apt update
sudo apt install -y bind9
sudo systemctl enable --now bind9

image.png


2. ゾーンファイルの設定

BINDにkeita.serverのゾーン情報を登録します。

sudo nano /etc/bind/named.conf.local

のファイルに以下を追記します。

zone "keita.server" {
    type master;
    file "/etc/bind/db.keita.server";
};

3. ゾーンデータの作成

sudo cp /etc/bind/db.empty /etc/bind/db.keita.server
sudo nano /etc/bind/db.keita.server

以下の内容に編集をします。

$TTL 604800
@       IN      SOA     keita.server. root.keita.server. (
                        2         ; Serial
                        604800    ; Refresh
                        86400     ; Retry
                        2419200   ; Expire
                        604800 )  ; Negative Cache TTL
;
@       IN      NS      keita.server.
@       IN      A       192.168.~.~
www     IN      A       192.168.~.~

設定後にBINDを再起動します。

sudo systemctl restart bind9

4. クライアント側のDNS設定

クライアントPCのDNS設定をBINDに向けます。

sudo nano /etc/resolv.conf

のファイルに以下を追記します。

nameserver 192.168.~.~

設定後に動作確認をします。

nslookup keita.server

期待される出力:

Server: 192.168.~.~
Address: 192.168.~.~#53

Name: keita.server
Address: 192.168.~.~

5. Apacheのバーチャルホスト設定

sudo nano /etc/apache2/sites-available/keita.server.conf

のファイルに以下を記載します。

<VirtualHost *:80>
    ServerName keita.server
    ServerAlias www.keita.server
    DocumentRoot /var/www/html

    <Directory /var/www/html>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/keita_error.log
    CustomLog ${APACHE_LOG_DIR}/keita_access.log combined
</VirtualHost>

設定反映:

sudo a2ensite keita.server.conf
sudo systemctl restart apache2

動作確認:

curl http://keita.server

期待される出力:

<html>
  <body>
    <h1>Apache Test Page</h1>
  </body>
</html>

6. 他のPCからアクセスする方法

クライアントPC(Windows)のhostsファイルを編集する必要があります。

C:\Windows\System32\drivers\etc\hosts

以下を追加:

192.168.~.~ keita.server

ブラウザで http://keita.server にアクセスし、ページが開けば成功です。

image.png


まとめ

今回詳細した方法は ローカル環境限定 で有効な設定です。セキュリティ的対策はしていないので、ローカル開発環境のテストとして活用してください!

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?