How To
Summary
TCP/IP クライアント・プログラムが動作しているシステムで Db2 サーバーを起動または再起動すると、Db2 のサービス・ポートが LISTEN できないことがあります。
これは、オペレーティングシステムが定義したエフェメラル・ポート範囲に Db2 のサービス・ポートが含まれており、任意のクライアント・プログラムがオペレーティングシステムから割り当てられたエフェメラル・ポートとして Db2 のサービス・ポートを使用することがあるためです。
このような事故を防ぐため、Db2 のサービス・ポートをエフェメラル・ポート範囲から除外する運用が推奨されています。
なお、Db2 11.5.6 以降で新しく作成された Db2 インスタンスのデフォルト・サービス・ポートは 25000 に変更されています。
Steps
- Linux
- root としてログインし、任意のエディターで /etc/sysctl.conf を編集します。
エフェメラル・ポート範囲から除外するポート番号またはポート範囲をカンマ区切りで列挙します。
例:50000 番と、60000 から 60005 を除外net.ipv4.ip_local_reserved_ports=50000,60000-60005
- sysctl コマンドで変更を反映し、結果を確認します。
# sysctl -p # cat /proc/sys/net/ipv4/ip_local_reserved_ports
- root としてログインし、任意のエディターで /etc/sysctl.conf を編集します。
- Windows
- 管理者としてログオンし、Windows のコマンドプロンプトを開きます。
- netsh コマンドでエフェメラル・ポート範囲から除外するポート番号を定義し、結果を確認します。
例:50000 番を除外C:\>netsh int ipv4 add excludedportrange protocol=tcp startport=50000 numberofports=1 C:\>netsh int ipv4 show excludedportrange protocol=tcp
- AIX
- root としてログインし、no コマンドでエフェメラル・ポート範囲を変更します。
注:AIX にエフェメラル・ポート範囲からの除外設定はありません。# /usr/sbin/no -p -o tcp_ephemeral_low=<開始ポート番号> -o tcp_ephemeral_high=<終了ポート番号>
- root としてログインし、no コマンドでエフェメラル・ポート範囲を変更します。
運用上の考慮点
現在のエフェメラル・ポート範囲は以下のコマンドで表示できます。
- Linux
cat /proc/sys/net/ipv4/ip_local_port_range
- Windows
netsh int ipv4 show excludedportrange protocol=tcp
- AIX
/usr/sbin/no -a | grep ephemeral
Document Location
Worldwide
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008Pl7AAE","label":"Connectivity-\u003ETCP\/IP"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
16 November 2023
UID
ibm17060273