FreeBSD QandA 2000年12月7日 更新分
管理番号 221 (更新)
更新履歴
Q. NOTE-PC (ラップトップパソコン) に FreeBSD をインストール出来ますか?
A. できます。PAO が組み込まれたインストールフロッピー、または 4.0-RELEASE
からはそのままで、インストールする時から PC Card (PCMCIA) が使えます。
どのような PC Card が使用できるかは、各リリースに付属するリリースノート
を参照するか、PAO については以下の動作報告を参考にしてください。
PAO for 2.2.8-RELEASE (cvs tag=pao228)
<URL:http://home.jp.FreeBSD.org/~toshi/PAO/SUPPORTED.CARDS.jp>
PAO3 for 3.x-RELEASE
<URL:http://home.jp.FreeBSD.org/~toshi/PAO3/SUPPORTED.CARDS.jp>
一般的には、PCMCIA ネットワークカードを使った FTP インストールや、
PCMCIA 接続の CD-ROM インストールが便利でしょう。
PAO インストールフロッピー (PAO boot.flp) に関しては [管理番号 222] を
参考にしてください。バージョンに関する注意事項もあります。
<URL:http://www.jp.FreeBSD.org/PAO/> もご覧ください。
管理番号 745 (更新)
更新履歴
Q. FreeBSDで音楽CDの曲データ(CD-DA)をCD-ROMドライブまたはPDドライブを
用いて取り出せますか?
A. 全てのドライブで可能というわけではありませんが、次の樣な方法が考えられ
ます。
1. SCSI CD-ROMの場合
tosha を使います。tosha は ports/packages にもあります。(audio/tosha)
2. SCSI PDの場合(松下LF-1000)
以下のパッチをあてた tosha を使います。tosha については 1. を
参考にしてください。
ここから --
--- tosha.c~ Wed May 21 09:11:49 1997
+++ tosha.c Wed Mar 25 21:50:55 1998
@@ -541,6 +541,11 @@
readcmd = 0xd8;
}
else
+ if (!strncmp(vendor, "MATSHITA", 8) &&
+ !strncmp(product, "PD-1 LF-1000", 11)) {
+ modechange = FALSE;
+ readcmd = 0xd8;
+ }
if (!strncmp(vendor, "YAMAHA", 6) ||
!strncmp(vendor, "MATSHITA", 8)) {
;
ここまで ---
3. IDE CD-ROMの場合
a. dagrab を使います。dagrab は ports/packages にもあります。(audio/dagrab)
<URL:http://web.tiscalinet.it/marcellou/dagrab.html>
ただし、一部のCD-ROMドライブにおいて dagrab を用いて取り出しを
行うと、出力にノイズが混じるという事例が報告されています。
その場合は、b. の方法を試してみて下さい。
b. cdda2wav を使います。cdda2wav は ports/packages にもあります。(sysutils/cdrecord)
<URL:http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html>
管理番号 1729 (新規)
更新履歴
Q. 2000.10.22 ごろ取得した FreeBSD 4.1.1-STABLE を使っていますが、
CF-3.7Wpl2 を使って作成した sendmail.cf ファイルを使うと、local な
宛先の mail について次のようなエラーが発生します。FreeBSD 付属の
sendmail.cf ではうまくいくのですが。
Oct 27 19:19:31 host1 sendmail[12196]: e9RAJVC12196: from=user1, size=30, class=0, nrcpts=1, msgid=<200010271019.e9RAJVC12196@host1.my.domain>, relay=user1@localhost
Oct 27 19:20:02 host1 mail.local: lockmailbox /var/mail/user2 failed; error code 75
Oct 27 19:20:02 host1 sendmail[12198]: e9RAJVC12196: to=user2, ctladdr=user1 (1000/1000), delay=00:00:31, xdelay=00:00:31, mailer=local, pri=30030, dsn=4.0.0, stat=Deferred
A. /usr/libexec/mail.local コマンドの suid bit が設定されなくなったた
めです。CURRENT への変更は 2000.10.10, RELENG_4 への変更は
2000.10.19 にされています。
<URL:http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/libexec/mail.local/Makefile>
このため、これら日付以降の 5-current, 4-stable を使用する場合に CF
を使って sendmail.cf ファイルを作成する場合は、
LOCAL_MAILER_FLAG_ADD='S'
を .def ファイルに追加して下さい。
参考: 次の記事から続くスレッド
<URL:http://home.jp.FreeBSD.org/cgi-bin/showmail/FreeBSD-users-jp/56465>
<URL:http://home.jp.FreeBSD.org/cgi-bin/showmail/FreeBSD-tech-jp/2957>
管理番号 1703 (更新)
更新履歴
Q. 富士通(fujitsu)製パソコン FMV の製品情報 (カタログスペック) は
どこかにありませんか?
A. 公式のものでは、以下の場所でチップ情報を公開しているようです。
<URL:http://www.fmworld.net/annc/linux/chip_info.html>
また、非公式なものとして個人でまとめたものがあります。
<URL:http://village.infoweb.ne.jp/~gump/fmvkisyu/>
現在は出荷されていない機種の情報まで分かります。
グラフィックアクセラレータチップの確認などに使えます。
管理番号 18 (更新)
更新履歴
Q. 「X ウインドウズ」なんて存在しないと言われました。どうして?
A. 実際、「X ウインドウズ」というものは存在しません。しかし「X」という
window system が存在して、FreeBSD でも使うことができます。X(1) によれば、
X Consortium では以下のどれかを名称として使うよう求めています。固有名詞
は正しく表記しなければ大変失礼になります。一般的には 「X11」「X」と略す
か、「X Window System」と表記するのをお薦めします。
The X Consortium requests that the following names be used
when referring to this software:
X
X Window System
X Version 11
X Window System, Version 11
X11
X Window System is a trademark of X Consortium, Inc.
管理番号 303 (更新)
更新履歴
Q. fetchmail が
reading message 1 (xxxx bytes) .fetchmail: SMTP connect failed
fetchmail: SMTP transaction error while fetching from xxx.xxx.xxx
というエラーを表示して、メールを持ってきてくれません。
A. fetchmail は、POP や IMAP で取得してきたメールを、標準では SMTP を使っ
て配送しようとします。sendmail.cf を正しく設定した上で、sendmail(8) を
deamon モードで動作させてやれば一応問題は解決するのですが、ローカルメー
ル配送のためだけに sendmail を動かしておく意味は無いばかりか、セキュリ
ティの面でもあまりお薦めできません。
その代り、~/.fetchmailrc に mda 指定を追加する方が良いでしょう。以下に
例を示します。なお、username は各自のローカルユーザ名に置き換えてくだ
さい。
1) mda "/usr/libexec/mail.local username"
ローカルメーラを指定する方法です。今までは一般的な方法でしたが、
4.2-RELEASE からは、/usr/libexec/mail.local が set-user-id バイナリと
してインストールされなくなった影響で、そのままでは使えなくなった方法で
す。しかし、他の方法に比べ万一なにか問題があった場合でも、外部への被害
を与える心配が無いという意味では安全です。
2) mda "/usr/sbin/sendmail -oem username"
4.2-RELEASE からは、sendmail を指定することになります。もちろんそれ
以前のリリースでも有効な方法ではあります。
3) mda "/usr/local/bin/procmail -d username"
メールの振り分けのために procmail を指定する方法です。上記の二つは単
純にローカルのメールスプールに転送するだけでしたが、独自のスクリプト等
を指定する事で柔軟な処理が行えます。
管理番号 471 (更新)
更新履歴
Q. キーボード無し、CRT 無しのマシンで、シリアルポート (COM1) を使用し
てコンソール操作をしたいのですが、どうしたら良いのでしょう。
A. FreeBSD ハンドブックの「14.6 シリアルコンソールの設定」を読んでください。
ほとんどの場合、「14.6.2 シリアルコンソールを設定するための 6 ステップ」
を読めばまず成功すると思います。
<URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/ja/handbook/serialconsole-setup.html>
管理番号 1579 (更新)
更新履歴
Q. ssh(1) の便利な使い方を教えて下さい。
A. 「rsh(1) に比べて安全である」という他にも、以下の利点があります。
1. データの圧縮
オプション : -C
設定ファイル : Compression {yes|no} 圧縮{する|しない}
CompressionLevel {1〜9} 圧縮レベル{低〜高}
% ssh -C remote.hoge.ac.jp
-C オプションを使うと、データが圧縮されて転送されます。slogin(1)
や scp(1) でも有効です。ユーザごとの設定ファイル ~/.ssh/config に
Compression yes
と記述しておけば、毎回 -C オプションを使う必要はありません。
ダイアルアップ接続など、通信路が細い場合には特に有効です。さらに
CompressionLevel 9
などと、圧縮のレベルも設定できます。
2. X プロトコルの転送
ユーザが X(1) を使用していれば (環境変数 DISPLAY が設定されていれば)、
ssh で接続したリモートシェルから実行した X アプリケーションは、自動
的にローカルの X サーバに表示されます。このとき X プロトコルは暗号
化された通信路を経由して送られます。また、ユーザは DISPLAY 環境変数
の設定や xauth(1) コマンドの実行を手動で行なう必要はありません。
なお、この機能を使用するためには、コマンドライン及び設定ファイルで
有効化されてなければなりません。
リモートホスト側の sshd(8) の設定ファイル:
X11Forwarding {yes|no} X11 の転送を {許可|禁止}
X11DisplayOffset number ディスプレイ番号 (デフォルト:10)
ローカル側の ssh(1) の設定ファイル:
ForwardX11 {yes|no} X11 の転送を {する|しない}
コマンドラインオプション: -x X11 の転送をしない
-X X11 の転送をする
具体的には、ssh で ホスト remote にログインすると、環境変数
DISPLAY が remote:10.0 などと設定されます。ここで xclock などの
X アプリケーションを実行すると、環境変数 DISPLAY が参照され、
ディスプレイ番号 10、つまりポート 6010 (X サーバのポート番号 6000+10) に
接続し、X プロトコルをしゃべります。remote の sshd は ポート 6010 への
データを local の ssh に転送し、ssh がローカルの X サーバに中継します。
local remote
ssh (xxx)<================>(22) sshd (6010)
↓ 暗号化された通信路 ↑
X server (6000) xclock
(環境変数 DISPLAY 参照)
3. TCP ポートフォワーディング
オプション : -L port:host:hostport
-L port/host/hostport (IPv6)
設定ファイル : LocalForward port host:hostport
TCP/IP ポート host:hostport を、リモート側から暗号化された通信路
を経由してローカルの port に転送します。通常 host は ssh の接続先ホ
ストですが、それ以外のホストを指定してもかまいません。この場合、接
続先ホストと host 間の通信は暗号化されませんので、注意してください。
なお、host は接続先ホストから見た名称となります。
オプション : -R port:host:hostport
-R port/host/hostport (IPv6)
設定ファイル : RemoteForward port host:hostport
TCP/IP ポート host:hostport を、ローカル側から暗号化された通信路
を経由してリモートの port に転送します。これを見てピンときた人もい
るでしょうが、これを使えば X11 forwarding をエミュレートできます。
どの指定方法も必要なら複数指定することができます。
4. POP over ssh
例えば、ホスト remote.hoge.ac.jp の POP3 サーバとのデータのやりとりを
telnet(1) で行うと、
% telnet remote.hoge.ac.jp 110
...
USER username (ユーザ認証)
PASS password
....
RETR 1 (メール番号 1番を取得)
.... (メールの内容が送られてくる)
QUIT
となります。これではパスワードやメールの内容が全て平文でネットワーク
上を流れてしまいます。
リモート (remote.hoge.ac.jp) に sshd(8) が上がっている場合は、この代わりに
% ssh -L 8000:remote.hoge.ac.jp:110 remote.hoge.ac.jp
とします。そして、ローカルのポート 8000 にアクセスすると、
% telnet localhost 8000
...
USER username (ユーザ認証)
PASS password
....
RETR 1 (メール番号 1番を取得)
.... (メールの内容が送られてくる)
QUIT
と、remote.hoge.ac.jp:110 の代わりに localhost:8000 に接続して、
同じ POP3 プロトコルをしゃべればメールが取得できるわけです。
ssh(1) が自動的にリモートのポート 110 宛に転送してくれます。
流れるデータは全て暗号化されており、-C で圧縮することもできます。
a) Netscape
Netscape Messenger では、サーバ名を指定する所に
「ホスト名:ポート番号」 (例 localhost:8000)
と記述します。なお、メールを取り込む前に
% ssh -L 8000:remote.hoge.ac.jp:110 remote.hoge.ac.jp
を実行しなくてはいけません。
b) fetchmail(1)
POP over ssh の例は、fetchmail のオンラインマニュアルにも載っています。
以下の ~/.fetchmailrc はその一例です。この例では pophost には直接
ssh で接続できないので、shellhost を経由しなければならないと仮定し
ています。
---[~/.fetchmailrc の例]---
defaults proto apop timeout 120
mda "/usr/local/bin/procmail -d localuser"
username popuser password poppass
postconnect "/usr/sbin/sendmail -q";
poll pophost.domain via localhost port 10110 with proto pop3:
preconnect "ssh -f -L 10110:pophost.domain:110 shellhost.domain
-l popuser sleep 20 </dev/null >/dev/null 2>&1";
---
local shellhost
(10110) ssh (xxx)<================>(22) sshd
↑↓ 暗号化された通信路 ↓↑ LAN
fetchmail (110)
POP3 server
pophost
5. IMAP over ssh
6. SMTP over ssh
a) sendmail(8) + CF
まず、sendmail.cf を作りなおします。CF の .def ファイルを編集して、
未使用のメーラを SMTP over ssh 用に設定します。
ESMTP_MAILER_ARGS='IPC $h 10025'
ESMTP_MAILER_FLAG_BASE="$SMTP_MAILER_FLAG_BASE"
上の例では esmtp メーラを使い、ssh による TCP forwarding にポート番
号 10025 を割り当てます。つぎに配送方法の指定ですが、基本的に全ての
メールを暗号化して送るのなら以下のような指定になるでしょう。
DIRECT_DELIVER_DOMAINS='local.domain'
DIRECT_DELIVER_MAILER=smtp
DEFAULT_RELAY='esmtp:[localhost]'
DELIVERY_MODE='queue'
または、逆に一部のドメイン宛のみ暗号化するのなら、STATIC_ROUTE_FILE
か MAILERTABLE を使用すれば良いでしょう。
[mailertable の例]
myoffice.domain esmtp:[localhost]
% ssh -f -C -L 10025:localhost:25 host.myoffice.domain sleep 60
% sendmail -q
7. NNTP over ssh
a) leafnode(8)
ports から入れたのなら /usr/local/share/doc/leafnode+/config.example
に例があります。
8. rsync(1)
オプション : -e ssh または --rsh=ssh
環境変数 : RSYNC_RSH
% rsync -avz --delete --rsh=ssh . user@remote:dir/
カレントディレクトリ配下のツリー全体を remote の ~user/dir/ ディレ
クトリへ反映させます。その際 remote との接続に ssh を使用します。
なお、ssh 側で既に Compression yes になっている場合は、rsync の -z
オプションは無意味でしょう。
$ export RSYNC_RSH=ssh (sh 系)
% setenv RSYNC_RSH ssh (csh 系)
環境変数を設定しておけば、オプション指定は省くことができます。
9. cvs(1)
環境変数 : CVS_RSH
$ export CVS_RSH=ssh (sh 系)
% setenv CVS_RSH ssh (csh 系)
% cvs -d freefall.FreeBSD.org:/home/ncvs checkout src/sys
CVS リポジトリのあるサーバへの接続に ssh を使います。
10. VPN using ssh
例えば、出先からプロバイダ経由で社内のサーバを利用するような場合、
通信路を暗号化したトンネルを構築すればデータを安全に利用できます。
まず、手元のクライアント及びサーバとなるマシンの /etc/ppp/ppp.conf
に以下の設定を追加します。ssh コマンドはクライアントの root 権限で
動かしますので、ssh -l user officeserver でログインできる事を確認し
てください。また、user が root 以外の場合は、サーバの /etc/group の
network グループに user を登録する事を忘れないで下さい。
---[ppp.conf の例]---
sloop:
set timeout 0
set log phase chat connect lcp ipcp command
set openmode passive
set device "!ssh -l user officeserver exec /usr/sbin/ppp -direct loop-in"
set dial
set login
set ifaddr 127.0.0.2 127.0.0.3
set server /var/tmp/loop "" 0177
loop-in:
set timeout 0
set log phase lcp ipcp command
allow mode direct
---
以下はクライアントでのオペレーション例です。この例では、最初の ppp(8)
でプロバイダへ接続していますが、専用線を使う環境では省くことができ
るでしょうし、ipfw(8) を利用してゲートウェイとして動作させることも
できます。
% su
# ppp -quiet -auto provider
# eval `ssh-agent -c`
# ssh-add
# ppp -background sloop
# suspend
% execute your network application...
% %
# pppctl /var/tmp/loop close
# eval `ssh-agent -k -c`
# pppctl /var/tmp/provider 'close; quit all'