ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Cloud InfrastructureでのBIND9ドメイン・ネーム・システムの構成
イントロダクション
OraStageは、再生可能エネルギー・ソリューションと革新的な電力技術を専門とするエネルギー部門のリーディング・カンパニーであり、パフォーマンス、スケーラビリティ、セキュリティを強化するためにワークロードをOracle Cloud Infrastructure(OCI)に移行するという戦略的な決定を発表しました。
OraStageが概説した特定のニーズと条件を考慮すると、同社はクラウドでハイブリッド・ドメイン・ネーム・システム(DNS)ソリューションを必要とし、ハイブリッドでは、OCI DNSサービスに加えて、独自のBerkeley Internet Name Domainバージョン9 (BIND9) DNSシステムを使用します。ここでは、構築しようとしている最終的なアーキテクチャを次のイメージに示します。
OraStage DNSの要件:
-
会社には複数の内部ドメインおよびサブドメインがあり、それらのすべてをOCIのBIND9 DNSによって解決する必要があります。OraStageは、関連するすべてのゾーンおよびレコードを管理します。これらのドメインの1つは、このチュートリアルで使用する
orastage.com
です。そのため、orastage.com
への問合せは、BIND9に転送する必要があります。 -
場合によっては、OCIネイティブ・ドメイン(
oraclevcn.com
、oraclecloud.com
など)を解決する必要があり、これはOCIプライベートDNSコンポーネント(プライベート・ビュー、エンドポイントとルールの転送、リスニング・エンドポイント)を使用して行われます。 -
すべての問合せは、pfSenseファイアウォール・インスタンスによって検査される必要があります。
-
単一障害点を回避するために、OraStageは別のDNSサーバーを使用し、OCIロード・バランサを利用してプライマリDNSとセカンダリDNS間で問合せを分散することを計画しています。
このチュートリアルシリーズは、上記の概説された要件を達成するためにステップバイステップをガイドし、最初からソリューション全体を構築します。次のリストから各チュートリアルに簡単にナビゲートできます。
-
チュートリアル1: OCIでBIND9 DNSを構成します。コンピュート・インスタンスにBIND9をインストールおよび構成し、それをOCIの2つのテスト環境用のローカルDNSサーバーとする方法について学習します。これらの環境は、それぞれ別のスポーク・ネットワークでホストされる「フロントエンド」および「バックエンド」サーバーで構成されます。BIND9サーバーは、
orastage.com
に送信されたすべてのDNS問合せを処理します。 -
チュートリアル2: OCIのBIND9 DNSシナリオで高可用性を実装します。このチュートリアルでは、セカンダリBIND9サーバーの追加と、両方のサーバー間でDNSトラフィックを分散するためのネットワーク・ロード・バランサ(NLB)の構成に重点を置きます。
orastage.com
へのDNS問合せはNLB IPに送信され、プライマリとセカンダリBIND9サーバー間の負荷が分散されます。1つのサーバーが使用できなくなった場合、DNSの解決はサービスの中断なしで続行されます。 -
チュートリアル3: OCI DNSを使用したネイティブ・ドメインの解決。
oraclevcn.com
やoraclecloud.com
などのネイティブ・ドメインを解決する必要がある場合に備えて、OCIでネイティブDNSコンポーネントを使用する特定のユース・ケースにのみ焦点を当てます。BIND9 DNSはこのチュートリアルでは使用されません。 -
チュートリアル4: pfSenseファイアウォールを使用したDNSアーキテクチャへのセキュリティの追加。OCIのハブVCNにpfSenseファイアウォールをインストールすることに焦点を当て、検査対象のファイアウォールを介して(過去のチュートリアルで実行された)DNS問合せを含むすべての東西トラフィックをルーティングするために必要なネットワーク構成を実行します。
BIND9の概要
BIND9 (Berkeley Internet Name Domain version 9)は、世界で最も広く使用されている成熟したDNS (Domain Name System)サーバー・ソフトウェア・パッケージの1つです。これは、Internet Systems Consortium(ISC)によって開発され、維持されています。BIND9は、インターネットのほとんどのDNSインフラストラクチャのバックボーンとして機能し、小規模デプロイメントと大規模デプロイメントの両方に堅牢で信頼性の高いDNSサービスを提供します。
BIND9の柔軟性、堅牢性、および広範な機能セットにより、小規模な内部ネットワークからインターネット上の最大のパブリックDNSサービスまで、幅広いDNSアプリケーションに適しています。
BIND9の主な機能
-
DNSプロトコル・サポート: IPv4およびIPv6、DNSSEC (DNSセキュリティ拡張)、TSIG (トランザクションSIGnature)など、すべての主要なDNS機能およびプロトコルをサポートします。
-
DNSSEC (DNSセキュリティ拡張): DNSデータの整合性と信頼性を保護し、キャッシュの中毒やスプーフィングなどの攻撃を防止するための高度なセキュリティ機能を提供します。
-
スケーラビリティとパフォーマンス:小規模から非常に大規模なDNSデプロイメントに適しており、高い問合せ負荷および大規模なゾーンを効率的に処理する機能があります。
-
柔軟性とカスタマイズ:
- DNSの動作、ゾーン管理および問合せ処理を微調整するための豊富なオプションにより、構成の自由度が高くなります。
- マスター(プライマリ)、スレーブ(セカンダリ)、スタブゾーンなど、さまざまなタイプのゾーンをサポートします。
-
動的DNS:動的DNS (DDNS)をサポートしているため、サーバーを再起動せずにDNSレコードにリアルタイムで更新できます。
-
アクセス制御とセキュリティ:
- DNSサービスへのアクセスを制限し、ゾーンを問い合せまたは更新できるユーザーを管理するためのアクセス制御リスト(ACL)を実装します。
- 問合せのソースに基づいて、DNS問合せに対する様々な回答を提供するビューをサポートします。
-
ログと監視:
- 問合せ、更新およびサーバー・パフォーマンスを追跡するための広範なロギング機能。
- 監視ツールとの統合により、高可用性と迅速なトラブルシューティングを実現します。
-
キャッシュ: DNSレスポンスをキャッシュすることで、パフォーマンスを向上させ、認可DNSサーバーの負荷を軽減するための堅牢なキャッシュ・メカニズムを提供します。
-
ゾーン転送: AXFR (全ゾーン転送)とIXFR (増分ゾーン転送)を使用した DNSサーバー間のセキュアなゾーン転送をサポートします。
BIND9の共通ユースケース
-
認可DNSサーバー:ドメインのDNSレコードをホストし、DNS問合せに対する認可レスポンスを提供します。
-
再帰DNSサーバー:他のDNSサーバーを再帰的に問い合せることで、クライアントのDNS問合せを解決します。
-
DNSサーバーの転送: DNS問合せを他のDNSサーバーに転送します。これは、キャッシュとともによく使用されます。
-
セカンダリ(スレーブ)DNSサーバー:プライマリ・サーバーからゾーン・データのコピーを保持し、冗長性とロード・バランシングを提供します。
BIND9のインストールおよび構成
-
インストール: BIND9は、Linux、UNIX、Windowsなどの様々なオペレーティング・システムにインストールできます。これは、ほとんどのLinuxディストリビューションのパッケージ・マネージャから入手することも、ソースからコンパイルすることもできます。
-
構成:メインの構成ファイルは
named.conf
で、管理者はゾーン、アクセス制御、ロギング・オプションおよびその他の設定を定義します。ゾーンファイルには、各ドメインの実際の DNSレコードが含まれます。
OCIでBIND9を使用
一部のお客様が、Oracle Cloud Infrastructure(OCI)の管理対象DNSサービスを使用するかわりに、独自のDNS(BIND9など)を使用および管理することを選択する理由はいくつかあります。
-
カスタマイズと柔軟性:
-
拡張構成: BIND9のようなカスタムDNSソリューションでは、広範な構成が可能であるため、お客様は、管理対象サービスでサポートされない特定の要件を満たすようにDNS設定を調整できます。
-
特殊機能:一部の組織では、特定の問合せロギング、詳細なアクセス制御、管理対象サービスが提供しない可能性のあるカスタムDNSレコードなどの高度な機能が必要です。
-
-
原価に関する考慮事項:
-
コスト管理:自己管理型DNSは、特に、管理対象サービスに関連する変動コストを回避できるため、大量のDNSトラフィックを抱える組織にとって、よりコスト効率が高くなります。
-
予測可能な費用:独自のDNSサーバーを運用すると、管理対象DNSの使用量に対して支払うのではなく、インフラストラクチャ・コストを管理するだけで済むため、コストを予測しやすくなります。
-
-
制御とセキュリティ:
-
フル・コントロール:組織は、カスタム・セキュリティ・ポリシー、詳細なロギング、きめ細かいアクセス制御を実装する機能など、DNSインフラストラクチャを完全に制御することを好む場合があります。
-
データ・プライバシ:機密性の高い環境または規制対象の環境では、DNSトラフィックを独自のネットワーク内に保持することが、データのプライバシと規制へのコンプライアンスを確保するためのセキュリティ要件となります。
-
-
パフォーマンスと信頼性:
-
パフォーマンスの最適化:自己管理型DNSを使用すると、キャッシング、ロード・バランシング、およびニーズに合せた位置情報固有のDNSレスポンスを構成することで、パフォーマンスを最適化できます。
-
信頼性:独自のDNSサーバーを管理することで、組織は特定の信頼性要件に合った高可用性構成および冗長性対策を実装できます。
-
-
既存のインフラストラクチャとの統合:
-
レガシー・システム:レガシー・システムを使用する組織には、他のシステムやプロセスと深く統合されている既存のDNSインフラストラクチャがあるため、独自のDNSの管理を続行しやすくなります。
-
カスタム統合:自己管理型DNSを使用すると、特定のDNS構成やインタラクションを必要とする他のカスタム・アプリケーションやサードパーティ・アプリケーションとのシームレスな統合が可能です。
-
-
規制およびコンプライアンス要件:
- コンプライアンスのニーズ:業界によっては、法令およびコンプライアンスの標準に準拠するために、DNSを含むITインフラストラクチャのあらゆる側面を管理する必要のある厳しい規制要件があります。
-
学習と専門知識:
- スキル開発:一部の組織は、DNS管理に関する社内の専門知識と知識を維持することを好みます。これは、ITインフラストラクチャ全体のトラブルシューティングおよび最適化に役立つ可能性があります。
-
ベンダー・ロックイン回避:
- ロックインの回避:独自のDNSを管理することで、組織は特定のベンダーのエコシステムにロックインされるのを避け、大幅な再構成なしでプロバイダを切り替えたり、ワークロードを移行したりする柔軟性を高めることができます。
OCIマネージドDNSサービスは使いやすさ、スケーラビリティ、管理オーバーヘッドの削減を提供しますが、これらの要因により、一部の組織が独自のDNSインフラストラクチャの管理を選択する理由が強調されます。
OCIでのBIND9の設定の目標
-
BIND9およびOCIの概要
- BIND9とは何か、およびDNS管理におけるその役割を理解します。
- Oracle Cloud Infrastructure(OCI)とその設定に関連する主要コンポーネントの概要をご覧ください。
-
前提条件と初期設定
- 設定に必要な前提条件を特定して収集します。
- BIND9サーバーをホストするためのOCIインスタンス(仮想マシン)を設定します。
-
OCI環境の構成
- OCIの基本的なネットワーク設定、つまりルート・ルールとゲートウェイを構成して、関連するすべてのサーバーとクライアント間の適切な通信を確立し、セキュリティ・リストを使用してDNSトラフィックを許可します。
-
OCIインスタンスへのBIND9のインストール
- SSHを介してOCIインスタンスにアクセスします。
- BIND9に必要なパッケージおよび依存関係をインストールします。
-
BIND9の構成
- メインのBIND9構成ファイル(
named.conf
)を構成します。 - 転送 DNS検索用のゾーンファイルを設定します。
- メインのBIND9構成ファイル(
-
BIND9サービスの起動および管理
- BIND9サービスを起動し、ブート時に起動するように構成します。
- BIND9サービスが正しく実行されていることを確認します。
-
DNSサーバーのテスト
- コマンドライン・ツール(dig、hostなど)を使用して、DNS解決をテストします。
- 前方参照が正しく構成され、動作していることを確認します。
-
BIND9サーバーの保護
- アクセス制御など、BIND9サーバーを保護するためのベスト・プラクティスを実装します。
-
結論と追加のリソース
- 実行した内容を要約します。
- さらなる学習のための追加のリソースと参照を提供します。
目的
-
このチュートリアルを終えると、Oracle Cloud Infrastructure (OCI)で機能的なBIND9 DNSサーバーが実行されるようになります。DNSの基本とBIND9の動作を理解し、クラウド環境でBIND9サーバーを構成、管理および保護できるようにします。また、OCIでBIND9 DNS設定をトラブルシューティングおよび保守するための知識が備わっています。このチュートリアルでは、ネットワーキングおよびコンピュート・サービス内の様々なOCIコンポーネントの運用におけるスキルを向上させることもできます。
-
このチュートリアルの主な目的は、FE-VM (
fe.orastage.com
)でBE-VM (be.orastage.com
)を問い合せ、その逆をPrimary-DNS (primary-dns.orastage.com
)が認可DNSサーバーとして機能できるようにすることです。
最終的なアーキテクチャ
前提条件
-
OCIテナンシへのアクセスと、必要なネットワークおよびコンピュート・サービスを管理するための権限。
-
OCIネットワークのルーティングとセキュリティとその機能(Virtual Cloud Network (VCN)、ルート表、Dynamic Routing Gateway (DRG)、セキュリティ・リストおよび要塞)の基本的な理解。
-
Ubuntu LinuxとDNSの基本的な理解
-
3つのVirtual Cloud Network (VCNs)が必要で、それぞれに1つのプライベート・サブネットがあります。
- DNS-VCN:これにより、プライマリDNSサーバーがホストされます。セカンダリDNSおよびネットワーク・ロード・バランサに加えて。
- フロントエンド-VCN:これにより、クライアントの1つがホストされます。OCI DNSフォワーダに加えて。
- バックエンドVCN:これにより、他のクライアントがホストされます。OCI DNSフォワーダに加えて。
タスク1: ルーティングおよびセキュリティ・ネットワーク・コンポーネントの設定
タスク1.1: VCNsの作成
-
次のVCNsがすでに作成されていることを確認します。
- DNS-Private-Subnet (
10.0.0.0/24
)を含むDNS-VCN (10.0.0.0/16
)。 - FE-Private-Subnet (
10.1.0.0/24
)を含むフロントエンドVCN (10.1.0.0/16
)。 - BE-Private-Subnet (
10.2.0.0/24
)を含むバックエンドVCN (10.2.0.0/16
)。
- DNS-Private-Subnet (
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「ネットワーキング」をクリックします。
- 「仮想クラウド・ネットワーク」をクリックします。
-
VCNsが配置され、各VCNにはプライベート・サブネットが1つのみあり、デフォルト・ルート表およびセキュリティ・リストがアタッチされています。
タスク1.2: Dynamic Routing Gateway (DRG)の作成
DRGは、あるVCNから別のVCNへのプライベート・トラフィック、またはVCNとオンプレミス・ネットワーク間、あるいは他のクラウド環境ネットワークを持つVCN間のプライベート・トラフィックのパスを提供する仮想ルーターです。そのため、すべてのOCIネットワーク環境にとって強力で重要なコンポーネントです。このチュートリアルでは、これを使用して、同じリージョン内の複数のVCNs間の接続を確立します。
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「ネットワーキング」をクリックします。
- 「Dynamic Routing Gateway」をクリックします。
-
「動的ルーティング・ゲートウェイの作成」をクリックします。
- DRGの名前を入力します。
- 「動的ルーティング・ゲートウェイの作成」をクリックします。
-
DRGは正常に作成されました。
タスク1.3: DRGへのVCNsのアタッチ
-
DRGの詳細ページで、仮想クラウド・ネットワーク・アタッチメントを作成します。作成するには、「仮想クラウド・ネットワーク・アタッチメントの作成」をクリックします。
-
DNS-VCNアタッチメント:
-
フロントエンド-VCNアタッチメント:
-
バックエンドVCNアタッチメント:
-
-
すべてのVCNsは正常にアタッチされています。デフォルトでは、これらのアタッチメントは自動生成されたDRGルート表を使用します。これにより、各アタッチメントは他のVCNsへのルートを動的に学習できます。
-
すべてのVCNsが相互に接続できる必要があります。そのため、いくつかのルートとセキュリティ・ルールを使用して、それらの間の通信を容易にする必要があります。タスク1.4、タスク1.5およびタスク1.6では、次のことを行います。
- インスタンスにログインできるようにSSHアクセスを許可します。
- 必要な場所にDNSトラフィックを許可します。
- Pingトラフィックが必要な場所で許可されます。
- 必要な場所にエグレス・インターネット・アクセスを提供します。
- すべてのコンピュート・インスタンスがDRGを介して他方にアクセスできるようにする必要があります。
タスク1.4: DNS-VCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「DNS-VCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールが追加されていることを確認します。
0.0.0.0/0
- NAT Gateway:インターネットへの一方向アクセスを可能にするには、必要に応じてパッケージ/パッチをインストールします。このチュートリアルでは、プライマリ-DNSサーバーにBIND9パッケージをインストールするために、このアクセスが必要です。10.1.0.0/16
- DRG: フロントエンドVCN宛てのトラフィックをDRGにルーティングします。10.2.0.0/16
- DRG: バックエンドVCN宛てのトラフィックをDRGにルーティングします。
-
NATゲートウェイが作成されていない場合は、前述のステップでルート・ルールを追加する前に、作成のステップに従ってください。
- DNS-VCNの詳細ページに移動し、「NATゲートウェイ」をクリックします。
- 「NATゲートウェイの作成」をクリックします。
-
次の情報を入力します
- NATゲートウェイの「名前」を入力します。
- 「Ephemeral Public IP Address」を選択します。
- 「NATゲートウェイの作成」をクリックします。
NATゲートウェイは正常に作成されました。
-
DNS-VCNサブネットのルーティング部分が完了したら、今すぐセキュリティを実行します。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
イングレス・トラフィックを許可してください。
- どこからでもSSHトラフィック(ポート22)。
- フロントエンド-VCNおよびバックエンド-VCNからのDNSトラフィック(TCP/ポート53およびUDP/ポート53)。
-
すべてのエグレス・トラフィックを許可するようにしてください。
タスク1.5: フロントエンドVCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「フロントエンド-VCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールが追加されていることを確認します。
0.0.0.0/0
- NAT Gateway:インターネットへの一方向アクセスを行うには、FE-VM**がOCI Bastionサービスを使用できるように、かわりにサービス・ゲートウェイを使用してジョブも実行できるように、ここで必要です。10.0.0.0/16
- DRG: DNS-VCN宛てのトラフィックをDRGにルーティングします。10.2.0.0/16
- DRG: バックエンドVCN宛てのトラフィックをDRGにルーティングします。
-
NATゲートウェイが作成されていない場合は、前述のステップでルート・ルールを追加する前に、タスク1.4のステップに従ってルート・ルールを作成します。
-
Frontend-VCNのルーティング部分が完了したら、今すぐセキュリティを実行します。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
イングレス・トラフィックを許可してください。
- どこからでもSSHトラフィック(ポート22)。
- バックエンドVCN (ICMP、タイプ8)からのPingトラフィックでは、テスト・フェーズでこのルールが必要です。
-
すべてのエグレス・トラフィックを許可するようにしてください。
タスク1.6: バックエンドVCNのルーティングおよびセキュリティの構成
-
これは、サブネット・レベルで実行する必要があります。「VCNs」ページに移動し、「バックエンドVCN」をクリックします。
-
プライベート・サブネットをクリックします。
-
割り当てられたルート表である「ルート表」をクリックします。
-
次のルールが追加されていることを確認します。
0.0.0.0/0
- NAT Gateway:インターネットへの一方向アクセスを行うには、BE-VMがOCI Bastionサービスを使用できるように、かわりにサービス・ゲートウェイを使用してジョブも実行できるように、ここで必要です。10.0.0.0/16
- DRG: DNS-VCN宛てのトラフィックをDRGにルーティングします。10.1.0.0/16
- DRG: フロントエンドVCN宛てのトラフィックをDRGにルーティングします。
-
NATゲートウェイが作成されていない場合は、前述のステップでルート・ルールを追加する前に、タスク1.4のステップに従ってルート・ルールを作成します。
-
バックエンドVCNのルーティング部分が完了したら、今すぐセキュリティを実行します。「サブネットの詳細」ページに移動し、割り当てられたセキュリティ・リストをクリックします。
-
イングレス・トラフィックを許可してください。
- どこからでもSSHトラフィック(ポート22)。
- フロントエンド-VCN (ICMP、タイプ8)からのPingトラフィックは、テスト・フェーズでこのルールが必要になります。
-
すべてのエグレス・トラフィックを許可するようにしてください。
-
基本的なネットワーク・コンポーネント(VCNs、サブネット、ルート表、DRGおよびセキュリティ・リスト)の準備ができました。ここで、アーキテクチャは次の図のようになります。
タスク2: OCIコンピュート・インスタンスのプロビジョニング
BIND9が構成されるコンピュート・インスタンスをプロビジョニングします。
タスク2.1: SSHキー・ペアの生成
これは、インスタンスを作成する前に実行する必要があります。SSHキーは、Linuxコンピュート・インスタンスに対する認証に使用されます。鍵を生成するには、Windowsマシンで PuTTYgenツールを使用するか、任意のマシンで ssh-keygenユーティリティーを使用します。このチュートリアルでは、OCI Cloud Shellでssh-keygenを使用します。
-
「クラウド・シェル」をクリックします。
-
ssh-keygen
コマンドを実行してキー・ペアを生成します。 -
cd .ssh
コマンドを使用してデフォルトの.ssh
ディレクトリに移動し、公開キー・ファイルid_rsa.pub
の内容をコピーします。これをタスク2.2で使用します。
タスク2.2: プライマリDNSコンピュート・インスタンスのプロビジョニング
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「計算」をクリックします。
- 「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。
-
インスタンスの名前を入力します。
-
インスタンスのオペレーティング・システムとして「Ubuntu 20.04」を選択します。
-
「プライマリ・ネットワーク」に、次の情報を入力します。
- 「DNS-VCN」を選択します。
- プライベート・サブネットを選択します
-
インスタンスにプライベートIPアドレス
10.0.0.10
を割り当てます。 -
タスク2.1で生成された公開キーを貼り付けます。
-
ページの最後までスクロールし、「拡張オプションの表示」をクリックします。
-
「Oracle Cloud Agent」をクリックします。
- 後で要塞を使用してインスタンスにアクセスするため、「要塞」プラグインを選択します。
- 「作成」をクリックします。
-
プライマリ-DNSコンピュート・インスタンスが正常に作成されました。
-
アーキテクチャは、次の図のようになります。
後のタスクでは、プライマリ-DNSインスタンスにBIND9をインストールして構成します。
タスク3: BIND9のインストールおよび構成
タスク3.1: 要塞を使用したプライマリDNSコンピュート・インスタンスへのアクセス
-
まず、BIND9をインストールして構成するには、コンピュート・インスタンスへのSSHを介したアクセスを確立する必要があります。ただし、プライベート・サブネットにインスタンスを作成したため、パブリックIPがないため、どこからでも直接アクセスできず、そのために別のOCIサービスを使用します。
OCI Bastionは、仲介として機能するマネージド・サービスであり、プライベート・ネットワーク内のリソースへの安全なアクセスを可能にします。これは、パブリック・インターネットに公開されていないリソースへのアクセスを必要とする管理用途に特に有用であり、Jump Server as a Serviceと考えることができます。
- 「アイデンティティとセキュリティ」をクリックします。
- 「要塞」をクリックします。
-
「要塞の作成」をクリックします。
-
次の情報を入力します
- 要塞名を入力します。
- VCN (DNS-VCN)とそのサブネットを選択します。
- CIDRブロック許可リストは、要塞に接続する必要があるIPの許容範囲です。ここでは、この実装に
0.0.0.0/0
を使用し、接続元のパブリックIPアドレスを選択することで、より具体的にすることができます。 - 「要塞の作成」をクリックします。
-
要塞が作成されます。特定の期間(デフォルトは3時間)のターゲット・リソース(プライマリ-DNS)に接続できるセッションを作成する必要があります。
-
次の情報を入力します
- セッション・タイプ: 「管理対象SSHセッション」を選択します。
- セッション名:セッションの名前を入力します。
- ユーザー名:ユーザー名を入力してくださいUbuntu Linuxインスタンスの場合、デフォルトのユーザー名はubuntuです。
- コンピュート・インスタンス:タスク2.2で作成したプライマリ-DNSインスタンスを選択します。
- タスク2.1で生成したものと同じ公開キーを貼り付けます。
- 「セッションの作成」をクリックします。
-
セッションの作成後、3つのドットおよびSSHのコピー・コマンドをクリックします。
コマンドは次のようになります。
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aiaa6buxxxxxxxxxxxxxxxxxxrlnywmo3n2pty5wpf7fq@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 ubuntu@10.0.0.10
-
OCIクラウド・シェルを開きます。
cd .ssh
コマンドを使用して、.ssh
ディレクトリに移動します。- SSHコマンドを貼り付けます。
<privateKey>
を秘密キー・ファイル名id_rsa
に置き換えてください。
-
正常にログインされました。
タスク3.2: BIND9のインストール
インスタンスにアクセスした後、BIND9をインストールし、それが稼働中であることを確認します。
-
次のコマンドを実行します。
sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host
-
sudo systemctl status named
コマンドを実行して、BIND9サービスのステータスを確認します。これはアクティブ(実行中)です。 -
sudo systemctl enable named
コマンドを実行してサービスを有効にし、再起動後に自動的に開始されるようにします。
タスク3.3: インスタンスの完全修飾ドメイン名(FQDN)の変更
-
インスタンスのFQDNを変更するには、
sudo vi /etc/hosts
コマンドを使用してhostsファイルにアクセスし、次の行を追加します。10.0.0.10 primary-dns.orastage.com primary-dns
-
変更を確認するには、
hostname -f
コマンドを実行して新しいFQDNを確認します。
タスク3.4: named.conf.options
ファイルの構成
-
構成を追加します。
-
/etc/bind/named.conf.options
ファイルの末尾に次の行を追加し、ファイルを保存します。recursion yes; notify yes; allow-query { any; }; allow-query-cache { any; }; allow-recursion { any; }; forwarders { 8.8.8.8; }; auth-nxdomain no; # conform to RFC1035 listen-on { localhost; any; }; allow-transfer { any; };
-
BIND9サービスを再起動します。
-
サービス・ステータスの確認
-
タスク3. 5: netstat
を使用したTCP/UDPポート・ステータスの表示
net-toolsは、Linux OSに不可欠なネットワーキング・ツールのコレクションを提供するコマンドライン・ユーティリティのパッケージです。
-
sudo apt install net-tools
コマンドを実行して、net-toolsをインストールします。これは、netstat
コマンドを使用できるようにするために必要です。 -
sudo netstat -antu
コマンドを実行して、インスタンスがリスニングしているポート/プロトコルを確認します。次の図に示すように、IP10.0.0.10
では、TCP/port 53およびUDP/port 53を開く必要があります。
タスク3.6: named.conf.local
ファイルの構成
-
次の行を
/etc/bind/named.conf.local
ファイルの末尾に追加します。zone "orastage.com" { type master; allow-transfer { any; }; file "/var/lib/bind/db.orastage.com"; };
タスク3.7: db.orastage.com
ファイルの構成
-
db.orastage.com
ファイルはまだ存在しません。作成するには、sudo vi /var/lib/bind/db.orastage.com
コマンドを実行して、ファイルに次のコンテンツを追加します。$TTL 1D @ IN SOA primary-dns.orastage.com. admin.orastage.com. ( 329 ; serial 604800 ; refresh (1 week) 86400 ; retry (1 day) 2419200 ; expire (4 weeks) 604800 ; minimum (1 week) ) IN NS primary-dns.orastage.com. primary-dns IN A 10.0.0.10 fe IN A 10.1.0.5 be IN A 10.2.0.5
タスク3.8: 50-cloud-init.yaml
ファイルの構成
-
/etc/netplan/50-cloud-init.yaml
ファイルにアクセスし、次の行を追加します。nameservers: addresses: [10.0.0.10] search: [orastage.com]
-
sudo netplan apply
コマンドを実行して、変更を有効にします。
タスク3.9: iptablesファイアウォールの無効化
-
テスト・フェーズ中の接続の問題を回避するために、このチュートリアルでのみiptablesを一時的に無効化します。
-
sudo su
コマンドを実行して、rootユーザーに切り替えます。 -
既存のファイアウォール・ルールのバックアップを保存するには、
iptables-save > /root/firewall_rules.backup
コマンドを実行します。 -
次のコマンドを実行して、すべてのルールを消去し、ファイアウォールを通過するすべてのトラフィックを許可します。
iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
-
タスク6が終了したら、
iptables-restore < /root/firewall_rules.backup
コマンドを実行してファイアウォール・ルールをリストアします。 -
ルールを消去した後、再起動後にこの変更が永続的になるようにする必要があります。そのため、
apt install iptables-persistent
コマンドを実行してパッケージをインストールします。 -
iptables-save > /etc/iptables/rules.v4
コマンドを実行します。 -
iptablesルールを表示するには、
iptables -L
コマンドを実行します(空である必要があります)。
-
タスク3.10: BIND9の再起動
-
次のコマンドを実行してサービスを再起動します。
sudo systemctl restart named
タスク3.11: テスト
-
db.orastage.com
ファイルに追加したドメイン名を問い合せる複数のテストを実行し、問合せがローカルで応答しているかどうかを確認します。-
orastage.com
ドメイン:host -a orastage.com
。 -
Primary-DNS
ドメイン:host -a primary-dns.orastage.com
。 -
FE-VM
ドメイン:host -a fe.orastage.com
。 -
BE-VM
ドメイン:host -a be.orastage.com
。
-
タスク4: OCI転送エンドポイントおよびルールの構成
Each OCI VCN has a default resolver that can be used to resolve hostnames in the same VCN, different VCNs, on-premises networks, or even publicly published hostnames on the Internet.このタスクでは、リゾルバで2つのコンポーネントを使用して、BIND9インスタンスPrimary-DNSに問合せを転送するという要件を達成します。
- 転送エンドポイント: DNSリゾルバは、転送ルールで定義されているリモートDNSを問い合せることができます。
- 転送ルール:リゾルバのプライベート・ビューによって問合せが応答されない場合のDNS問合せの処理方法を制御するために使用されます。
orastage.com
への問合せは、どのリモートDNSサーバーに転送され、どの転送エンドポイントを使用しますか。
タスク4.1: フロントエンドVCNの転送エンドポイントおよびルールの構成
Frontend-VCNで転送エンドポイントおよびルールを作成し、FE-VMからプライマリ-DNSインスタンスにorastage.com
問合せをポイントします。
-
フロントエンド-VCNに移動し、「DNSリゾルバ」をクリックします。
-
「エンドポイントの作成」をクリックします。
-
次の情報を入力します
- 名前:エンドポイントの名前を入力します。
- サブネット: VCNのプライベート・サブネットを選択します。
- エンドポイント・タイプ: 「転送」を選択します。
- 転送IPアドレス:
10.1.0.6
と入力します。 - 「エンドポイントの作成」をクリックします。
-
転送エンドポイント(FWD)は正常に作成されました。
-
「ルール」および「ルールの管理」をクリックします。
-
次の情報を入力します
- ルール条件: 「ドメイン」を選択します。
- ドメイン:
orastage.com
ドメインを入力します。 - ソース・エンドポイント:転送エンドポイントを選択します。
- 宛先IPアドレス: BIND9インスタンス
10.0.0.10
のIPを入力します。
-
転送ルールが正常に作成されました。
タスク4.2: バックエンドVCNの転送エンドポイントおよびルールの構成
バックエンドVCNで転送エンドポイントおよびルールを作成し、BE-VMからプライマリDNSインスタンスにorastage.com
問合せをポイントします。
- バックエンドVCNに移動し、「DNSリゾルバ」をクリックします。
-
「エンドポイントの作成」をクリックします。
-
次の情報を入力します
- 名前:エンドポイントの名前を入力します。
- サブネット: VCNのプライベート・サブネットを選択します。
- エンドポイント・タイプ: 「転送」を選択します。
- 転送IPアドレス:
10.2.0.6
と入力します。 - 「エンドポイントの作成」をクリックします。
-
転送エンドポイント(FWD)は正常に作成されました。
-
「ルール」および「ルールの管理」をクリックします。
-
次の情報を入力します
- ルール条件: 「ドメイン」を選択します。
- ドメイン:
orastage.com
ドメインを入力します。 - ソース・エンドポイント:転送エンドポイントを選択します。
- 宛先IPアドレス: BIND9インスタンス
10.0.0.10
のIPを入力します。
-
転送ルールが正常に作成されました。
-
アーキテクチャは、次の図のようになります。
タスク5: DNS問合せを実行するためのクライアント・インスタンスのプロビジョニング
タスク5.1: FE-VM
コンピュート・インスタンスの作成
-
左上隅のハンバーガー・メニュー(≡)をクリックします。
- 「計算」をクリックします。
- 「インスタンス」をクリックします。
-
「インスタンスの作成」をクリックします。
-
たとえば、「名前」を入力します。
-
インスタンスのオペレーティング・システムとして「Oracle Linux 8」を選択します。
-
「プライマリ・ネットワーク」に、次の情報を入力します。
- 「フロントエンド-VCN」を選択します。
- プライベート・サブネットを選択します。
-
インスタンスにプライベートIPアドレス
10.1.0.5
を割り当てます。 -
タスク2.1で生成された公開キーを貼り付けます。
-
ページの最後までスクロールし、「拡張オプションの表示」をクリックします。
-
「Oracle Cloud Agent」をクリックします。
-
要塞を使用してインスタンスにアクセスするため、「要塞」プラグインを選択し、「作成」をクリックします。
-
FE-VMコンピュート・インスタンスが正常に作成されました。
タスク5.2: BE-VM
コンピュート・インスタンスの作成
-
「インスタンス」および「インスタンスの作成」をクリックします。
-
インスタンスの名前を入力します。
-
インスタンスのオペレーティング・システムとして「Oracle Linux 8」を選択します。
-
「プライマリ・ネットワーク」に、次の情報を入力します。
- 「バックエンドVCN」を選択します。
- プライベート・サブネットを選択します。
-
インスタンスにプライベートIPアドレス
10.2.0.5
を割り当てます。 -
タスク2.1で生成された公開キーを貼り付けます。
-
ページの最後までスクロールし、「拡張オプションの表示」をクリックします。
-
「Oracle Cloud Agent」をクリックします。
-
要塞を使用してインスタンスにアクセスするため、「要塞」プラグインを選択し、「作成」をクリックします。
-
BE-VMコンピュート・インスタンスが正常に作成されました。
-
アーキテクチャが完了しました。
ノート:後続のタスクでは、複数のシナリオをテストし、設定が期待どおりに機能することを検証します。
タスク6: テストと検証
タスク6.1: 要塞およびテストを使用したFE-VMコンピュート・インスタンスへのアクセス
-
FE-VMクライアント・マシンは、
be.orastage.com
を解決できる必要があります。- 「アイデンティティとセキュリティ」をクリックします。
- 「要塞」をクリックします。
-
「要塞の作成」をクリックします。
-
次の情報を入力します
- 要塞名:要塞の名前を入力します。
- ネットワーキングの構成: VCN (フロントエンドVCN)とそのサブネットを選択します。
- CIDRブロック許可リストは、要塞に接続する必要があるIPの許容範囲です。ここでは、この実装に
0.0.0.0/0
を使用しており、接続元のパブリックIPアドレスを選択することで、より具体的にすることができます。 - 「要塞の作成」をクリックします。
-
要塞が作成されます。特定の期間(デフォルトは3時間)のターゲット・リソース(FE-VM)に接続するセッションを作成する必要があります。
-
次の情報を入力します
- セッション・タイプ: 「管理対象SSHセッション」を選択します。
- セッション名:名前を入力します。
- ユーザー名:ユーザー名を入力してくださいOracle Linuxインスタンスの場合、デフォルト・ユーザーは
opc
です。 - コンピュート・インスタンス:タスク5で作成したFE-VMインスタンスを選択します。
- タスク2.1で生成されたものと同じ公開キーを貼り付けます。
- 「セッションの作成」をクリックします。
-
セッションの作成後、3つのドットおよびSSHのコピー・コマンドをクリックします。
コマンドは次のようになります。
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aiaskfyan4yj7yx3bmm57rckmvvawikppba5mxxzo2q7dka@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 opc@10.1.0.5
- クラウド・シェルを開き、
cd .ssh
コマンドを使用して.ssh
ディレクトリに移動します。 - SSHコマンドを貼り付け、
<privateKey>
を秘密キー・ファイル名id_rsa
に置き換えてください。 - yesと入力し、[Enter]をクリックします。
- クラウド・シェルを開き、
-
FE-VMから
be.orastage.com
へのorastage.com
問合せをテストします。様々な方法を使用して設定を検証できます。host
コマンドを実行します。ping
コマンドを実行します。dig
コマンドを実行します。
前述のテストに示すように、BE-VMドメインのIPアドレスを取得でき、pingはホスト名を使用して動作しています。これは、テストが成功したことを意味します。
タスク6.2: 要塞およびテストを使用したBE-VMコンピュート・インスタンスへのアクセス
-
BE-VMクライアント・マシンは、
fe.orastage.com
を解決できる必要があります。- 「アイデンティティとセキュリティ」をクリックします。
- 「要塞」をクリックします。
-
「要塞の作成」をクリックします。
-
次の情報を入力します
- 要塞名:要塞の名前を入力します。
- ネットワーキングの構成: VCN (バックエンドVCN)とそのサブネットを選択します。
- CIDRブロック許可リストは、要塞に接続する必要があるIPの許容範囲です。ここでは、この実装に
0.0.0.0/0
を使用しており、接続元のパブリックIPアドレスを選択することで、より具体的にすることができます。 - 「要塞の作成」をクリックします。
-
要塞が作成されます。特定の期間(デフォルトは3時間)のターゲット・リソース(BE-VM)に接続するセッションを作成する必要があります。
-
次の情報を入力します
- セッション・タイプ: 「管理対象SSHセッション」を選択します。
- セッション名:名前を入力します。
- ユーザー名:ユーザー名を入力してくださいOracle Linuxインスタンスの場合、デフォルト・ユーザーは
opc
です。 - コンピュート・インスタンス:ステップ06で作成したBE-VMインスタンスを選択します。
- タスク2.1で生成されたものと同じ公開キーを貼り付けます。
- 「セッションの作成」をクリックします。
-
セッションの作成後、3つのドットおよびSSHのコピー・コマンドをクリックします。
コマンドは次のようになります。
ssh -i <privateKey> -o ProxyCommand="ssh -i <privateKey> -W %h:%p -p 22 ocid1.bastionsession.oc1.eu-milan-1.amaaaaaaldij5aia73xclnp6h6i2mjnpsuer2bnz4cblejfemnr6uk7pafla@host.bastion.eu-milan-1.oci.oraclecloud.com" -p 22 opc@10.2.0.5
- クラウド・シェルを開き、
cd .ssh
コマンドを使用して.ssh
ディレクトリに移動します。 - SSHコマンドを貼り付け、
<privateKey>
を秘密キー・ファイル名id_rsa
に置き換えてください。 - yesと入力し、[Enter]をクリックします。
- クラウド・シェルを開き、
-
BE-VMから
fe.orastage.com
へのorastage.com
問合せをテストします。様々な方法を使用して設定を検証できます。host
コマンドを実行します。ping
コマンドを実行します。dig
コマンドを実行します。
上記のテストに示すように、FE-VMドメインのIPアドレスを取得でき、pingはホスト名を使用して動作しています。これは、テストが成功したことを意味します。
次のステップ
このチュートリアルでは、基本的なコンポーネント(Oracle Cloud Infrastructureでのサーバーとクライアントの設定)を使用した、小さいBIND9 DNSアーキテクチャを構築しました。このセグメント全体を通して、ルート表、DRG、セキュリティ・リスト、要塞などの様々なコンポーネントを処理することで、OCIネットワークのルーティングとセキュリティに関するインサイトを得ました。また、OCI環境で機能的なBIND9 DNSをインストールおよび構成する方法も学習しました。
次のチュートリアル: チュートリアル2: Oracle Cloud InfrastructureのBIND9ドメイン・ネーム・システムでの高可用性の実装では、高可用性レイヤーをアーキテクチャに組み込むことによって、この設定を拡張します。これは、停止時間の短縮とユーザー・エクスペリエンスの向上に不可欠です。
承認
- 作成者 - Anas abdallah (クラウド・ネットワーキング・スペシャリスト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Configure BIND9 Domain Name System in Oracle Cloud Infrastructure
G13020-03
Copyright ©2025, Oracle and/or its affiliates.