i486/DX4-100MHzをインタネットサーバに! FreeBSD編

IBM Aptiva Vision with FreeBSD 2.2.7-R

on Feb.14,1999

mailto:takamura@itoh.net

Index

  1. Linuxの続き TurboLinux3.0でProxy
  2. 結局 FreeBSDでProxy server
  3. 調子に乗ってDNSも
  4. やっぱりsendmailについて
  5. 参考&役に立つURL
  6. カーネルの再構築

★★★TurboLinux3.0でProxyServer★★★


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
How to make up a Proxy server
「TuroboLInux3.0+DeleGateを使ったProxy serverの作り方」
 takamura@itoh.co.jp 高村和則 Jan.15,1999
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■WinNTserver4.0で動かしていたDeleGateをTurboLinux3.0に載せ換えた記録で
す。マシンのスペックは
IBM PC Server 310
 Pentium166MHz/48MB/1.2G SCSI HDD/CD(SCSI)/AHA2940/NE2000/3c509/S3 1MB
WinNTserverでも充分安定してきたところですが、どうせなら動作が軽く安定動
作が望め、さらにリモートでメンテナンスがしやすいUNIX互換のTurboLinuxに・
・・と思い載せ換え作業をしました。

■TurboLinux3.0のインストール
PC Server310はCD BootをサポートしていないためFDの起動ディスクからのBoot
となります。順調にAHA2940を認識してCDもHDDもオッケー。NTのパーティション
ともおさらばします。swap領域は80メガほど残りは全部linuxに設定。(sda1/
sda2)

インストールは「標準ワークステーション」500MB程占有してしまいますが、「S
OHOサーバ」(130MB)では何故かXが立ち上がらず、後で要らないモノを削除する
ようにします。

TurboLinux3.0のdefault Window Manager Afterstepは16bit以上の色数でないと
動かないためしようがなく800x600にしておきます。(RAMが1MBしか搭載されてい
ないため) どうせワークステーションとして使うことは無いので設定だけがで
きればよいでしょうから、良しとします。要は設定のためにXが起動する必要が
あるだけなのです。

あと注意点はnntpサーバのインストールはしないこと。(後述)

■2枚のNICを認識させる
2枚差しでインストール作業を進めておき、インストール終了後リブート。案の
定認識せずでした。Afterstepの「カーネル」からeth0/eth1を認識させます。NE
2000はio=0x300とパラメータを与えておきます。取りあえず再度リブート。今度
はeth0が認識させられました。

次に3c509です。さっきのところからNICの追加を選び、自動的にeth1が表示され
ます。3c509だと思っていましたが、AutoProbeさせると違うカード名がでてきま
した。(一応3comの3c905でした。) PCIのカードの為、深く考えずにそのまま進
めるとちゃんと認識するようです。

「ネットワーク」のところでIPアドレスを振って、IP Forwardingもチェックを
いれておきます。Routingのタグはありますが、後で設定した方が都合が良いの
で今は無視して、再度リブート。起動後pingを打ってみてIPレベルで機能してい
ることを確認してからスタティックルートの設定をします。決してOSインストー
ル時にroutedとかgatedをいれて動かさないこと。

ちなみにコンソールからNICを認識させるときは
(not PnP - LegacyMode)
/etc/conf.modules に
alias eth0 ne
options ne io=0x300 irq=3
等と書きます。
(PnP Mode)
/etc/isapnp.conf
を編集します。
(TLJ3.0: /usr/doc/HOWTOJ/Moddule-HOWTO.euc.gz
 TLJ2.0: /usr/jp/doc/howto
にmoduleに対する設定方法があり。)

■静的ルーティング設定
NTの時の様にコンソールからroute情報を設定することもできます。
(NT)
>route print
(linux)
#route

(NT)
>route add 172.16.2.0 mask 255.255.255.0 172.16.1.5
(linux)
#route add -net 172.16.2.0 netmask 255.255.255.0 eth1
       eth1に172.16.1.5が割り振られていた場合
と微妙に文法が違うので注意がいります。

default gatewayの設定は
(linux)
#route add -net 0.0.0.0 netmask 0.0.0.0 gw 210.145.46.225
とルータのアドレスを明示します。

routeの設定をするまえにまず
#route
とやって現在のスタティックルート情報を見てみます。加えるのはadd、削除す
るのはdeleteです。

設定方法はこれで良いのですが、リブートすると綺麗に忘れてくれる(ことも有
る・何故か?)ので忘れない方法を以下に。

上記の文法とちょっと違うのですが、

/stc/sysconfig/static-routes に

eth1 net 172.16.2.0 netmask 255.255.255.0
と記述すればオッケーです。実際はリブートして忘れてしまうものだけを書いて
おけば良いです。初めはこのstatic-routesと言うファイルが有ることを知らな
いモノだから、rc.localにでも書いてしまおう・・・情けないけど・・・・と思
ってました。hi

たびたびrebootするのは、これまた情けないですが、pingを打ってみてちゃんと
思っているネットワークにパケットが通るかしっかり確認してから次の作業にか
かるべきでしょう。

■やっとDeleGateにご対面
以下のURLを参考にしました。
http://surf.ap.seikei.ac.jp/~nakano/linux/delegate-j.html
delegateのインストール(linux)
http://www.fastnet.or.jp/~nomura/install/delegate.html
delegate 4.0.7のインストール
http://erpc1.naruto-u.ac.jp/~itaru/server.html
サーバの構築 の中の
http://erpc1.naruto-u.ac.jp/~itaru/proxy.html#2
Proxy〜delegateを参考にしました。以下はそれらの引用も含んでいます。


まずはgetしてきます。
#cd /usr/local/src にでも置いておくと良いでしょう。
ftp://ftp.delegate.org/pub/DeleGate/
から最新のdelegateをgetして展開します。

#tar xvfz delegate5.8.7.tar.gz

次にmakeの時に使う設定ファイルを作ておきます。
#cd delegate5.8.7/src
#vi DELEGATE_CONF とやって
以下の様な内容にしておきます。
AUTHORS = takamura@itoh.co.jp

コンパイルします。
# make PATH=".:$PATH" CC=gcc

/usr/local/src/delegate5.8.7/src 以下に
delagated が出来ていれば成功です。/usr/local/bin/にmvしておきます。

まず delegated を実行する権限を持ったユーザを作ります。例えば以下のよう
な行をそれぞれのファイルに追加すれば良いでしょう。 

===== in /etc/passwd =====
delegate:*:10001:10001:delegate daemon:/var/spool/delegate:

===== in /etc/group =====
delegate:*:10001:

ログやキャッシュのためのディレクトリを作ります。例えば以下のようになるで
しょう(もちろん root 権限で)。 

#mkdir /var/spool/delegate
#mkdir /var/spool/delegate/cache
#mkdir /var/spool/delegate/log
#mkdir /var/spool/delegate/tmp
#mkdir /var/spool/delegate/work
#chown -R delegate.delegate /var/spool/delegate /var/spool/delegate/cache /var/spool/delegate/log 
/var/spool/delegate/tmp /var/spool/delegate/work
#chmod -R 777 /var/spool/delegate /var/spool/delegate/cache /var/spool/delegate/log /var/spool/delegate/tmp 
/var/spool/delegate/work

delegate/cache ディレクトリが無ければキャッシュファイルを作らなくなり、
キャッシュも利きません。。 

できたら確認しておきます。

/var/spool/delegate 以下に
[root@karatu delegate]# ls -la
total 9
drwxrwxrwx   9 delegate delegate     1024 Jan 16 17:14 ./
drwxr-xr-x  10 delegate delegate     1024 Jan 13 21:52 ../
drwxrwxrwx   4 delegate delegate     1024 Jan 13 23:59 adm/
drwxrwxrwx   3 delegate delegate     1024 Jan 16 17:44 cache/
drwxrwxrwx   2 delegate delegate     1024 Jan 16 17:11 conf/
drwxrwxrwx   4 delegate delegate     1024 Jan 13 23:59 etc/
drwxrwxrwx   3 delegate delegate     1024 Jan 16 17:38 log/
drwxrwxrwx   3 delegate delegate     1024 Jan 16 17:45 tmp/
drwxrwxrwx  17 delegate delegate     1024 Jan 16 17:38 work/

■/etc/rc.d/rc.local の最後に以下のスクリプトを追加します。

if [ -f /usr/local/bin/delegated ]; then

     /usr/local/bin/delegated  -vt -P8080 +=/var/spool/delegate/conf/8080.conf > /dev/null 2>&1 &

     /usr/local/bin/delegated  -vt -P210 +=/var/spool/delegate/conf/210.conf > /dev /null 2>&1 &

     /usr/local/bin/delegated  -vt -P110 +=/var/spool/delegate/conf/110.conf > /dev /null 2>&1 &

     /usr/local/bin/delegated  -vt -P25 +=/var/spool/delegate/conf/25.conf > /dev/null 2>&1 &

     /usr/local/bin/delegated  -vt -P23 +=/var/spool/delegate/conf/23.conf > /dev/null 2>&1 &

     /usr/local/bin/delegated  -vt -P119 +=/var/spool/delegate/conf/119.conf > /dev/null 2>&1 &

     /usr/local/bin/delegated  -vt -P8119 +=/var/spool/delegate/conf/8119.conf > /dev/null 2>&1 &

     /usr/local/bin/delegated  -vt -P8110 +=/var/spool/delegate/conf/8110.conf > /dev/null 2>&1 &

     echo "Starting DeleGate server!!"

fi

●●途中の -vt はこれがないと何故かLinuxではFTP/HTTPのキャッシュが利かず
(利かないだけならまだ良いけどエラーになって使えない。)苦肉の策です。
Jan 18,1999現在5.8.7で。 ちなみに -vvでも-vdでも良いようですが、-vt以外
だとlog fileの成長度合いが急激になります。

hogehoge.confはこんな感じ。

[root@proxy conf]# ls -la
total 10
drwxrwxrwx   2 nobody   root         1024 Jan 16 20:24 ./
drwxrwxrwx   9 root     root         1024 Jan 16 17:14 ../
-rw-rw-r--   1 root     root          145 Jan 16 17:00 110.conf
-rw-rw-r--   1 root     root          109 Jan 16 17:05 119.conf
-rw-rw-r--   1 root     root           90 Jan 16 19:08 210.conf
-rw-rw-r--   1 root     root           89 Jan 16 17:04 23.conf
-rw-rw-r--   1 root     root          106 Jan 16 17:02 25.conf
-rw-rw-r--   1 root     root           91 Jan 16 19:20 8080.conf
-rw-rw-r--   1 root     root          119 Jan 16 19:21 8110.conf
-rw-rw-r--   1 root     root          126 Jan 16 19:21 8119.conf
[root@proxy conf]#

■各々のファイルの中身

#/var/spool/delegate/conf/110.conf
SERVER=pop
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/119.conf
SERVER=nntp://nn-tk005.ocn.ad.jp/
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/210.conf
SERVER=ftp
EXPIRE=1d
CRON="0 3 * * * -expire 2d"
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/23.conf
SERVER=telnet
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/25.conf
SERVER=smtp://mail.itoh.co.jp/
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/8080.conf
SERVER=http
EXPIRE=1d
CRON="0 3 * * * -expire 2d"
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/8110.conf
MOUNT="/mail/* pop://mail.itoh.co.jp/*"
EXPIRE=1d
CRON="0 3 * * * -expire 2d"
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

#/var/spool/delegate/conf/8119.conf
MOUNT="/net/news/* nntp://nn-tk005.ocn.ad.jp/*
EXPIRE=1d
CRON="0 3 * * * -expire 2d"
ADMIN=takamura@itoh.co.jp
RELIABLE="172.16.[1-254].[1-254]"
RELIABLE="*.itoh.co.jp"

■必要なサービスのポート変更&不要サービスをとめる
TurboLinux等のディストリビューションはインストールするだけで勝手にsendma
ilやらtelnetdなんかが動いています。となると上記の様な設定をしてしまうと
、23/25/110番ポートは重複してしまいます。(119はnntpサーバをインストール
しないことで回避できます。)それに余計なサービスはセキュリティ上の問題か
ら止めることが望ましいと思います。

/etc/services
のポート番号を
23 ---> 10023
25 ---> 10025
110 ---> 10110
119 ---> 10119
等に変えておきます。
こうすれば普通に23番にtelnetのリクエストがくればproxyで受けますし、その
マシンにtelnetしたいときは10023番でリクエストすれば良いわけです。

■tcp_wrapperをかけておく。
(後述のFreeBSDの項参照、ブービートラップの文法がちょっと違うので注意)

Indexに戻る

★★★ FreeBSDでProxy server ★★★


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
How to make up a Proxy server
「FreeBSD2.2.7R+DeleGateを使ったProxy serverの作り方」
 takamura@itoh.co.jp 高村和則 Jan.23,1999
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
■プロキシ・DNSともFreeBSDに載せ換え。on Jan 23,1999 Kazu Takamura
 初めはTurboLinux3.0で動かしていたのですが、DeleGate5.8.7ではftpプロキシ
でキャッシュに引き当たると止まると言う致命的なバグの為、FreeBSD2.2.7に載せ換え
ました。同様にTurboLinux2.0(Kernel 2.0.33)で動いていたDNSサーバ、タイムサーバ
の480DX4/32MBマシンもついでにFreeBSDしてしまいました。(ちなみにDeleGate5.8.8
でこのバグは修理されてしまいました。発見から4日目で修理完了!これは凄い!)

 マシンは由緒正しきIBM PC server 310 Pentium166MHz 48MB/SCSI 1.2G

■プロキシサーバの設定〜FreeBSD2.2.7R
proxy.itoh.co.jp
/etc/rc.conf の変更点。肝の部分だけ以下に。

### Basic network options: ###
hostname="proxy.itoh.co.jp"     # Set this!
〜〜
#★/stand/sysinstall でネットワークカードの設定をしたら、使うNICデバイスを
# 下記のように宣言して各々のIP AddressとNetmaskを設定。
network_interfaces="ed0 vx0 lo0"   # List of network interfaces (lo0 is loopback).
ifconfig_ed0="inet 172.16.1.5  netmask 255.255.255.0"
ifconfig_vx0="inet 210.145.46.227  netmask 255.255.255.240"
ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration.
#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" # Sample alias entry.
### Network daemon (miscellaneous) & NFS options: ###
〜〜
inetd_enable="YES"              # Run the network daemon dispatcher (or NO).
#★何故かinetd.pidの生成の設定がなされてないので、以下のように設定。
inetd_flags="-p /var/run/inetd.pid"      # Optional flags to inetd.
#★namedを動かすならYESです。
named_enable="NO"               # Run named, the DNS server (or NO).
named_program="/usr/sbin/named" # named program, in case we want bind8 instead.
〜〜

### Network routing options: ###
defaultrouter="210.145.46.225"          # Set to default gateway (or NO).
#★これ重要、スタティックルートの設定。
static_routes="rt1"             # Set to static route list (or leave empty).
route_rt1="-net 172.16.2.0 172.16.1.252"
gateway_enable="YES"            # Set to YES if this host will be a gateway.
#★routed等を使ってダイナミックルーティングは行わない。
router_enable="NO"              # Set to YES to enable a routing daemon.
router="routed"                 # Name of routing daemon to use if enabled.
router_flags="-q"               # Flags for routing daemon.
〜〜

■DeleGateの設定
DeleGateをインストールして(TurboLinuxの項参照。ftp get〜解凍〜make)
DeleGateを起動させるシェルスクリプトはここに置いて
/usr/local/etc/rc.d/delegated.sh
内容は
---------------------------------------------------------
#!/bin/sh

if [ -x /usr/local/sbin/delegated ]; then
        /usr/local/sbin/delegated -P8080 \
        +=/usr/delegate/conf/8080.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P8110 \
        +=/usr/delegate/conf/8110.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P8119 \
        +=/usr/delegate/conf/8119.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P23 \
        +=/usr/delegate/conf/23.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P25 \
        +=/usr/delegate/conf/25.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P110 \
        +=/usr/delegate/conf/110.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P119 \
        +=/usr/delegate/conf/119.conf \
        > /dev/null 2>&1

        /usr/local/sbin/delegated -P210 \
        +=/usr/delegate/conf/210.conf \
        > /dev/null 2>&1

fi
---------------------------------------------------------
とこんな感じ。Linuxでrc.localに記述してあるのと同じです。
設定ファイル /usr/delegate/conf/*.conf の中身もTurboLinuxの項を
参照のこと。

■ポート番号を変えておく。
/etc/services
のポート番号を
23 ---> 10023
25 ---> 10025
110 ---> 10110
119 ---> 10119
等に変えておきます。

■tcp_wrapperの設定
pkg_add でtcp_wrapperをインストール。
/usr/local/etc/ 以下にある
inetd.conf.wrapped.sample をそのまま /etc/inetd.confとして利用します。
$ mv inetd.conf inetd.conf.org
$ cp /usr/local/etc/inetd.conf.wrapped.sample /etc/inetd.conf

つぎに /usr/local/etc/ 以下に hotsts.allow と hosts.deny を書いておき
ます。

●bash-2.02$ cat /usr/local/etc/hosts.allow

ftpd: .odn.ad.jp, .odn.ne.jp, .avis.ne.jp, .itoh.net, .itoh.co.jp, .daieisc.co.jp, 210.145.46.224/255.255.255.240, 172.
16.1.0/255.255.255.0, 172.16.2.0/255.255.255.0, 210.170.69.48/255.255.255.240

telnetd: .odn.ad.jp, .odn.ne.jp, .avis.ne.jp, .itoh.co.jp, .itoh.net, .daieisc.co.jp, 210.145.46.224/255.255.255.240, 
172.16.1.0/255.255.255.0, 172.16.2.0/255.255.255.0, 210.170.69.48/255.255.255.240

rshd: .odn.ad.jp, .odn.ne.jp, .avis.ne.jp, .itoh.co.jp, .itoh.net, .daieisc.co.jp, 210.145.46.224/255.255.255.240, 172.
16.1.0/255.255.255.0, 172.16.2.0/255.255.255.0, 210.170.69.48/255.255.255.240

rlogind: .odn.ad.jp, .odn.ne.jp, .avis.ne.jp, .itoh.co.jp, .itoh.net, .daeisc.co.jp, 210.145.46.224/255.255.255.240, 
172.16.1.0/255.255.255.0, 172.16.2.0/255.255.255.0, 210.170.69.48/255.255.255.240


●bash-2.02$ cat /usr/local/etc/hosts.deny
ALL: ALL

★何故かブービートラップをかけてroot宛にメールをしようとしても旨く動きません。
25番ポートのリレーの関係だとおもいますが。。。 しようがないので単にALLで
制限だけかけておきます。



Indexに戻る

★★★調子に乗ってDNSもBSD★★★



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
How to make up a DNS/NNTP server
「FreeBSD2.2.7R+xntpd/bindを使ったDNSサーバの作り方」
 takamura@itoh.co.jp 高村和則 Jan.23,1999
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■ユーザのシェル変更は
/etc/passwdを直接変更してもダメです。
vipwコマンドを使わないといけません。

■/var/run/*.pidを見てプロセス番号が分かれば inetd.confやbind等のデーモン設定
を変更しても
kill -SIGHUP プロセス番号
で更新ができます。いちいちリブートする必要はありません。もしデーモンの
pidファイルが無いのならば、inetd.conf中にpidを生成する設定が無いのです。

■namedの起動
/var/run/inetd.pidの生成
xntpdの起動
ip aliasの設定
は /etc/rc.conf を編集してrebootする。

### Basic network options: ###
hostname="dns.itoh.co.jp"       # Set this!
nisdomainname="NO"              # Set to NIS domain if using NIS (or NO).
firewall_enable="NO"            # Set to YES to enable firewall functionality
firewall_type="UNKNOWN"         # Firewall type (see /etc/rc.firewall)
firewall_quiet="NO"             # Set to YES to suppress rule display
tcp_extensions="YES"            # Allow RFC1323 & RFC1644 extensions (or NO).
network_interfaces="ed0 lo0"    # List of network interfaces (lo0 is loopback).
ifconfig_ed0="inet 210.145.46.226  netmask 255.255.255.240"
ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration.
#ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" 
# Sample alias entry.#★以下がip_aliasのミソです。netmaskは28ビットだけど
#              0xfffffff0ではありません!!★
ifconfig_ed0_alias0="inet 210.145.46.228 netmask 0xffffffff"
ifconfig_ed0_alias1="inet 210.145.46.230 netmask 0xffffffff"

### Network daemon (miscellaneous) & NFS options: ###
syslogd_enable="YES"            # Run syslog daemon (or NO).
syslogd_flags=""                # Flags to syslogd (if enabled).
inetd_enable="YES"              # Run the network daemon dispatcher (or NO).
#★bindの起動
inetd_flags="-b /etc/namedb/named.boot"         # Optional flags to inetd.
#★inetd.pidの生成
inetd_flags="-p /var/run/inetd.pid"
#★namedを有効にする
named_enable="YES"              # Run named, the DNS server (or NO).
#★namedの在処
named_program="/usr/sbin/named" # named program, in case we want bind8 instead.
#★namedの起動時に読み込むdbファイル(named.boot)の所在
named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
kerberos_server_enable="NO"     # Run a kerberos master server (or NO).
kadmind_server_enable="NO"      # Run kadmind (or NO) -- do not run on
                                # a slave kerberos server
#★NFSは危険なので全部NO
kerberos_stash=""               # Is the kerberos master key stashed?
rwhod_enable="NO"               # Run the rwho daemon (or NO).
amd_enable="NO"                 # Run amd service with $amd_flags (or NO).
amd_flags="-a /net -c 1800 -k i386 -d my.domain -l syslog /host /etc/amd.map"
nfs_client_enable="NO"          # This host is an NFS client (or NO).
nfs_client_flags="-n 4"         # Flags to nfsiod (if enabled).
nfs_server_enable="NO"          # This host is an NFS server (or NO).
nfs_server_flags="-u -t 4"      # Flags to nfsd (if enabled).
mountd_flags="-r"               # Flags to mountd (if NFS server enabled).
nfs_reserved_port_only="NO"     # Provide NFS only on secure port (or NO).
rpc_lockd_enable="NO"           # Run NFS rpc.lockd (*broken!*) if nfs_server.
rpc_statd_enable="YES"          # Run NFS rpc.statd if nfs_server (or NO).
portmap_enable="YES"            # Run the portmapper service (or NO).
portmap_flags=""                # Flags to portmap (if enabled).
rarpd_enable="NO"               # Run rarpd (or NO).
rarpd_flags=""                  # Flags to rarpd.
xtend_enable="NO"               # Run the X-10 power controller daemon.
xtend_flags=""                  # Flags to xtend (if enabled).

### Network Time Services options: ###
timed_enable="NO"               # Run the time daemon (or NO).
timed_flags=""                  # Flags to timed (if enabled).
ntpdate_enable="NO"             # Run the ntpdate to sync time (or NO).
ntpdate_program="ntpdate"       # path to ntpdate, if you want a different one.
ntpdate_flags=""                # Flags to ntpdate (if enabled).
#★ xntpdを有効にする。設定ファイルntp.confは/etc/ntp.confに別途記述
#★ su-2.02# cat /etc/ntp.conf
#★ server clock.nc.fukuoka-u.ac.jp
#★ driftfile /var/ntp.drift
#
xntpd_enable="YES"              # Run xntpd Network Time Protocol (or NO).
xntpd_program="/usr/sbin/xntpd"  # path to xntpd, if you want a different one.
#★xntpd.pidの生成
xntpd_flags="-p /var/run/xntpd.pid"     # Flags to xntpd (if enabled).
tickadj_enable="NO"             # Run tickadj (or NO).
tickadj_flags="-Aq"             # Flags to tickadj (if enabled).

 ちなみにただ定期的にタイムサーバを見に行って自分の時計を直すだけなら
コマンドラインから、

crontab -e

で、エディタが開くので、

1 * * * * /usr/sbin/ntpdate サーバのIPアドレス

で、エディタを保存して閉じれば完了。(手動設定なら
/usr/sbin/ntpdate 210.145.46.226
と言うことです。)


■tcp_wrapperを掛けておく。
●bash-2.02$ cat /usr/local/etc/hosts.deny
ALL: ALL: spawn = (/usr/bin/mail -s %d-%h root) &
★ spawn = ってのがミソでマニュアル通りでは動きません。fingerdもブービー
トラップを掛けるのなら safe_fingerを使わないとループしてしまいますので注意。
もっともfingerdをそもそも inetd.confでコメントアウトしておく方が良いことは
間違いありません。(今回はコメントアウトして無効にしてありますので、気にせず
ALLをブービートラップしておきました。)

■動作確認
/etc/log/messages をcatして db.*ファイルの構文にエラーが無いか
ちゃんとnamedが動いているか確認すること。xntpdが動いてるか? 時間は同期が
取れてるか。ip_aliasが有効になってるか?確認。


Indexに戻る

★★★やっぱりsendmailも設定★★★


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
How to make up a Mail server
「FreeBSD2.2.7+xntpd/bind+sendmail8.9.2
  +CF-3.7+popperを使ったメールサーバの作り方」
 takamura@itoh.co.jp 高村和則 Jan.31,1999
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

上記のbind/xntpdをインストールしたマシンにsendmail等を載せてメールサーバを
作った記録です。インストールしたばかりのFreeBSD2.2.7Rには既にsendmail8.8.8
が動いていました。参考図書を読みあさった末、qmailが良いとかsendmailは危険が
いっぱいとか良からぬ事が沢山書いてあり、それではと思ってqmail/qpopperをイン
ストールしたが結局挫折。元に戻すだけで結構な重労働だったのでした。。。

まずsendmailをとってきます。

ftp.iij.ad.jpでもftp.sendmail.orgでも何処でも結構。getしてきたら

tar zxvf sendmail.8.9.2.tar.gz
でばらした後、
cd sendmail-8.9.2/BuildTools/OS/
してそこにある FreeBSDと言うファイルを以下の様に編集。

define('confMAPDEF', 'DNEWDB -DNIS -DMAP_REGEX')
の -DNIS を -DNAMED_BIND に変更して

cd sendmail-8.9.2/src します。

それから
./Build でコンパイル。終われば、もう src 以下に sendmailって言う完成品が
出来上がりです。

ps -aux で今現在sendmailが動いているか確認。もし動いていれば

kill -9 プロセスIDで殺します。動いていなければ次へ。

./Build install

でインストール完了です。この時点で再起動させても /etc/sendmail.cf が無い
若しくはちゃんと設定されていない為、起動時にエラーが出たり、やけにsendmail
を起動するのに時間が掛かったりするはずですので気にしないように。

一応ちゃんと今作ったsendmailが動くかどうかは

./sendmail -d0.1 -bt < /dev/null で確認できます。何もエラーが出なければ次
です。

キューディレクトリが有るかどうか確認。

cd /var/spool 以下に mqueueがありますか? 無ければ
mkdir /var/spool/mqueue
chmod -R 755 mqueue しておきます。

sendmail.cfをCFで作る前に起動時にちゃんとsendmailが機能できるように
/etc/rc.confを直しておきます。

##############################################################
###  Miscellaneous administrative options  ###################
##############################################################

cron_enable="YES"       # Run the periodic job daemon.
lpd_enable="NO"         # Run the line printer daemon.
lpd_flags=""            # Flags to lpd (if enabled).
sendmail_enable="YES"   # Run the sendmail daemon (or NO).
sendmail_program="/usr/sbin/sendmail"
sendmail_flags="-bd -q30m" # -bd is pretty mandatory.
dumpdev="NO"            # Device name to crashdump to (if enabled).
check_quotas="NO"       # Check quotas (or NO).
accounting_enable="NO"  # Turn on process accounting (or NO).
ibcs2_enable="NO"       # Ibcs2 (SCO) emulation loaded at startup (or NO).
linux_enable="NO"       # Linux emulation loaded at startup (or NO).
rand_irqs="NO"          # Stir the entropy pool (like "5 11" or NO).
clear_tmp_enable="NO"   # Clear /tmp at startup.
ldconfig_paths="/usr/lib/compat /usr/X11R6/lib /usr/local/lib" # shared library
search paths

と、sendmail関係を以上のようにしておきます。ちなみに
/etc/inetd.confにsmtp関係の記述があったら★間違いなく★コメントアウトしないと
動きません!(これに気づかずにえらい苦労した。)


sendmail.cfを作ります。

ftp.iij.ad.jp/pub/network/sendmailあたりからgetしてきて解凍。
cd CF-3.7W
make cleantools
make tools
make samples したあとStandardsディレクトリの中を見てみます。
沢山のサンプルがありますが、sendmail-v8.defと言うファイルをコピーします。

cp Standards/sendmail-v8.def sendmail.def

沢山のコメントアウトされた設定がありますが、以下に変更点及びコメントアウトを外
した部分を・・・(つまりこれだけ書いとけば動きます。)

# ★★ 最新の8.9.2だったので・・・
CF_TYPE=R8V8
# ★★パンダでもウサギでも何でも任意
DEF_ID='panda usagi'

# ★★ 以下も適当。
VERSION=3.7W
VERSION_SEPARATOR='--'
LOCAL_VERSION=`date +%D`

# ★★  FreeBSDは bsd4.4 と書くそうな。
OS_TYPE=bsd4.4

# ★★ DNSのMXに頼るのでyes
MX_SENDMAIL=yes
# ★★ 自分のマシンの主ドメイン(複数有る場合はipエイリアスじゃないやつを
#    指定しておきました。エイリアスの方のドメインでも良いかも。。。?不明)
MY_DOMAIN=itoh.co.jp
# ★★ さっきのドメインでの自マシン名
MY_NAME=dns
# ★★ おまじない。                                   # for V1/NMTC
OFFICIAL_NAME='$w.$m'                                   # for V5

# [acceptaddr]
# addresses which should be accepted as local
##ACCEPT_ADDRS='$m'     # can be used with R8 sendmail
##★★ 以下に記述したドメイン名のメールを受信すると言う事です。複数ある
#    場合は受信したいドメイン名とそのマシン名まで含めて記述。
##ACCEPT_ADDRS=$MY_DOMAIN
ACCEPT_ADDRS='dns.itoh.co.jp dns.itoh.net keikyo.net dns.keikyo.net tateshina.org dns.tateshina.org'

# ★★ これ何だか分からないけど、もともとコメントが外れてた。
BITNET=auto

# [indirect]
# for indirect delivery
# domain names to be deliverd directly (all/none/"domain names")
# ★★ 全部のメールを直接(自力)で届けると言うこと。
DIRECT_DELIVER_DOMAINS=all

# [smtpcheck]
# ★★ SPAM対策。どうやらtcp_wrapperみたいにsendmail.allow/denyの
# ★★ 記述により中継を制御するらしい。今回はその下のsendmail.localip/
# ★★ sendmail.localdomainを記述することにより一応対策。
MAIL_RELAY_RESTRICTION=yes
#WITH_OLD_CF=no # (just for smtpcheck.def)
##CHECK_HOST_ALLOW=/etc/sendmail.allow
##CHECK_HOST_DENY=/etc/sendmail.deny
#CHECK_RELAY_DEFAULT=allow # (allow/deny)
# LOCAL_HOST_* does not check senders address
LOCAL_HOST_IPADDR=/etc/sendmail.localip
##LOCAL_HOST_IPADDR=130.54.0
LOCAL_HOST_DOMAIN=/etc/sendmail.localdomain
##LOCAL_HOST_DOMAIN=sub.kyoto-u.ac.jp
#


■■■それで、
/etc/sendmail.localipは以下のように

172,16
210.145.46

/etc/sendmail.localdomain

itoh.co.jp
itoh.net
daieisc.co.jp
keikyo.net
tateshina.org
odn.ne.jp
odn.ad.jp
avis.ne.jp
janis.ne.jp
nifty.ne.jp

という風にメールを投げかけられる可能性のあるところを列挙。

sendmail.def が完成したら、

make sendmail.cf で作成。出来上がったら、

一応テスト。

sendmail -bt とやってテストモードでsendmailを動かし

/parse root
/parse takamura@itoh.co.jp
/parse takamura@dns.itoh.co.jp
/parse takamura@itoh.net
/parse takamura@dns.itoh.net
/parse takamura@ibm.com

等とやってどういう風に配送されるか見ます。いろいろ返っては来るけど、重要な
のは最後の行でmailer local云々と書いて有れば外には出さず、
mailer smtp,host hoge.hoge云々と書いて有れば外向けに出すと言うことです。
テストモードを抜けるときはctrl+\です。

sendmail.cfに問題が無さそうなら

cp sendmail.cf /etc
chown bin:bin /etc/sendmail.cf
chmod 444 /etc/sendmail.cf

とやっておきます。念のため再起動してから

telnet そのマシンのアドレス 25
でちゃんとsmtpサーバが機能してるか確認。

次はpopperのインストール。
portsがインストールされていてip reachableならば

cd /usr/ports/mail/popper
make

でおしまい。簡単です。(勝手にftpしてコンパイルまでやってくれる)

vipw でインストールに必要なアカウントpopを作ります。

pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin

と言うようなのを作っておきます。そして

make install

次。

/etc/inetd.conf の編集。今回はpopの制限をtcp_wrapperでやりますので

pop3    stream  tcp     nowait  root  /usr/local/libexec/tcpd /usr/local/libexec/popper

と言うように記述します。

/usr/local/etc/hosts.allow に

popper: .jp, 210.145.46.224/255.255.255.240, 210.170.69.48/255.255.255.240, 172.16.1.0/255.255.255.0, 
172.16.2.0/255.255.255.0

てな事を書いておきます。

必要ならば
/etc/aliases を編集して
newaliases しておきます。

後念のため再起動してみます。
一応別のマシンのメールソフトでアクセスしてみて
/var/log/maillog
をcat してみるとどうなっているかが分かるはずです。

これで最後・・・
DNSのMXレコードを自分宛に振るのを忘れないように。
Indexに戻る

★★★参考&役に立つURL★★★


IPアドレス・ドメイン名サーチ
SMTPの不正中継チェックページ
Proxyの不正中継チェックページ
MN128SOHOをOCN/ODNエコノミーで使うときの注意点
メールを受けるとcomsatからお知らせがうるさい時は

Indexに戻る

★★★FreeBSDのカーネル再構築★★★


 デフォルトのカーネルには必要のないものも含まれているので、起動時に繋がって
いないSlaveやセカンダリのMaster/SlaveのIDEディスクを探しに行ったりで良いことは
ありません。カーネルの再構築をします。

 まずカーネルのソースが有るか確認、無ければ /stand/sysinstallからConfigure -->
Distribution --> src --> DES以外のkernel srcでまずはインストールします。


cd /usr/src/sys/i386/conf
cp GENERIC [自分でこれから作るカーネルの名前]

結局このコピーしたファイルを編集することになります。

#
# GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#
# For more information read the handbook part System Administration -> 
# Configuring the FreeBSD Kernel -> The Configuration File. 
# The handbook is available in /usr/share/doc/handbook or online as
# latest version from the FreeBSD World Wide Web server 
# 
#
# An exhaustive list of options and more detailed explanations of the 
# device lines is present in the ./LINT configuration file. If you are 
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
#	$Id: GENERIC,v 1.77.2.4 1997/02/22 20:31:24 joerg Exp $

machine		"i386"

# 自分にあうもの以外はコメントアウトする---------------------------------------
cpu		"I386_CPU"
cpu		"I486_CPU"
cpu		"I586_CPU"
cpu		"I686_CPU"
# -----------------------------------------------------------------------------

# "GENERIC"を自分のカーネルの名前に書き換える----------------------------------
ident		GENERIC
# -----------------------------------------------------------------------------

maxusers	10

# コプロを積んでいる場合コメントアウトする-------------------------------------
options		MATH_EMULATE		#Support for x87 emulation
# -----------------------------------------------------------------------------

options		INET			#InterNETworking
options		FFS			#Berkeley Fast Filesystem
options		NFS			#Network Filesystem
options		MSDOSFS			#MSDOS Filesystem
options		"CD9660"		#ISO 9660 Filesystem
options		PROCFS			#Process filesystem
options		"COMPAT_43"		#Compatible with BSD 4.3 [KEEP THIS!]
options		SCSI_DELAY=15		#Be pessimistic about Joe SCSI device
options		BOUNCE_BUFFERS		#include support for DMA bounce buffers
options		UCONSOLE		#Allow users to grab the console
options		FAILSAFE		#Be conservative
options		USERCONFIG		#boot -c editor
options		VISUAL_USERCONFIG	#visual boot -c editor

# Install先がSCSIならばwd0をsd0に書き換える------------------------------------
config		kernel	root on wd0
# -----------------------------------------------------------------------------


controller	isa0
controller	eisa0
controller	pci0

controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr

# FD-Driveの数だけ残してコメントアウトする-------------------------------------
disk		fd0	at fdc0 drive 0
disk		fd1	at fdc0 drive 1
disk		fd2	at fdc0 drive 2
disk		fd3	at fdc0 drive 3
# -----------------------------------------------------------------------------

# Tape-Driveがない場合コメントアウトする---------------------------------------
tape		ft0	at fdc0 drive 4
# -----------------------------------------------------------------------------

controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr

# prime-IDE-Driveの数だけ残してコメントアウトする------------------------------
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1
# -----------------------------------------------------------------------------

controller	wdc1	at isa? port "IO_WD2" bio irq 15 vector wdintr

# second-IDE-Driveの数だけ残してコメントアウトする-----------------------------
disk		wd2	at wdc1 drive 0
disk		wd3	at wdc1 drive 1
# -----------------------------------------------------------------------------

# IDE-CRROMがない場合すべてコメントアウトする----------------------------------
options		ATAPI		#Enable ATAPI support for IDE bus
options		ATAPI_STATIC	#Don't do it as an LKM
device		wcd0	#IDE CD-ROM
# -----------------------------------------------------------------------------


# ここからSCSIの部分です。-----------------------------------------------------
# 自分に合うもの以外はすべてコメントアウトする

# A single entry for any of these controllers (ncr, ahb, ahc, amd) is
# sufficient for any number of installed devices.
controller	ncr0
controller	amd0
controller	ahb0
controller	ahc0
controller	bt0	at isa? port "IO_BT0" bio irq ? vector bt_isa_intr
controller	uha0	at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
controller	aha0	at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr
controller	aic0	at isa? port 0x340 bio irq 11 vector aicintr
controller	nca0	at isa? port 0x1f88 bio irq 10 vector ncaintr
controller	nca1	at isa? port 0x350 bio irq 5 vector ncaintr
controller	sea0	at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr

controller	scbus0

device		sd0

device		od0	#See LINT for possible `od' options.

device		st0

device		cd0	#Only need one of these, the code dynamically grows

device		wt0	at isa? port 0x300 bio irq 5 drq 1 vector wtintr
device		mcd0	at isa? port 0x300 bio irq 10 vector mcdintr

controller	matcd0	at isa? port 0x230 bio

device		scd0	at isa? port 0x230 bio

# ここまでSCSIの部分です。-----------------------------------------------------


# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device		vt0	at isa? port "IO_KBD" tty irq 1 vector pcrint
#options		PCVT_FREEBSD=210	# pcvt running on FreeBSD >= 2.0.5
#options		XSERVER			# include code for XFree86
#options		FAT_CURSOR		# start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options		PCVT_SCANSET=2		# IBM keyboards are non-std

# Mandatory, don't remove
device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr


# ラップトップの設定項目です。すべてコメントアウトする-------------------------
#
# Laptop support (see LINT for more options)
#
#device		apm0    at isa?	disable	# Advanced Power Management
#options		APM_BROKEN_STATCLOCK	# Workaround some buggy APM BIOS
# PCCARD (PCMCIA) support
#controller	crd0
#device		pcic0	at crd?
#device		pcic1	at crd?
# -----------------------------------------------------------------------------


# シリアルポート個数だけ残してコメントアウトする-------------------------------
device		sio0	at isa? port "IO_COM1" tty irq 4 vector siointr
device		sio1	at isa? port "IO_COM2" tty irq 3 vector siointr
device		sio2	at isa? disable port "IO_COM3" tty irq 5 vector siointr
device		sio3	at isa? disable port "IO_COM4" tty irq 9 vector siointr
# -----------------------------------------------------------------------------

# パラレルポート個数だけ残してコメントアウトする-------------------------------
device		lpt0	at isa? port? tty irq 7 vector lptintr
device		lpt1	at isa? port? tty
# -----------------------------------------------------------------------------

# Bus-Mouseがない場合コメントアウトする----------------------------------------
device		mse0	at isa? port 0x23c tty irq 5 vector mseintr
# -----------------------------------------------------------------------------

# PS2-Mouseがない場合コメントアウトする----------------------------------------
device		psm0	at isa? disable port "IO_KBD" conflicts tty irq 12 vector psmintr
# -----------------------------------------------------------------------------


# ここからNIC(Network Interface Card)の部分です。------------------------------
# 自分に合うもの以外はすべてコメントアウトする

# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.
device de0
device fxp0
device vx0

device ed0 at isa? port 0x280 net irq  5 iomem 0xd8000 vector edintr
device ed1 at isa? port 0x300 net irq  5 iomem 0xd8000 vector edintr
device ie0 at isa? port 0x360 net irq  7 iomem 0xd0000 vector ieintr
device ep0 at isa? port 0x300 net irq 10 vector epintr
device ex0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector exintr
device fe0 at isa? port 0x300 net irq ? vector feintr
device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr
device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr
device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr

# ここまでNIC(Network Interface Card)の部分です。------------------------------


pseudo-device	loop
pseudo-device	ether
pseudo-device	log
pseudo-device	sl	1
# ijppp uses tun instead of ppp device
#pseudo-device	ppp	1
pseudo-device	tun	1
pseudo-device	pty	16
pseudo-device	gzip		# Exec gzipped a.out's

# KTRACE enables the system-call tracing facility ktrace(2).
# This adds 4 KB bloat to your kernel, and slightly increases
# the costs of each syscall.
options		KTRACE		#kernel tracing


編集が終わったら

config [カーネルの名前] 
cd ../../compile/ [カーネルの名前] 
make depend ; make
make install

でおしまいです。
 古いカーネルは/kernel.oldとして残っていますので、新しいカーネルがうまく
起動しない場合は、起動時のBoot:と表示されたときにkernel.oldとすれば古いカー
ネルで起動します。




Indexに戻る
高村のホームへ戻る
いとうのホームへ戻る
mailto:takamura@itoh.net