FreeBSD 4.4 に関する事です。

ftp接続に付いて

ftp の接続モードがデフォルトで passive モードになっていました。

> ftp -d <ftp サーバ >
Connected to <ftp サーバ >
220 ProFTPD 1.2.0rc3 Server (ProFTPD) [192.168.1.200]
Name (ftp サーバ:user): user
---> USER user
331 Password required for manabe.
Password:
---> PASS XXXX
230 User user logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd web
---> CWD web
250 CWD command successful.
ftp> pwd
---> PWD
257 "/web" is current directory.
ftp> dir
---> EPSV
500 EPSV not understood.
---> PASV
227 Entering Passive Mode (192,168,1,200,7,63).
---> LIST
<ここで 300秒フリーズしてしまいます。>
421 No Transfer Timeout (300 seconds): closing control connection.
ftp>
このように cd や pwd のコマンドは通りますが dir は通りません。
もちろんftpサーバが passive モードに対応していれば問題無いのですが。

ftp> passive
Passive mode off.

passive コマンドはトグルになっており on off が切り替わる。
FreeBSD 4.4 ではデフォルトで passive モードが on になっています。

> env | grep ^FTP
FTP_PASSIVE_MODE=YES

最初から passive モードではなく active モードにするには
/etc/login.conf に FTP_PASSIVE_MODE=YES となっているところが
あるのでこれを FTP_PASSIVE_MODE=NO とします。

active モード、passive モードについての詳細は以下を参考に
http://x68000.q-e-d.net/~68user/net/ftp-3.html


IP FILTER

複数のパソコンからインターネットにアクセスするにはルータを使います。 例えば私はCATVインターネットを利用しています。CATVインターネットで使われる ケーブルモデムは一つのIPアドレスしか割与えられないようです。(サメのヒレの 形をした3Com製のもの) このように一つのIPアドレスで複数のパソコンが インターネットにアクセスできるようにする方法の一つとして NAT があります。 NAT とは Network Address Translator の略で RFC1631 で解説されています。 簡単にいうとCATVのDHCPサーバから割与えられたIPアドレスを 10.1.2.241 とし 内部ネットワークのパソコンのIPアドレスを 192.168.0.1 とすると 192.168.0.1 からのパケットは 10.1.2.241 に変換されます。 つまりCATV側からは一台のパソコンと通信しているように見えるわけです。 ここでルータとなるパソコンはLANボードが二枚刺さっていて一方はケーブルモデム につながりもう一方は内部ネットワーク用で 192.168.0.3 のようにIPアドレスが 振られているものとします。

FreeBSD で NAT を実現するためには natd と ipfilter の二種類の 方法があります。ここではipfilterを紹介します。natd に関しては man natd または jman natd で詳しい説明があります。 ここではFreeBSD 4.4 での設定を紹介します。3.x では少し違います。

/etc/rc.conf に以下を追加します。

ipfilter_enable="YES"
ipnat_enable="YES"
ipmon_enable="YES"
gateway_enable="YES"

/etc/rc.conf の実際の内容は /etc/defaults/rc.conf にあって /etc/rc.conf
は /etc/defaults/rc.conf を上書きする形になります。
man rc.conf または jman rc.conf で詳しい説明があります。

/etc/ipf.rules を編集します。

# vi /etc/ipf.rules
pass in from any to any
pass out from any to any

これは最も簡単な設定です。ここはもう少し block なんとかというふうに
設定する必要があります。/usr/src/confrib/ipfilter/IPF.KANJI に
日本語の詳しい説明があります。WWWではIPF.KANJIを参照してください。

/etc/ipnat.rules を編集します。

# vi /etc/ipnat.rules
map ed0 0.0.0.0/0 -> 0/32 proxy port ftp ftp/tcp
map ed0 192.168.0.0/24 -> 0/32 proxy port ftp ftp/tcp
map ed0 192.168.0.0/24 -> 0/32 portmap tcp/udp auto
map ed0 192.168.0.0/24 -> 0/32

ed0はケーブルモデム側のインタフェイス名です。最初の2行はftpに必要です。

参考リンク

http://cheops.anu.edu.au/~avalon/ip-filter.html

http://www.wakhok.ac.jp/~n-yousuk/unix/openbsd/ipforwarding03.htm

http://web.tac.tsukuba.ac.jp/~hiromi/ipf4.html


named

ここではローカルなネットワークにネームサーバを構築します。 ドメインは kome で、ネームサーバを構築するマシンを sasanishiki とします。

named.conf の編集
# vi /etc/namedb/named.conf

options {
        directory "/etc/namedb";
        forward only;
// XXX.XXX.XXX.XXX はプロバイダのDNSサーバ
        forwarders {
                XXX.XXX.XXX.XXX;
        };
};
zone "." {
        type hint;
        file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
        type master;
        file "localhost.rev";
};

zone "kome" {
        notify no;
        type master;
        file "kome";
};

zone "0.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "0.168.192.IN-ADDR.ARPA";
};

/etc/namedb/localhost.rev の編集は /etc/namedb/ 以下に make-localhost 
というスクリプトが用意されていますのでこれを使います。/etc/rc.conf に
hostname="sasanishiki.kome" のように hostname はすでに定義されている
ものとします。

# cd /etc/namedb
# chmod +x make-localhost
# ./make-localhost
# cat localhost.rev
;       From: @(#)localhost.rev 5.1 (Berkeley) 6/30/90
; $FreeBSD: src/etc/namedb/PROTO.localhost.rev,v 1.6 2000/01/10 15:31:40 peter Exp $
;
; This file is automatically edited by the `make-localhost' script in
; the /etc/namedb directory.
;

$TTL    3600

@       IN      SOA     sasanishiki.kome. root.sasanishiki.kome.  (
                                20011124        ; Serial
                                3600    ; Refresh
                                900     ; Retry
                                3600000 ; Expire
                                3600 )  ; Minimum
        IN      NS      sasanishiki.kome.
1       IN      PTR     localhost.kome.

ホスト名とIPアドレスを定義するファイル"kome"を編集します。

# vi /etc/namedb/kome
$TTL    3600

@       IN      SOA     sasanishiki.kome. root.sasanishiki.kome.  (
                                200111241        ; Serial
                                3600    ; Refresh
                                900     ; Retry
                                3600000 ; Expire
                                3600 )  ; Minimum
        IN      NS      sasanishiki
                MX      10 sasanishiki

localhost       A       127.0.0.1

sasanisiki      A       192.168.0.3
                MX      10 sasanishiki
koshihikari     A       192.168.0.4
                MX      10 sasanishiki
akitakomati     A       192.168.0.5
                MX      10 sasanishiki
koganemasari    A       192.168.0.6
                MX      10 sasnishiki


逆引ファイル 0.168.192.IN-ADDR.ARPA を編集します。

# vi /etc/namedb/0.168.192.IN-ADDR.ARPA
$TTL    3600

@       IN      SOA     sasanishiki.kome. root.sasanishiki.kome.  (
                                200111241        ; Serial
                                3600    ; Refresh
                                900     ; Retry
                                3600000 ; Expire
                                3600 )  ; Minimum
                NS      sasanishiki.kome.

3               PTR     sasanishiki.kome.
4               PTR     koshihikari.kome.
5               PTR     akitakomati.kome.
6               PTR     koganemasari.kome.

/etc/resolv.conf を編集します。

# vi /etc/resol.conf
search kome
nameserver 127.0.0.1

以上で設定ファイルの編集は終りです。
named の起動は以下のように行います。

# /usr/sbin/ndc start

設定ファイルに文法上の誤りが無いか確認をします。

# cat /var/log/messages

もし間違いがあれば何行目に文法の誤りがあるとかでますので
修正してください。修正したらまた再起動します。

# /usr/sbin/ndc restart

または

# /usr/sbin/ndc reloard

マシンの起動時にnamedを起動させるには以下の行を /etc/rc.conf に
追加します。

named_enable="YES"

named のテストは以下のように行います。

# dig sasanishiki.kome

# dig www.yahoo.co.jp

問い合わせを行ってIPアドレスが表示されればOKです。
次に逆引きつまりIPアドレスからホスト名が引けるかのテストです。

# dig -x 210.81.153.68

オプションに -x を付けます。dig のほかに nslookup というコマンド
もあります。

named の設定は以下のリンクを参照するとよいでしょう。

DNS HOWTO


/usr/games/fortune

何年か前にFreeBSDを初めてインストールした時ログインするたびに何やら 妙なメッセージが表示されます。何か格言のような内容ですが英語力の無い私 にはほとんど理解できませんでした。これはfortuneというプログラムが働いている とわかったのは最近の事です。

You can permanently set environment variables for your shell by putting them
in a startup file for the shell.  The name of the startup file varies
depending on the shell - csh and tcsh uses .login, bash, sh, ksh and zsh use
.profile.  When using bash, sh, ksh or zsh, don't forget to export the
variable.

あなたのシェルの環境変数の値をそのシェルの操業開始のファイルに入れる事で
環境変数の値を永久に定める事ができる。その操業開始のファイルの値はシェルに
よってさまざまである。- csh や tcsh は .login を使用する。sh, ksh や zsh は
.profile を使用する。bash, sh, ksh または zsh を使用する時、値を export する
ことを忘れてはならない。

.login や .profile はログインする時に読み込まれるファイルです。 ゲームをインストールすると/usr/games 以下にファイルができて fortuneはその中の一つです。ゲームは /stand/sysinstall で追加することができます。

> cat ~/.login

[ -x /usr/games/fortune ] && /usr/games/fortune freebsd-tips

以前のバージョンのFreeBSDでは freebsd-tips が無かったがバージョン 4.4 ではこの項目があって少しはためになる内容が表示されるようです。 以下は普通の fortune の例です。

There's a fine line between courage and foolishness.  Too bad it's not
a fence.
勇気と愚かさの間には明白な線がある。悪いことに柵が無い。

Genius may have its limitations, but stupidity is not thus
handicapped.
                -- Elbert Hubbard
才能は限界があるかも知れない。しかし愚かさはそのような障害はない。

Women Unite!  Make *him* sleep in the wet spot tonight!

There was a young whore from Kaloo
Who filled her vagina with glue.
        She said with a grin,
        "If they pay to get in,
They can pay to get out again too!"

Motto of the Electrical Engineer:
        Working computer hardware is a lot like an erect penis: it
stays up as long as you don't fuck with it.

上の三個は内容がXXXな例です。

このように面白くてためになる格言?を無作為に表示するプログラムが fortune です。ログインする時によい格言が表示されたら幸運(fortune)ということでしょうか。


written in about December 1 2004