Solaris のシステム管理 (IP サービス)

ProcedureSCTP プロトコルを使用するサービスを追加する方法

SCTP トランスポートプロトコルは、TCP に類似した方法でアプリケーション層プロトコルにサービスを提供します。ただし、SCTP では 2 つのシステム間での通信が可能です。これらのシステムは、片方または両方がマルチホームであってもかまいません。SCTP 接続は「アソシエーション」と呼ばれます。アソシエーションでは、アプリケーションがデータを分割し、1 つまたは複数のメッセージストリームとして伝送します (マルチストリーム化)。SCTP 接続は、複数の IP アドレスを持つエンドポイントに到達できます。これは、テレフォニーアプリケーションにとって特に重要です。IP Filter や IPsec を使用する場合、SCTP のマルチホーム機能はセキュリティーの点で考慮を要します。考慮点については、sctp(7P) のマニュアルページを参照してください。

デフォルトで SCTP は Oracle Solaris に組み込まれています。したがって、構成を別に行う必要はありません。ただし、SCTP を使用するためには、一定のアプリケーション層サービスを明示的に構成しなければならない場合があります。このようなアプリケーションの例としては、echodiscard があります。次の手順は、ワンツーワンスタイルの SCTP ソケットを使用する echo サービスの追加方法を示しています。


注 –

さらに、次の手順を使えば、TCP や UDP のトランスポート層プロトコル用のサービスを追加できます。


次の作業では、inetd デーモンによって管理される SCTP inet サービスを SMF リポジトリに追加します。さらに、作業の後半では、サービス管理機能 (SMF) コマンドを使ってこのサービスを追加します。

始める前に

次の手順を実行する前に、サービスのマニフェストファイルを作成してください。この手順では、例として、echo サービス用のマニフェスト echo.sctp.xml を使用します。

  1. システムファイルに対する書き込みアクセス権を持つユーザーアカウントでローカルシステムにログインします。

  2. /etc/services ファイルを編集し、新しいサービスの定義を追加します。

    サービスを定義する構文は次のとおりです。


    service-name |port/protocol | aliases
    
  3. 新しいサービスを追加します。

    サービスマニフェストが格納されているディレクトリに移り、次のように入力します。


    # cd dir-name
    # svccfg import service-manifest-name
    

    svccfg の詳しい構文については、svccfg(1M) のマニュアルページを参照してください。

    現在 service.dir ディレクトリにあるマニフェスト echo.sctp.xml を使用して、SCTP の新しい echo サービスを追加するとします。その場合、次のように入力します。


    # cd service.dir
    # svccfg import echo.sctp.xml
    
  4. サービスマニフェストが追加されているか確認します。


    # svcs FMRI
    

    FMRI 引数には、サービスマニフェストの Fault Managed Resource Identifier (FMRI) を使用します。たとえば、SCTP の echo サービスの場合は、次のコマンドを使用します。


    # svcs svc:/network/echo:sctp_stream
    

    次のような出力が表示されます。


    	STATE          STIME    FMRI
    disabled       16:17:00 svc:/network/echo:sctp_stream

    svcs コマンドの詳細は、svcs(1) のマニュアルページを参照してください。

    出力は、新しいサービスマニフェストが使用不可になっていることを示しています。

  5. サービスの属性をリストして、変更を加える必要があるかどうかを決めます。


    # inetadm -l FMRI
    

    inetadm コマンドの詳細は、inetadm(1m) のマニュアルページを参照してください。

    たとえば、SCTP echo サービスの場合は、次のように入力します。


    # inetadm -l svc:/network/echo:sctp_stream
    SCOPE    NAME=VALUE
    	         name="echo"
    	         endpoint_type="stream"
    	         proto="sctp"
    	         isrpc=FALSE
    	         wait=FALSE
    	         exec="/usr/lib/inet/in.echod -s"
             .
             .
             default  tcp_trace=FALSE
           	default  tcp_wrappers=FALSE
  6. 新しいサービスを使用可能にします。


    # inetadm -e FMRI
    
  7. サービスが使用可能になっていることを確認します。

    たとえば、新しい echo サービスの場合、次のように入力します。


    # inetadm | grep sctp_stream
    .
    .
    	enabled   online         svc:/network/echo:sctp_stream

例 5–9 SCTP トランスポートプロトコルを使用するサービスの追加

次の例では、使用するコマンドと、echo サービスで SCTP トランスポート層プロトコルを使用するために必要なファイルエントリを示します。


$ cat /etc/services
.
.
echo            7/tcp
echo            7/udp
echo            7/sctp

# cd service.dir

	# svccfg import echo.sctp.xml

# svcs network/echo*
	STATE          STIME    FMRI
	disabled       15:46:44 svc:/network/echo:dgram
	disabled       15:46:44 svc:/network/echo:stream
	disabled       16:17:00 svc:/network/echo:sctp_stream

# inetadm -l svc:/network/echo:sctp_stream
	SCOPE    NAME=VALUE
	         name="echo"
	         endpoint_type="stream"
	         proto="sctp"
	         isrpc=FALSE
	         wait=FALSE
	         exec="/usr/lib/inet/in.echod -s"
	         user="root"
	default  bind_addr=""
	default  bind_fail_max=-1
	default  bind_fail_interval=-1
	default  max_con_rate=-1
	default  max_copies=-1
	default  con_rate_offline=-1
	default  failrate_cnt=40
	default  failrate_interval=60
	default  inherit_env=TRUE
	default  tcp_trace=FALSE
	default  tcp_wrappers=FALSE

# inetadm -e svc:/network/echo:sctp_stream

# inetadm | grep echo
	disabled  disabled       svc:/network/echo:stream
	disabled  disabled       svc:/network/echo:dgram
	enabled   online         svc:/network/echo:sctp_stream