IPv6 または IPv4 ソケットで受信接続を受信する

UNIX プラットフォームでは、IPv4 と IPv6 の両方の受信接続を同一のソケットで受信します。Microsoft Windows は、IPv4 と IPv6 の両方の受信接続を同一のソケットで受信できません。IPv6 が無効になっている場合、Microsoft Windows は IPv4 接続のみを受信します。IPv6 が有効になっていて、ポートがアドレスにバインドされていない場合は、IPv6 接続のみが受信されます。IPv4 接続と IPv6 接続の両方を受信するには、2 つのポート (IPv4 アドレスにバインドされているポートと IPv6 アドレスにバインドされているポート) を定義します。これは NRPC の場合、簡単に実行できます。しかし、これまでにインターネットサーバーが提供してきたのは、1 つの HCL Notes® ポートに対するサポートのみでした。

HCL Domino® では、インターネットサーバー用の 2 つの Notes® ポートをサポートします。そのユーザーインターフェースでは、NOTES.INI 変数 SMTPNotesPort に 2 つの Notes® ポート名が指定されます。例えば、以下のようにします。

SMTPNotesPort=TCPIP,TCPIP6 

どちらかのポートがシャットダウンした (ポート tcpip を停止した) 場合、インターネットサーバーは、一時的に両方のポートをシャットダウンしてから、残りの 1 つのポートで待機を再開します。また、任意のアドレスのアウトバウンド接続はどの TCP ポート上でも成功します。Domino® は、アウトバウンド接続に対して、適正なソケットを作成して、試行されたターゲットアドレスを処理します。

IP アドレスにバインドされている TCP ポートを使用してアウトバウンド接続する

アウトバウンド接続しているクライアントまたはサーバーに、NOTES.INI 設定の SMTPNotesPorts= <TCPIPAddress> を使用して特定の IP アドレスにバインドされている TCP ポートがある場合、そのバインドされているポートは、バインドされている IP アドレスのタイプのアウトバウンド接続しか行えません。例えば、サーバーで Notes® ポート TCPIP が IPV4 アドレスに、Notes® ポート TCPIP6 が IPV6 アドレスにバインドされている場合、ポート TCPIP は IPV4 アドレスにしかアウトバウンド接続ができず、ポート TCPIP6 は IPV6 アドレスにしかアウトバウンドが接続できません。

IP アドレスにバインドされている IPV4 と IPV6 の Notes® ポートを含む設定では、接続文書にリストされているポートに、接続が可能なすべての TCP ポートが含まれていなければなりません。たとえば、serverA から serverB へのサーバー接続文書を作成するときに、serverB の DNS 名が IPV4 アドレスと IPV6 アドレスの両方へ解決することが可能であり、IPV4 または IPV6 で接続を機能させたい場合は、その接続文書に両方のポートを含める必要があります。

IPv4 ソケットまたは IPv6 ソケットの作成と使用を決定する

次のルールを使用して、IPv4 ソケットを使用するか、IPv6 ソケットを使用するかを決定します。

  • 接続時、または待機時に、IPv6 が有効になっていない場合は、常に IPv4 ソケットを作成します。
  • バインドされたアドレスを使用して接続または待機している場合は、そのアドレスタイプに一致するソケットを使用します。
  • 待機時に、アドレスがバインドされていないで、IPv6 が有効になっている場合は、IPv6 ソケットを使用します。
  • 待機時に、アドレスがバインドされていないで、IPv6 が無効になっている場合は、IPv4 ソケットを使用します。
注: アドレス 0 は、リスナーが任意のアドレスを自発的に待機することを示しています。上記のルールを適用するときは、次の点に注意してください。
  • 任意の IPv6 アドレスを待機する IPv6 ソケットを作成する場合は、アドレスにバインドしないでください。
  • 任意の IPv4 アドレスを待機する IPv4 ソケットを作成する場合は、以下のアドレスにバインドします。 ::ffff:0.0.0.0

UNIX サーバーでは任意のアドレスにバインドされている IPv6 ソケットがすべての受信接続を受け付けますが、Windows では同じソケットが受信 IPv6 接続のみを待機します。

Linux では、1 つのポートが「任意の」アドレスにバインドされ、IPv6 が有効になっている場合には、2 番目のポートを特定の IPv4 アドレスまたは IPv6 アドレスにバインドできません。これが試行されると、「アドレスが既に使用されている」というエラーが返されます。