1. DJB/tools/ucspi-tcp/tcprules

http://cr.yp.to/ucspi-tcp/tcprules.html

D. J. Bernstein [Translated into Japanese by MAENO Toshinori]
TCP/IP
ucspi-tcp
tcprulesプログラム

tcprules は tcpserverのための ルールをcdb形式に変換する。

1.1. 使いかた

     tcprules cdb tmp

tcpserver では TCP 接続を受けいれるかどうかを決定するためのルールを指定できる。

     18.23.0.32:deny

tcprules は標準入力からルールを読みこみ、 tcpserverが高速アクセスするのに適したバイナリ形式に変換してcdbに書きだす。

tcprules は tcpserver が実行中に使ってもかまわない。 cdb がアトミックに更新されることを保証している。

入力もしくは tmpに問題があった場合、 tcprules は警告を出力し、cdb は変更されないい。

cdb バイナリ形式はマシン間でポータブルである。

1.2. ルールの表現形式

一行に一つのルールを書く。

各ルールにはひとつのaddress、一つの ":"(コロン)、そして、一連の instructions の順に書く。

当該 addressからの接続要求を受けとると tcpserver は instructionsに書かれてことに従う。

1.3. Addresses(アドレス)

tcpserverは以下の形のアドレスを順にルール中に探す:

  1. $TCPREMOTEINFO@$TCPREMOTEIP ($TCPREMOTEINFOが設定されているとき)
  2. $TCPREMOTEINFO@=$TCPREMOTEHOST ($TCPREMOTEINFO と $TCPREMOTEHOST が設定されているとき)
  3. $TCPREMOTEIP
  4. =$TCPREMOTEHOST ($TCPREMOTEHOST が設定されているとき)
  5. 長い方から順に短い方向へドットで終わる $TCPREMOTEIPのプレフィックス(接頭子)
  6. 長い順にドットで始まる$TCPREMOTEHOSTのサフィックス(接尾子)を探す
    • ただし、=が先頭にあるもの。 ($TCPREMOTEHOST が設定されているとき)
  7. = ($TCPREMOTEHOST が設定されているとき)
  8. 空文字列

tcpserver は最初に見つかったルールを採用する。 $TCPREMOTEHOSTを使う場合には tcpserverの -p オプションを指定すべきである。

以下のようなルールを例に説明する:

     joe@127.0.0.1:first
     18.23.0.32:second
     :third
     127.:fourth

tcprulescheckを使えば、 tcpserverが cdbのルールをどう解釈するかを 確認できる。

1.4. アドレスの範囲指定

tcprulesは 1.2.3.37-53:ins を以下の複数のルールの省略形とみなす。

同様に 10.2-3.:ins は 10.2.:insと 10.3.:ins の省略形である。

1.5. 指示(Instructions)

ルールに書く指令は allow または denyで始める。

deny は tcpserver に対して、 なにも実行することなく接続を切断することを指示する。

     :deny

は より限定された別のルールにあてはまらない接続に対し、 tcpserver に切断するよう指示する。

指令にはコンマで区切って環境変数の設定(var="x") を続けることができる。

     10.0.:allow,RELAYCLIENT="@fix.me"

というルールは@fix.meという値をもった環境変数 $RELAYCLIENT を付けくわえる。

ダブルクオートの対は他の文字の対でも構わない:

環境変数は複数あってもよい:


2000-11-15 訳 前野年紀 publicfile djbdns

moin向け整形 -- ToshinoriMaeno 2021-05-04 02:23:01

MoinQ: DJB/tools/ucspi-tcp/tcprules (last edited 2022-03-27 01:37:34 by ToshinoriMaeno)