Difyサーバーを構築する際、IPv4アドレスだけでなく、現代のインターネット標準であるIPv6に対応させることは、将来的な接続性を確保し、パフォーマンスを向上させるために重要です。
この記事では、ConoHa VPSのUbuntuサーバー(Netplan環境)でIPv6を有効化し、これまでの記事で設定したfirewalldの「国内IPのみ許可」設定とも共存させる手順を解説します。
ステップ1: ConoHaコントロールパネルでIPv6情報を確認する
まず、サーバーに割り当てられているIPv6アドレスと、ネットワークの「ゲートウェイ」アドレスを確認します。
- ConoHaコントロールパネルにログインし、対象のサーバーを選択します。
- 「ネットワーク情報」タブをクリックします。
eth0インターフェースに表示されている「IPv6アドレス」と「ゲートウェイ」のアドレスをメモ帳などに控えます。
ステップ2: ネットワークインターフェイスの設定 (Netplan)
参考記事ではRHEL 9系の /etc/sysconfig/network-scripts/ifcfg-eth0 を編集していましたが、Ubuntu 18.04以降ではNetplan (/etc/netplan/) を使用します。
- Netplanの設定ファイル(通常は
50-cloud-init.yamlや01-netcfg.yamlなど)を開きます。# ファイル名は環境によって異なります sudo vi /etc/netplan/50-cloud-init.yaml eth0の設定に、ステップ1で確認したIPv6アドレスとゲートウェイを追記します。IPV6_AUTOCONF="no"(自動設定オフ)は、Netplanではaccept-ra: falseやdhcp6: 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- 設定を適用します。
sudo netplan apply
ステップ3: DNSレコードの設定 (ConoHaパネル)
サーバー側がIPv6に対応したら、ドメイン(DNS)側にもIPv6アドレスを登録し、世界中からIPv6でアクセスできるようにします。
ConoHaの「DNS」管理画面で、Difyを運用するドメインの設定を開きます。
- AAAA レコード(IPv6のアドレス)を追加 IPv4の
Aレコードと同じように、IPv6用のAAAAレコードを追加します。- タイプ:
AAAA - 名称:
@(ドメインそのもの) - 値: [ステップ1で控えたIPv6アドレス]
- タイプ:
AAAA - 名称:
*(ワイルドカード・サブドメイン) または Difyで使うサブドメイン(例:dify) - 値: [ステップ1で控えたIPv6アドレス]
- タイプ:
- PTR レコード(逆引き)の設定 「サーバー」管理画面に戻り、ステップ1でIPv6アドレスを確認した「ネットワーク情報」から、IPv6の「PTRレコード」を編集します。 サーバーのFQDN(例:
dify.example.com)を入力して保存します。

- 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 も追加で許可する設定を行います。
- 日本国内のIPv6アドレスリストをダウンロード
# IPv6版の国内IPリストをダウンロード wget -O domestic_v6.txt(https://ipv6.fetus.jp/jp.txt)https://ipv6.fetus.jp/jp.txt - 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 - IPv6リストを
ipsetに登録# IPv6リストを domestic_v6 の ipset に流し込む sudo firewall-cmd --permanent --ipset=domestic_v6 --add-entries-from-file=domestic_v6.txt - IPv6の
ipsetをdomesticゾーンに適用 既存のdomesticゾーンに、IPv6の通信元 (source) も追加します。# domestic ゾーンに IPv6 の通信元を追加 sudo firewall-cmd --permanent --zone=domestic --add-source=ipset:domestic_v6 - 【重要】ICMPv6 (Neighbor Discovery) を許可する IPv6は、ICMPv6というプロトコルを使ってネットワーク機器同士が通信相手を見つけます (Neighbor Discovery: ND)。参考記事で
nftablesにnd-neighbor-solicitなどを許可しているのはこのためです。これがブロックされるとIPv6通信が一切できなくなります。firewalldでは、これがデフォルトで許可されていることが多いですが、念のため、国内IP以外が属するpublicゾーン(デフォルトゾーン)にipv6-icmpサービスを許可しておくと確実です。sudo firewall-cmd --permanent --zone=public --add-service=ipv6-icmp - 設定の反映と後片付け
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の両方に対応した、より堅牢で近代的なインフラとなりました。


コメント