検索

22.2. NetworkManager で systemd-resolved を使用して、特定のドメインの DNS 要求を選択した DNS サーバーに送信する

download PDF

NetworkManager を設定して、systemd-resolved のインスタンスを開始することができます。次に、この DNS スタブリゾルバーは、IP アドレス 127.0.0.53 のポート 53 でリッスンします。したがって、このスタブリゾルバーはローカルシステムからのみ到達でき、ネットワークからは到達できません。

この設定では、NetworkManager は nameserver 127.0.0.53 エントリーを /etc/resolv.conf ファイルに追加し、systemd-resolved は、NetworkManager 接続プロファイルで指定された対応する DNS サーバーに DNS 要求を動的にルーティングします。

重要

systemd-resolved サービスは、テクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビュー機能では、最新の製品機能をいち早く提供します。これにより、お客様は開発段階で機能をテストし、フィードバックを提供できます。

テクノロジープレビュー機能のサポート範囲については、Red Hat カスタマーポータルの テクノロジープレビュー機能のサポート範囲 を参照してください。

サポートされるソリューションについては、Using dnsmasq in NetworkManager to send DNS requests for a specific domain to a selected DNS server を参照してください。

前提条件

  • システムに NetworkManager の接続が複数設定されている。
  • DNS サーバーおよび検索ドメインは、特定のドメインを解決する NetworkManager 接続プロファイルで設定されます。

    たとえば、VPN 接続で指定された DNS サーバーが example.com ドメインのクエリーを解決するようにするには、VPN 接続プロファイルに以下の設定が含まれている必要があります。

    • example.com を解決できる DNS サーバー
    • ipv4.dns-search および ipv6.dns-search パラメーターで example.com に設定された検索ドメイン

手順

  1. systemd-resolved サービスを有効にして起動します。

    # systemctl --now enable systemd-resolved
  2. /etc/NetworkManager/NetworkManager.conf ファイルを編集し、[main] セクションに以下のエントリーを設定します。

    dns=systemd-resolved
  3. NetworkManager サービスを再読み込みします。

    # systemctl reload NetworkManager

検証

  1. systemd-resolved が使用する DNS サーバーと、サービスが別の DNS サーバーを使用するドメインを表示します。

    # resolvectl
    ...
    Link 2 (enp1s0)
        Current Scopes: DNS
             Protocols: +DefaultRoute ...
    Current DNS Server: 192.0.2.1
           DNS Servers: 192.0.2.1
    
    Link 3 (tun0)
        Current Scopes: DNS
             Protocols: -DefaultRoute ...
    Current DNS Server: 198.51.100.7
           DNS Servers: 198.51.100.7 203.0.113.19
            DNS Domain: example.com

    この出力では、systemd-resolvedexample.com ドメインに異なる DNS サーバーを使用していることを確認します。

  2. tcpdump パケットスニファを使用して、DNS 要求の正しいルートを確認します。

    1. tcpdump パッケージをインストールします。

      # yum install tcpdump
    2. 1 つのターミナルで tcpdump を起動し、すべてのインターフェイスで DNS トラフィックを取得します。

      # tcpdump -i any port 53
    3. 別のターミナルで、例外が存在するドメインと別のドメインのホスト名を解決します。次に例を示します。

      # host -t A www.example.com
      # host -t A www.redhat.com
    4. tcpdump 出力で、Red Hat Enterprise Linux が example.com ドメインの DNS クエリーのみを指定された DNS サーバーに、対応するインターフェイスを通じて送信していることを確認します。

      ...
      13:52:42.234533 IP server.43534 > 198.51.100.7.domain: 50121+ [1au] A? www.example.com. (33)
      ...
      13:52:57.753235 IP server.40864 > 192.0.2.1.domain: 6906+ A? www.redhat.com. (33)
      ...

      Red Hat Enterprise Linux は、www.example.com の DNS クエリーを 198.51.100.7 の DNS サーバーに送信し、www.redhat.com のクエリーを 192.0.2.1 に送信します。

トラブルシューティング

  1. /etc/resolv.conf ファイルの nameserver エントリーが 127.0.0.53 を指していることを確認します。

    # cat /etc/resolv.conf
    nameserver 127.0.0.53

    エントリーがない場合は、/etc/NetworkManager/NetworkManager.conf ファイルの dns パラメーターを確認します。

  2. systemd-resolved サービスがローカルの IP アドレス 127.0.0.5353 ポートでリッスンしていることを確認します。

    # ss -tulpn | grep "127.0.0.53"
    udp  UNCONN 0  0      127.0.0.53%lo:53   0.0.0.0:*    users:(("systemd-resolve",pid=1050,fd=12))
    tcp  LISTEN 0  4096   127.0.0.53%lo:53   0.0.0.0:*    users:(("systemd-resolve",pid=1050,fd=13))

    サービスが 127.0.0.53:53 をリッスンしない場合は、systemd-resolved サービスが実行されているかどうかを確認します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.