僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
at(1)を試す。前回はLinuxで、atd(8)が起動
していればどのユーザでも実行できる模様だったが、
今度は、そんなデーモンはない(らしい)。
また /var/at/at.allowに名前が無ければ$ at foobarしても、即座に
"at: you do not have permission to use this program"。
空っぽの /var/atd/atd.denyがあれば↑と同様だけど、そうするべきかは
疑問。
あと気づいたこと若干。
FreeBSD(4.11,5.3)では at(1)もbatch(1)もls -iは同じだった。
linux では batch(1)はat(1)を実行する
シェルスクリプトだった(PlamoLinux4.0とDebian/GNU Linux3.0で
確認)。
NetBSD1.6.2ではデフォルトで空っぽの/var/at/at.denyがあった。
manpageにもそれが、そしてその意味するところが明記してあった。
ついでにMacOSXもつついてみたが、atとbatchのiノードが違う(ファイルサイズ
は同一なのに)事を除いて FreeBSDと同様。
って何だ?ぐぐると、受信データをただ破棄するだけ、と解説して いるサイトがあった。言及されているRFC863を見たが、
A useful debugging and measurement tool is a discard service. A discard service simply throws away any data it receives.
これでは何のための仕様なのか全然掴めない。で、さらにぐぐると comp.protocols.tcp-ipの過去ログ(といっても1983年じゃない。今年のだ)が ヒットした。スレッド化されてないので辿りにくかったが、 19333の質問(自分と瓜ふたつの疑問)からいくつか対話が続いている。 とはいっても、最初の答えである19335 以外は、あまりよくわからなかったが。リンク切れに備えてコピペしとこ。
That's the protocol I usually use when using ttcp to perform throughput tests. Since you're just testing the network, you don't need the receiver to do anything with the data, so sending it to the discard service is the most obvious thing to do. It's the network equivalent of /dev/null.
ちなみに回答者の名前でぐぐるとschemeのFAQとか、色々なNewsの過去ログとか
がヒットした。MITのアカウントは伊達ではない。
さらに脱線(どこから?)。
$ ls -l | telnet DEBIAN 9 Trying XXX.XXX.XXX.XXX... Connected to DEBIAN. Escape character is '^]'. Connection closed by foreign host. $ dd if=/dev/zero of=zero.dat bs=1024k count=10 読み込んだブロック数は 10+0 書き込んだブロック数は 10+0 $ ls -l zero.dat -rw-r--r-- 1 USER GROUP 10485760 3月 12日 02:44 zero.dat $ cat zero.dat | telnet DEBIAN 9 Trying XXX.XXX.XXX.XXX... Connected to DEBIAN. Escape character is '^]'. telnet: buffer overflow, losing data, sorry telnet: ring.cc:143: int ringbuf::flush(): Assertion `top-bot > 0 \ && top-bot <= count' failed. アボートしました
ふむ。なにかまずかったかな。 etherealで追っかけていると、telnetが落ちるまで1万近くのパケットが飛び交っていた。 etherealの他いくつかの重そうなアプリを閉じると、落ちなくなった。
あと、DebianやFreeBSDなどで同様の実験をlocalhost 宛に投げてみた。 DebianではinetdのCPU負荷が30%以上、telnetが 50%以上で続いた。 FreeBSDではinetdのCPU負荷はほとんどなく、telnetの負荷が90%以上だった。 条件はバラバラなので、あくまで一例だけど、ベンチマークとしても 面白そうだ。
apache-sslやpostfixなどを放りこんで、動作確認。 改めてnmapで砲撃すると、何時の間にか色々開いていた。
$ nmap Debian Starting nmap 3.55 ( http://www.insecure.org/nmap/ ) at \ 2005-03-12 01:20 JST Interesting ports on Debian (XXX.XXX.XXX.XXX): (The 1653 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 9/tcp open discard 13/tcp open daytime 22/tcp open ssh 25/tcp open smtp 37/tcp open time 80/tcp open http 443/tcp open https
$ telnet debian $NUM でいくつか試す。
daytimeは日時がピョン。timeは読めねぇ。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。
FreeBSDではcronで5分おきにatrunを呼んでるだけです。<atdがない