Oracle VM上でBINDを使ってDNSサーバーを構築する完全ガイド

OracleNet

✨ はじめに

Oracle Linux 7を使用したVM環境で、独自のDNSサーバーを構築したい方向けに、BINDを用いた構築手順を詳細に解説します。VM同士の名前解決やローカル開発環境での独自ドメイン使用に便利です。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


コンセプト構成

+-----------------------+         +------------------------+
|   クライアントVM      |  ---->   |     DNSサーバー         |
|  192.168.56.101       |  dig     |  192.168.56.20          |
| /etc/resolv.conf      |         |  BIND + named           |
+-----------------------+         +------------------------+

✅ 1. BINDのインストール(DNSサーバー側で実行)

yum install -y bind bind-utils

リポジトリが無効な場合は /etc/yum.repos.d/public-yum-ol7.repoを有効にしましょう。


✅ 2. /etc/named.confの設定(DNSサーバー側で編集)

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { none; };
    directory "/var/named";
    dump-file "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
    recursion yes;
    dnssec-enable no;
    dnssec-validation no;
    bindkeys-file "/etc/named.root.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};

zone "example.local" IN {
    type master;
    file "example.local.zone";
};

zone "56.168.192.in-addr.arpa" IN {
    type master;
    file "56.168.192.zone";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

✅ 3. ゾーンファイルの作成(DNSサーバー側で作成)

(正引き)/var/named/example.local.zone

$TTL 86400
@   IN  SOA dns-server.example.local. root.example.local. (
        2025062201 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL
    IN  NS  dns-server.example.local.
dns-server IN A   192.168.56.100
host01     IN A   192.168.56.101

(逆引き)/var/named/56.168.192.zone

$TTL 86400
@   IN  SOA dns-server.example.local. root.example.local. (
        2025062201 ; Serial
        3600
        1800
        604800
        86400 )
    IN  NS  dns-server.example.local.
100 IN PTR dns-server.example.local.
101 IN PTR host01.example.local.

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


✅ 4. パーミッション設定(DNSサーバー側で実行)

chown root:named /var/named/*.zone
restorecon -Rv /var/named

✅ 5. namedの起動(DNSサーバー側で実行)

systemctl enable --now named

問題がある場合:

systemctl status named -l
journalctl -xe

✅ 6. 動作確認(クライアントVM側で実行)

dig @192.168.56.20 host01.example.local
dig -x 192.168.56.101 @192.168.56.20

対応例:

host01.example.local. 86400 IN A 192.168.56.101

✅ 7. クライアント側の /etc/resolv.conf 設定(クライアントVM側で編集)

nameserver 192.168.56.20

NetworkManagerで上書きされる場合:

chattr +i /etc/resolv.conf

/etc/resolv.conf は NetworkManager 管理下にある場合、再起動時に上書きされるので注意が必要です


✅ 8. Oracle DatabaseでのDNS使用例(Oracleインストールサーバー側で設定)

Oracle Databaseで以下のような用途にDNSが使用されます:

◾ リスナー設定でホスト名を使用する

listener.oratnsnames.ora にホスト名を記述している場合、名前解決にDNSが使われます。

# tnsnames.ora の例
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = host01.example.local)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = orcl.example.local)
    )
  )

DNSが正しく設定されていないと、接続に失敗します。

◾ Data Guard や RAC環境でのVIP管理

RAC構成ではVIP(仮想IP)の名前解決にもDNSを使う構成が可能です。


⚠️ .localドメインについて

WARNING: .local is reserved for Multicast DNS

と表示される場合がありますが、これはローカル環境では問題なく使用できます。 実運用では .test.localdomainを使うのがベターです。


☑️ おわりに

Oracle Linux 7上でBINDを使ったDNSサーバー構築は、この手順でわずかなステップで完成することができます。クライアントVMや開発環境の同期化に役立つので是非導入してみてください。Oracle Databaseの構成においても、DNSによる名前解決が安定性や可搬性を高める鍵になります。

[参考]
Oracle Database Database Net Services リファレンス 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました