Oracle Solaris では、SCTP、TCP、UDP などのいくつかのトランスポート層プロトコルは、アプリケーション層プロトコルにサービスを提供します。デフォルトでは通常、これらのプロトコルには追加の構成は必要ありません。ただし、特定のネットワークプロトコルを使用するには、一定のアプリケーション層サービスを明示的に構成しなければならない場合があります。例として、echo や discard などのアプリケーションがあります。
次の手順では、トランスポート層プロトコル用の 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 . . .
pfedit(1M)のマニュアルページを参照してください。
service-name port/protocol aliases
$ 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
たとえば、echo サービスマニフェストの場所は /lib/svc/manifest/network/echo.xml です。
# cd /lib/svc/manifest/network
この特定の例では、dgram または stream 要素のどちらかを使用できます。
この例では、proto プロパティーの値が sctp に変更されます。
たとえば、次のようにして新しい 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>
$ svcadm restart manifest-import
$ svcs FMRI
FMRI 引数については、サービスマニフェストの障害管理リソース識別子 (FMRI)、たとえば echo サービスの FMRI を使用します。
$ svcs echo
または、inetadm コマンドを使用して、同様の情報を表示できます。
$ inetadm -l echo
$ 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
# inetadm -e FMRI
たとえば、次のようにして echo サービスを有効にします。
$ inetadm -e svc:/network/echo:sctp_stream $ svcs echo
または、次のようにして inetadm コマンドを使用します。
$ inetadm | grep echo