複数の IP アドレスとサブネットをバインドに割り当てる方法は?

複数の IP アドレスとサブネットをバインドに割り当てる方法は?

自宅の Web サーバー、/29 IPv4 アドレス (ゲートウェイ アドレス要件のあるルーティングされたサブネットがあるため、現在ブロックから割り当て可能なアドレスは 3 つ)、および DNS レコードに既に割り当てられているアドレスが 2 つあります。さらに、DNS レコードに既に割り当てられているアドレスが 2 つある /64 IPv6 サブネットもあります。

私は、sysconfig > network-scripts ファイル (DHCP ではなく Network Manager 経由で管理) を変更して、すべての IPv4 アドレスをシステムで使用できるようにし、次に示すように IPv6 サブネットをセカンダリとして割り当てました (これは正しいと思いますが、正しくない場合はお知らせください)。

IPV6ADDR=2a10:b900:10e4:1::2/64
IPV6ADDR_SECONDARIES=2a10:b900:10e4:1::/64
IPV6_DEFAULTGW=2a10:b900:10e4:1::

問題は? - 使用可能な追加の IP アドレスと IPv6 サブネット全体の両方を使用するように、Bind ゾーン ファイルを修正する必要があります。 IPv4 を追加の A レコードとして追加できると思いますが (過去には接続の問題が発生したことがありますが)、IPv6 サブネットを追加する方法を教えていただけますか?

答え1

コメントを要約すると、質問は完全に誤った仮定に基づいているため、答えはありません。

[…] IPv6サブネットがセカンダリとして割り当てられている場合、図に示すように

IPV6ADDR=2a10:b900:10e4:1::2/64
IPV6ADDR_SECONDARIES=2a10:b900:10e4:1::/64

これは、実際にはサブネット全体を割り当てるものではありません。単一のアドレス (すべてゼロの IID アドレス、2a10:b900:10e4:1:0:0:0:0) を割り当て、「サブネット マスク」を /64 に設定します。動作は他のアドレスの割り当てと同じです。…:0:0:0:0 には特別な処理はありません。どちらの場合も、/64 は単にどのアドレスが「オンリンク」であるか (物理インターフェイスを介して MAC レベルで到達可能) を示します。

https:// 接続は共有できません (つまり、http:// であれば同じ IP アドレスで 10 個の接続が可能ですが、https:// であれば同じ接続に 10 個の IP アドレスが必要になります)。

いいえ、そうではありません。なぜなら、基盤となるトランスポートプロトコルであるTCPには、ローカルポートとリモートポートの組み合わせという多重化メカニズムがすでに備わっているからです。

  1. 1人のクライアント、
  2. 1つのポートで待機する1つのサーバー、

理論上は、local_port を変更することで最大 65535 の一意の(local_addr, remote_addr, local_port, remote_port)組み合わせを持つことができます。実際には、OS が設定した「一時ポート」の範囲に応じて、その数は約 32k または約 48k の範囲になります。

このメカニズムは上位層プロトコルとは独立しており、サーバーはポート 80 で HTTP 接続を受け入れることができるのと同じ数のポート 443 への HTTPS 接続を受け入れることができます。どちらの場合も、クライアントとサーバーのネットワーク スタックは、すべての接続のすべてのパケットを一意に識別します。


もしあなたの話が「接続」ではなくHTTP(S)の「仮想ホスト」、つまり共有についてのものであったなら、それはまだ意味をなすでしょう。ドメイン名同じ IP アドレス上で。10 ~ 20 年前は、HTTPS サーバー (より正確には SSL/TLS サーバー) は単一の IP アドレス:ポートで 1 つの証明書しか提供できず、したがって単一の証明書が発行されたドメインの数だけしか提供できないというのが真実でした。

ただし、現在ではすべての最新クライアントが TLS 1.1+「サーバー名表示」をサポートしており、これにより、TLS ハンドシェイク中に特定のドメイン名を要求できるようになり、サーバーはアプリケーション層ハンドシェイクを開始する前に正しい TLS 証明書を選択できるようになります。

結論として、サーバーにサブネットを割り当てることは最初から不要です。

最後に、技術的な主な質問です。

そこで私は、必要に応じてBINDがアドレスプールにアクセスできるようなソリューションを作ろうとしている。

DNSにはそのような機能はありません。AAAAレコードのみがIPv6アドレスを指し示し、各レコードは1つのアドレスのみを指すことができます。(他の種類もありますが、用途が異なり、ほとんどのソフトウェアは単に見ていません彼らに向かって。

$GENERATE多くのレコードに拡張できるマクロであるBIND の機能を使用するか、要求に応じてランダムな AAAA レコードを含む応答を生成するカスタム DNS サーバーを作成する必要があります。

関連情報