SLIPLOGIN(8)

名称
sliplogin - シリアル回線とネットワークインタフェースの対応づけ(アタッチ)を行う

書式
sliplogin [loginname [device]]

解説
sliplogin ユーティリティは、標準入力 (もしくは、 device) の tty 回線を用いて他のホストと Serial Line IP (SLIP) による接続を確立するためのコマンドです。 そのために、まず /etc/sliphome/slip.hosts ファイルを検索し、引数 loginname と一致するエントリを引き出します。 (ログイン名が省略された場合、コマンドを起動したユーザのログイン名が用い られます) ログイン名と一致するエントリが見つかった場合、回線は SLIP に適した設定 (8ビット透過な入出力) にされ、オプションの回線パラメータを使って SLIP 回線に変換されます。

回線パラメータのオプションは次のとおりです: ‘normal’, ‘compress’, ‘noicmp’, ‘autocomp’ これらはそれぞれ、 ‘通常の設定 (ヘッダ圧縮をしない)’ 、 ‘VJヘッダ圧縮を行う’ 、 ‘ICMP パケットを無視する’ 、 ‘VJヘッダ圧縮を自動設定する (相手がサポートしているときのみヘッダ圧縮する)’ です。

その後、 IP アドレスやネットマスクなどの設定を行なう、 SLIP インタフェース初期化のためのシェルスクリプトが実行され ます。

通常、初期化のためのシェルスクリプトファイルは /etc/sliphome/slip.login ですが、特定のホスト向けの設定のために、 /etc/sliphome/slip.login.loginname というシェルスクリプトファイルがあった場合は、そちらが実行されます。 スクリプトは、以下のパラメータとともに起動されます。

slipunit
    回線に割り当てられる SLIP インタフェースです。 例えば、 0 の場合、割り当てられる SLIP インタフェースは sl0 です。

speed
    回線速度です。

args
    loginname を指定して起動する場合、 /etc/sliphome/slip.hosts の対応エントリに記述されている引数です。

スーパユーザのみが、ネットワークインタフェースのアタッチを行うことが 出来ます。 ネットワークインタフェースは、リモートホスト側で回線切断するか、 ローカルホスト側の sliplogin プロセスが終了した場合には自動的に対応づけが解消 (デタッチ) されます。 カーネル SLIP モジュールが設定されていた場合、このインタフェースを経由 して設定されている全ての経路は、同時に消滅します。 他の処理も行いたいサイトでは、回線の切断時に /etc/sliphome/slip.logout ファイルもしくは /etc/sliphome/slip.logout.loginname ファイルが有ればその内容が実行されますので、これを使って下さい。 起動時には、ログインスクリプトと同じ引数が与えられます。

  /etc/sliphome/slip.hosts の書式
コメント (`#' で開始する行) および空白行 (もしくは空白で開始する行) は 無視されます。 他の行は、 loginname で始まる必要があります。 しかし、他の引数については、そのログイン名に対応して実行される slip.login ファイルに応じたものであれば、何でもかまいません。 引数は、スペースやタブで区切り、 sh(1) が解釈出来るクォートなどを用いてまとめます(ただし loginname はクォートできません)。 通常、各行は以下の形式で記述されます:

    loginname local-address remote-address netmask opt-args

local-address と remote-address については、互いに接続される SLIP インタフェースに割り当てられる IP アドレスを (ホスト名か数字で) 設定します。そして、 netmask については、適切な IP ネットマスクを設定します。 これらの引数は、直接 ifconfig(8) に渡されます。 opt-args は、オプション引数であり、回線の設定に用いられます。

FreeBSD での追加
追加の SLIP 設定用ファイル /etc/sliphome/slip.slparms があるかもしれません。 特定のホストに異なる設定が必要である場合、 ファイル /etc/sliphome/slip.slparms.loginname が存在すれば、代わりに使われます。

  /etc/sliphome/slip.slparms* の書式
コメント (`#' で開始する行) および空白行 (もしくは空白で開始する行) は 無視されます。 このファイルには空白で区切られた 1 から 3 個の数字を書きます。 数字は順に、 keepalive, outfill, slunit を意味します。

keepalive
    SLIP "keep alive" タイムアウト時間を秒単位で設定します。 FRAME_END がこの時間内に受信できない時、 sliplogin は回線を閉じて終了します。 省略時はタイムアウトは設定されません ( 0 です)。

outfill
    SLIP "out fill" タイムアウト時間を秒単位で設定します。 これにより、相手側の "keep alive" タイムアウトに必要な FRAME_END をこの時間内に送信します。 省略時はタイムアウトは設定されません ( 0 です)。

slunit
    SLIP ユニット番号を直接指定します。 2 つのインタフェースが同じユニット番号にならないかチェックをしないので、 注意が必要です。 省略時は動的にユニット番号を割り当てます。

あとの 2 つのパラメータが省略されたときは、これに対応する SLIP の設定には影響が ありません。最初の 2 つのパラメータが 0 であるときにも、これに対応する設定に 影響しません。

使用例
通常、 sliplogin を使う場合、 リモートの SLIP サイトごとに sliplogin をシェルフィールドに持つ /etc/passwd のエントリを作ります。 例えば

    Sfoo:ikhuy6:2010:1:slip line to foo:/tmp:/usr/sbin/sliplogin

(ここでは、リモートホスト hostname のアカウント名を Shostname としています) 次に、 slip.hosts に、以下のようなエントリを追加します:

    Sfoo	`hostname`	foo	netmask

ここで、 `hostname` は、 sh(1) によって評価されローカルホスト名となり、 netmask はローカルホストの IP ネットマスクです。

注意事項があります。 sliplogin は、root に setuid しなければなりません。 セキュリティホールではありませんが、心がけの悪い奴が sliplogin をつかって端末の回線を使えなくしたり、リモートの SLIP サイトのユーザの アクセスを不可能にしたりすることができます。 これを防ぐために、 sliplogin をユーザ root グループ network モード 4550 でインストールし、グループ network のメンバのみが sliplogin を実行可能とします。 システム管理者は、 正当なユーザが正しいグループのメンバであることを確認すべきです。

診断
sliplogin ユーティリティは、様々な情報を daemon の facility コードでシステムログデーモン syslogd(8) を通じて、 syslog に書き出します。 以下に問題の大きさ別にメッセージを列挙します。

エラー
ioctl (TCGETS): 理由
    TCGETS ioctl() を用いた回線のパラメータ取得が失敗しました。

ioctl (TCSETS): 理由
    TCSETS ioctl() を用いた回線のパラメータ設定が失敗しました。

/etc/sliphome/slip.hosts: 理由
    /etc/sliphome/slip.hosts ファイルがオープン出来ません。

access denied for user
    user エントリが /etc/sliphome/slip.hosts にありません。

報告
attaching slip unit unit for loginname
    SLIP ユニット unit は、アタッチに成功しました。

関連ファイル

/etc/sliphome/slip.hosts
    ホストのログイン名とパラメータのリスト。

/etc/sliphome/slip.login
    接続がなされたときに実行されるスクリプト。

/etc/sliphome/slip.login.loginname
    loginname によって接続がなされたときに実行されるスクリプト。

/etc/sliphome/slip.logout
    接続が失われたときに実行されるスクリプト。

/etc/sliphome/slip.logout.loginname
    loginname によって接続が失われたときに実行されるスクリプト。

/etc/sliphome/slip.slparms
    追加のパラメータファイル。

/etc/sliphome/slip.slparms.loginname
    loginname 用の追加のパラメータファイル。

/var/run/ttyXn.if
    ttyXn に対して sliplogin 処理がなされた時に使用されるネットワークインタフェース名 を格納します。

/var/run/slX.pid
    インタフェース slX を使用する sliplogin プロセスの PID を格納します。

関連項目
slattach(8), syslogd(8)

/usr/share/examples/sliplogin

歴史
sliplogin ユーティリティは、 4.3BSD Reno で登場しました。