Dify導入のためのLinux設定:ConoHa VPS (Ubuntu) でIPv6を有効化する手順

Dify環境構築

Difyサーバーを構築する際、IPv4アドレスだけでなく、現代のインターネット標準であるIPv6に対応させることは、将来的な接続性を確保し、パフォーマンスを向上させるために重要です。

この記事では、ConoHa VPSのUbuntuサーバー(Netplan環境)でIPv6を有効化し、これまでの記事で設定したfirewalldの「国内IPのみ許可」設定とも共存させる手順を解説します。

ステップ1: ConoHaコントロールパネルでIPv6情報を確認する

まず、サーバーに割り当てられているIPv6アドレスと、ネットワークの「ゲートウェイ」アドレスを確認します。

  1. ConoHaコントロールパネルにログインし、対象のサーバーを選択します。
  2. 「ネットワーク情報」タブをクリックします。
  3. eth0 インターフェースに表示されている「IPv6アドレス」と「ゲートウェイ」のアドレスをメモ帳などに控えます。

ステップ2: ネットワークインターフェイスの設定 (Netplan)

参考記事ではRHEL 9系の /etc/sysconfig/network-scripts/ifcfg-eth0 を編集していましたが、Ubuntu 18.04以降ではNetplan (/etc/netplan/) を使用します。

  1. Netplanの設定ファイル(通常は 50-cloud-init.yaml01-netcfg.yaml など)を開きます。
    # ファイル名は環境によって異なります
    sudo vi /etc/netplan/50-cloud-init.yaml
    
  2. eth0 の設定に、ステップ1で確認したIPv6アドレスとゲートウェイを追記します。IPV6_AUTOCONF="no"(自動設定オフ)は、Netplanでは accept-ra: falsedhcp6: false に該当します。【編集前の例】
    network:
        ethernets:
            eth0:
                dhcp4: true
                match:
                    macaddress: 00:11:22:33:44:55
                set-name: eth0
        version: 2
    

    【IPv6追記後の例】

    network:
        ethernets:
            eth0:
                dhcp4: true
                match:
                    macaddress: 00:11:22:33:44:55
                set-name: eth0
                # --- ここから追記 ---
                # IPv6の自動設定(RA)を無効化
                accept-ra: false
                # IPv6アドレスを静的に設定
                addresses:
                  - [ステップ1で控えたIPv6アドレス]/64
                # IPv6ゲートウェイを設定
                gateway6: [ステップ1で控えたゲートウェイのアドレス]
                # --- ここまで追記 ---
        version: 2
    
  3. 設定を適用します。
    sudo netplan apply
    

ステップ3: DNSレコードの設定 (ConoHaパネル)

サーバー側がIPv6に対応したら、ドメイン(DNS)側にもIPv6アドレスを登録し、世界中からIPv6でアクセスできるようにします。

ConoHaの「DNS」管理画面で、Difyを運用するドメインの設定を開きます。

  1. AAAA レコード(IPv6のアドレス)を追加 IPv4の A レコードと同じように、IPv6用の AAAA レコードを追加します。
    • タイプ: AAAA
    • 名称: @ (ドメインそのもの)
    • 値: [ステップ1で控えたIPv6アドレス]
    • タイプ: AAAA
    • 名称: * (ワイルドカード・サブドメイン) または Difyで使うサブドメイン(例: dify
    • 値: [ステップ1で控えたIPv6アドレス]
  2. PTR レコード(逆引き)の設定 「サーバー」管理画面に戻り、ステップ1でIPv6アドレスを確認した「ネットワーク情報」から、IPv6の「PTRレコード」を編集します。 サーバーのFQDN(例: dify.example.com)を入力して保存します。
  3. SPF レコード(メール送信)の修正 もしメールサーバーも運用する場合、既存のSPFレコード(TXTレコード)にIPv6アドレスを追加します。
    • 修正前: v=spf1 +ip4:(IPv4アドレス) -all
    • 修正後: v=spf1 +ip4:(IPv4アドレス) +ip6:(IPv6アドレス) -all

ステップ4: ファイアウォール (firewalld) のIPv6対応

ここが最重要ポイントです。 前回の記事「DifyのためのLinuxセキュリティ強化:firewalldで国内IPのみ許可設定」では、IPv4の国内IPのみを許可する domestic ゾーンを作成しました。

このままでは、IPv6でのアクセスが全てブロックされてしまいます。

そこで、domestic ゾーンに IPv6の国内IP も追加で許可する設定を行います。

  1. 日本国内のIPv6アドレスリストをダウンロード
    # IPv6版の国内IPリストをダウンロード
    wget -O domestic_v6.txt 
    
    https://ipv6.fetus.jp/jp.txt
    (https://ipv6.fetus.jp/jp.txt)
  2. IPv6用の新しい ipset を作成 domestic ゾーンはIPv4とIPv6の両方のリストを保持できるため、IPv6用の ipset を新しく作成します。
    # `family=inet6` を指定してIPv6用のipsetを作成
    sudo firewall-cmd --permanent --new-ipset=domestic_v6 --type=hash:net --option=family=inet6
    
  3. IPv6リストを ipset に登録
    # IPv6リストを domestic_v6 の ipset に流し込む
    sudo firewall-cmd --permanent --ipset=domestic_v6 --add-entries-from-file=domestic_v6.txt
    
  4. IPv6の ipsetdomestic ゾーンに適用 既存の domestic ゾーンに、IPv6の通信元 (source) も追加します。
    # domestic ゾーンに IPv6 の通信元を追加
    sudo firewall-cmd --permanent --zone=domestic --add-source=ipset:domestic_v6
    
  5. 【重要】ICMPv6 (Neighbor Discovery) を許可する IPv6は、ICMPv6というプロトコルを使ってネットワーク機器同士が通信相手を見つけます (Neighbor Discovery: ND)。参考記事で nftablesnd-neighbor-solicit などを許可しているのはこのためです。これがブロックされるとIPv6通信が一切できなくなります。firewalld では、これがデフォルトで許可されていることが多いですが、念のため、国内IP以外が属する public ゾーン(デフォルトゾーン)に ipv6-icmp サービスを許可しておくと確実です。
    sudo firewall-cmd --permanent --zone=public --add-service=ipv6-icmp
    
  6. 設定の反映と後片付け
    sudo firewall-cmd --reload
    rm domestic_v6.txt
    

ステップ5: サービス (Nginx/Dify) のIPv6対応

サーバーのOSとファイアウォールがIPv6に対応しても、Difyを動かすWebサーバー(Nginxなど)がIPv6をリッスン(待ち受け)していなければ意味がありません。

参考記事ではPostfix(メール)やOpenLiteSpeedを設定していますが、Dify (Docker) の前段にNginxを置く場合、以下のように設定します。

/etc/nginx/sites-available/dify.example.com などの設定ファイルを開き、listen ディレクティブをIPv4とIPv6の両方で待ち受けるように変更します。

server {
    # --- IPv4 ---
    listen 80;
    listen 443 ssl http2;
    
    # --- IPv6 ---
    listen [::]:80;
    listen [::]:443 ssl http2;

    server_name dify.example.com;
    
    # SSL設定など...
    # ...
    
    location / {
        proxy_pass 
404 Not Found
(http://127.0.0.1):[DifyのDockerポート]; # ... } }

設定後、Nginxを再起動します。

sudo systemctl restart nginx

ステップ6: 動作確認

設定が完了したら、外部からIPv6で接続できるか確認します。 ping6 コマンド(ping -6 の場合もあります)や、オンラインのIPv6テストサイトを利用して、自分のドメインにIPv6でアクセスできるかチェックしましょう。

ping6 dify.example.com

これで、DifyサーバーがIPv4とIPv6の両方に対応した、より堅牢で近代的なインフラとなりました。

コメント

error: Content is protected !!