Go to main content
Oracle® Solaris 11.3 での TCP/IP ネットワーク、IPMP、および IP トンネルの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

トランスポート層プロトコルで実行する inetd ベースのサービスの追加

Oracle Solaris では、SCTP、TCP、UDP などのいくつかのトランスポート層プロトコルは、アプリケーション層プロトコルにサービスを提供します。デフォルトでは通常、これらのプロトコルには追加の構成は必要ありません。ただし、特定のネットワークプロトコルを使用するには、一定のアプリケーション層サービスを明示的に構成しなければならない場合があります。例として、echodiscard などのアプリケーションがあります。

トランスポート層プロトコルで実行する inetd ベースのサービスを追加する方法

次の手順では、トランスポート層プロトコル用の inet サービス (inetd デーモンによって制御されるもの) を SMF リポジトリに追加するための基本的な手順について説明します。inetd によって制御されるサービスの変更の詳細については、Oracle Solaris 11.3 でのシステムサービスの管理 の inetd で制御されるサービスの変更を参照してください。

あくまでも例として、この手順ではマニフェスト echo.xml (/lib/svc/manifest/network/echo.xml) を使用して、新しい SCTP echo サービスを追加する方法について説明します。ただし、同じ基本的な手順を使用して、TCP や UDP などのその他のトランスポート層プロトコルで実行する別のサービスを追加できます。

始める前に

この手順を実行する前に、追加するサービスが inetd デーモンによって制御されていることを確認します。たとえば、次のコマンドの出力は、この手順の例で使用される echo サービスが inetd によって制御されていることを示しています。

$ inetadm
.
.
.
disabled disabled        svc:/network/echo:dgram
disabled disabled        svc:/network/echo:stream
.
.
.
  1. システムファイルに対する書き込みアクセス権を持つユーザーアカウントでローカルシステムにログインします。
  2. pfedit コマンドを使用して /etc/services ファイルに新しいサービスインスタンスの定義を追加します。

    pfedit(1M)のマニュアルページを参照してください。

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

    service-name port/protocol aliases
  3. 指定されたサービスのマニフェストの場所を確認します。
    $ svcs -l service-name

    たとえば、次のようにして echo サービスのマニフェストの場所を特定します。

    $ svcs -l echo
    fmri         svc:/network/echo:stream
    name         echo
    enabled      false
    state        disabled
    next_state   none
    state_time   Thu Dec  3 08:11:11 2015
    restarter    svc:/network/inetd:default
    manifest     /etc/svc/profile/generic.xml
    manifest     /lib/svc/manifest/network/echo.xml
    
    fmri         svc:/network/echo:dgram
    name         echo
    enabled      false
    state        disabled
    next_state   none
    state_time   Thu Dec  3 08:11:10 2015
    restarter    svc:/network/inetd:default
    manifest     /etc/svc/profile/generic.xml
    manifest     /lib/svc/manifest/network/echo.xml
  4. テキストエディタを使用して既存のサービスマニフェストを変更し、適切なプロパティー値を持つ新しいインスタンスを追加します。

    たとえば、echo サービスマニフェストの場所は /lib/svc/manifest/network/echo.xml です。

    1. サービスマニフェストが格納されているディレクトリに移ります。
      # cd /lib/svc/manifest/network
    2. 既存のサービスインスタンス要素をコピー&ペーストします。

      この特定の例では、dgram または stream 要素のどちらかを使用できます。

    3. サービスインスタンス要素に異なる名前を入力し (この例では sctp_stream が使用される)、必要に応じてプロパティー値を変更します。

    この例では、proto プロパティーの値が sctp に変更されます。

  5. /etc/svc/profile/generic.xml プロファイルファイルを編集して新しいサービスインスタンスを追加します。

    たとえば、次のようにして新しい sctp_stream インスタンスを追加します。

    <service name='network/echo' version='1' type='service'>
    <instance name='stream' enabled='false'/>
    <instance name='dgram' enabled='false'/>
    <instance name='sctp_stream' enabled='false'/>
    </service>
  6. manifest-import サービスを再起動します。
    $ svcadm restart manifest-import
  7. 新しいサービスインスタンスが追加されていることを確認します。
    $ svcs FMRI

    FMRI 引数については、サービスマニフェストの障害管理リソース識別子 (FMRI)、たとえば echo サービスの FMRI を使用します。

    $ svcs echo

    または、inetadm コマンドを使用して、同様の情報を表示できます。

    $ inetadm -l echo
  8. 新しいインスタンスのプロパティー値 (たとえば echo:sctp_stream) が正しいことを確認します。
    $ inetadm -l 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
    default  connection_backlog=10
    default  tcp_keepalive=FALSE 
  9. (オプション) 新しいサービスインスタンスを有効にします。
    # inetadm -e FMRI

    たとえば、次のようにして echo サービスを有効にします。

    $ inetadm -e svc:/network/echo:sctp_stream
    $ svcs echo

    または、次のようにして inetadm コマンドを使用します。

    $ inetadm | grep echo