このページも古くなってきました. こちらも参考にしてくださるときっとお互い幸せ・・・・ |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
network_interfaces="de0 lo0"これでリブートすれば、マシンにループバックアドレス127.0.0.1 の他に3つのアドレスが付きます。
ifconfig_de0="inet 10.0.0.5 netmask 255.255.255.0"
ifconfig_de0_alias0="inet xxx.yyy.zzz.vvv netmask 255.255.255.240"
ifconfig_de0_alias1="inet xxx.yyy.zzz.www netmask 255.255.255.255"
ifconfig_lo0="inet 127.0.0.1"
10.0.0.5 → 内部ネットワーク用
xxx.yyy.zzz.vvv → ゲートウェイとしてのアドレス
xxx.yyy.zzz.www → ネームサーバーとしてのアドレス
(1) 不要なデバイスのコメントアウトカーネルの再構築は以下の手順で行います。(これらは全てrootで行います)
(2) maxusersの変更
(3) ipfwを有効にする
# cd /usr/src/sys/i386/confWWWサーバー等に使う場合、maxusers行をmaxusers 50位に変更します。
# cp GENERIC MYKERN GENERICカーネルを
… … … コピーして、新しい名前を
… … … 付けます
… … …
… … … viなどでident行を変更し
… … … MYKERNなどファイル名
… … … と同じにします
… … …
… … … その他必要な変更をします
… … …
# config MYKERN
# cd ../../compile/MYKERN
# make depend; make 新カーネルのコンパイル
# make install インストール
# reboot
maxusers 50
… … …
options GATEWAY
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
# sh ./install.sh usbin sbinhttp://www2a.meshnet.or.jp/~junichi/ から2.2.5Jに対するパッチをとってきます。
# sed 's/.$//' nat.patch > nat1.patch準備ができたら、いよいよpppにパッチをあて、インストールします。
# cd /usr/src/usr.sbin/ppp
# patch < nat1.patch
# make; make install
ppp接続を定期的に確認し、異常があれば再接続するスクリプトを、 前述のUNIX MAGAZINEの記事を参考にして作成しました。# cat /etc/ppp.conf default: set taddr 10.0.0.0/8 NATで変換するアドレスを指定 set device /dev/cuaa0 set speed 115200 disable lqr deny lqr disable pred1 deny pred1 accept vjcomp enable vjcomp set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 15 \"\" ATE1Q0V1X3$N1=1 OK-AT-OK \\dATDT\\T TIMEOUT 120 CONNECT" set log Phase Connect Carrier tun set timeout 180 set openmode active # ocn-eco: accept pap set mru 1500 disable lqr deny lqr set ifaddr xxx.yyy.zzz.vvv aaa.bbb.ccc.ddd/0 aaa.bbb.ccc.dddはOCN側のゲートウェイのアドレス set phone 0 set authname set authkey set dial "ABORT NO\\sCARRIER ABORT BUSY \"\" ATZ OK ATE1Q0V1X3&C1&D2 OK ATD\\T CONNECT" set login "TIMEOUT 15" set timeout 0 # cat /etc/ppp/ppp.linkup MYADDR: add 0 0 HISADDR
これで、/etc/ppp/ppp.keep で接続し、 pingが通らなくなると、自動的にpppが再接続されます。# cat /etc/ppp/ppp.keep #! /bin/sh OCN_GW="210.145.243.28" STR_LOST="100% packet loss" while [ 1 ] do if [ -e /var/run/tun0.pid ]; then PING_RESULT=`/sbin/ping -c 3 $OCN_GW|grep "packet loss"|sed "s/^.*, //"` else PING_RESULT=$STR_LOST fi if [ "$PING_RESULT" = "$STR_LOST" ]; then echo "*** OCN connect lost ***" if [ -e /var/run/tun0.pid ]; then kill -KILL `cat /var/run/tun0.pid` rm -f /var/run/tun0.pid sleep 2 fi /usr/sbin/ppp -ddial ocn-eco date >>/var/log/ppp.ocn date|mail -s OCN-reconnect root fi sleep 30 done exit 0 #
firewall_enable="YES"そして、/etc/rc.networkの中の/etc/rc.firewallを探し、これを/etc/rc.ipfwに変更します。 これで、スクリプトファイル/etc/rc.ipfwを作成して、自由にパケットフィルタリングの ルールを設定できます。
firewall_type="UNKNOWN"
(1)IPスプーフィングパケットの禁止以上のルールで作成した設定ファイルを示します。
(2)LANから出て行くパケットは無条件に許可
(3)ftp,smtp,DNS,http,authentication,shttpのtcpセッション要求を許可
(4)DNSのudpパケットを許可
(5)セッションが確立していたらパケットを通す
(6)icmpパケットは許可
(7)パケットを拒否したらログを残す
スクリプトができたら、以下でipfwにルールをロードします。# cat /etc/rc.ipfw #!/bin/sh # flush entries ipfw -f flush # testing rule # deny ip spoofing packets ipfw add deny ip from xxx.yyy.zzz.uuu/28 to xxx.yyy.zzz.uuu/28 via tun0 ipfw add deny ip from 10.0.0.0/16 to xxx.yyy.zzz.uuu/28 via tun0 # allow localhost ipfw add allow ip from 127.0.0.1 to any # allow from LAN ipfw add allow ip from 10.0.0.0/16 to any ipfw add allow ip from xxx.yyy.zzz.uuu/28 to any # allow following require from inet for port in 20 21 25 53 80 113 443 do ipfw add allow tcp from any to any $port setup done ipfw add allow tcp from any 20 to any setup # allow following udp for port in 53 do ipfw add allow udp from any to any $port ipfw add allow udp from any $port to any done # allow established tcp ipfw add allow tcp from any to any established # allow icmp ipfw add allow icmp from any to any # log ipfw add deny log ip from any to any
リブートしたときには、/etc/rc.networkのなかで、 先程の変更で/etc/rc.ipfwが呼ばれるので自動的にルールがロードされます。# /etc/rc.ipfw
ipfwで用いられたルールの統計# ipfw list
# ipfw -a l
/etc/hosts ホスト名の検索順序を設定します(ここでは、hostsファイル→DNSにします) /etc/host.conf 内部ホストのアドレスの設定をします /etc/resolv.conf ネームサーバーのアドレスを設定します
# cat /etc/host.conf このファイルでホスト名の解決の方法を定義 # hosts まず、hostsファイルを探す bind なければ、DNSで探す # cat /etc/hosts IPアドレス ホスト名 [別名]...って感じに記述します 127.0.0.1 localhost.tatoeba.com localhost 10.0.0.5 seven.tatoeba.com seven 10.0.0.2 client1.tatoeba.com client1 10.0.0.3 client2.tatoeba.com client2 10.0.0.4 client3.tatoeba.com client3 # cat /etc/resolv.conf ネームサーバーの指定です domain tatoeba.com ドメイン名 nameserver xxx.yyy.zzz.www プライマリネームサーバーです nameserver 203.139.160.103 セカンダリだよ #
# cat /etc/named.boot directory /etc/namedb データファイルを置くディレクトリ cache . named.root ルートキャッシュファイル名 primary 0.0.127.in-addr.arpa localhost.rev ループバックアドレス逆引きファイル primary tatoeba.com tatoeba.zone ゾーン正引きファイル primary uuu.zzz.yyy.xxx.in-addr.arpa tatoeba.rev ゾーン逆引きファイル # cat /etc/namedb/localhost.rev このファイルはだいたいこういう感じに書けば良い @ IN SOA ns.tatorba.com. postmaster.tatorba.com. 管理者のアドレスは@を.にかえてね ( 1998091601 Serial ファイルを更新したら増やして、namedを再起動してね 10800 Refreshセカンダリが読みに来る間隔だよ(分) 3600 Retry Refreshが失敗したときのRetryの待ち時間 3600000 Expire セカンダリのデータの有効期限 86400 ) TTL その他のネームサーバーにキャッシュされたデータの有効期限 IN NS ns.tatoeba.com. プライマリネームサーバーを指定 IN NS ns-tk021.ocn.ad.jp. ここにはセカンダリ 1 IN PTR localhost. ループバックの逆引きレコード # cat /etc/namedb/tatoeba.zone ゾーン正引きファイル @ IN SOA ns.tatoeba.com. postmaster.tatoeba.com. ( 1998091601 10800 3600 3600000 86400 ) IN MX 10 ns.tatoeba.com. メールエクスチェンジャを指定 IN NS ns.tatoeba.com. ネームサーバー指定 IN NS ns-tk021.ocn.ad.jp. localhost. IN A 127.0.0.1 正引きレコードを並べます tatoeba.com. IN A xxx.yyy.zzz.uuu gw.tatoeba.com. IN A xxx.yyy.zzz.vvv ns.tatoeba.com. IN A xxx.yyy.zzz.www seven.tatoeba.com. IN CNAME ns.tatoeba.com. ホストの別名を定義できます www.tatoeba.com. IN CNAME ns.tatoeba.com. ftp.tatoeba.com. IN CNAME ns.tatoeba.com. mail.tatoeba.com. IN CNAME ns.tatoeba.com. # cat /etc/namedb/tatoeba.rev 逆引きファイル @ IN SOA ns.tatoeba.com. postmaster.tatoeba.com. ( 1998091601 10800 3600 3600000 86400 ) IN NS ns.tatoeba.com. IN NS ns-tk021.ocn.ad.jp. IN PTR tatoeba.com. ドメインの逆引きレコード vvv IN PTR gw.tatoeba.com. ホストの逆引きレコードを並べる www IN PTR ns.tatoeba.com. #
bindのデータファイルを更新する時は、必ず、serialを増加させます。 でないと、セカンダリはデータの更新を認知できません。# /usr/sbin/named
# kill -HUP `cat /var/run/named.pid`
# mkdir /usr/src/CF # cd /usr/src/CF # ftp ftp.iij.ad.jp Connected to ftp.iij.ad.jp. 220 ftp2.iij.ad.jp FTP server (Version wu-2.4.2-academ[BETA-18](1) Mon Sep 7 21:11:32 JST 1998) ready. Name (ftp.iij.ad.jp:motoi): anonymous 331 Guest login ok, send your complete e-mail address as password. Password:xxxxxxxx 230-* Welcome, IIJ archive user! This is an FTP server of IIJ. If have any ........ ........ ........ 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/network/sendmail 250 CWD command successful. ftp> ls CF* 200 PORT command successful. ........ ........ ........ -rw-r--r-- 1 root daemon 194285 Nov 13 1993 CF-3.1W12.tar.Z ........ ........ ........ -r--r--r-- 1 root wheel 286781 Sep 13 1997 CF-3.6Wbeta7.tar.gz ........ ........ ........ ftp> get CF-3.6Wbeta7.tar.gz ........ ........ ........ 200 PORT command successful. ........ ........ ........ ftp> quit 221 Goodbye. # # zcat CF-3.6Wbeta7.tar.gz | tar xvf - # cd /usr/src/CF-3.6Wbeta7 # make clean tools; make tools
# cat /usr/src/CF-3.6Wbeta7/sendmail.def sendmail.defの設定例 CF_TYPE=R8V7 sendmail8.8以降を用いる OS_TYPE=bsd4.4 OSの種類 FROM_ADDRESS='$m' RECIPIENT_GENERIC=yes REWRITE_GENERIC_FROM=lower ACCEPT_ADDRS='$m' ACCEPT_LOWER=yes MAIL_RELAY_RESTRICTION=yes 自ドメイン以外からのメールをリレーしない REJECT_SOURCE_ROUTE_RELAY=yes LOCAL_HOST_IPADDR=/etc/sendmail.localip 自ドメインの定義ファイル指定 LOCAL_HOST_DOMAIN='$m' ALLOW_RECIPIENT_DOMAIN='$m' # # cat /etc/sendmail.localip 自ドメインの定義ファイル 10.0.0 10.0.0.0/24からのメールは自ドメインからとみます
# make sendmail.cf # cp sendmail.cf /etc/ # kill -HUP `cat /var/run/sendmail.pid`
/etc/inetd.confのpop3の行を修正# gzip -cd qpopper2.53.tar.Z | tar xvfp - # cd qpopper2.53; ./configure # make # mv popper /usr/local/libexec/
pop3 stream tcp nowait root /usr/local/libexec/popper popperinetdをリスタートします。
# kill -HUP `cat /var/run/inetd.pid`
# cd /cdrom/packages/wwwapacheを動作させるためには、以下の設定ファイルが必要です。 それぞれプロトタイプが/usr/local/etc/apache/xxx.xxx-distという名前で 置いてあるはずですので、 編集して、/usr/local/etc/httpd/xxx.xxxとして置きます。
# pkg_add apache-1.2.4.tgz
httpd.conf サーバー起動のための基本設定 access.conf CGIの実行許可やリソースへのアクセス制限 srm.conf データを置くディレクトリ等の設定 mime.types apacheが扱うファイルの拡張子の登録 # cat httpd.conf ServerType standalone WWWサーバーを常駐させます Port 80 WWWサーバーのポートです StartServers 2 起動時のサーバー数 MaxServers 10 最大のサーバー数 User nobody サーバーの実行ユーザー Group nogroup サーバーの実行グループ ServerAdmin webmaster@tatoeba.com 管理者のアドレス ServerRoot /usr/local/etc/httpd サーバーのホームディレクトリ ErrorLog logs/error_log エラーログファイル TransferLog logs/access_log アクセスログファイル Timeout 300 送受信のタイムアウト PidFile /var/run/httpd.pid pidファイル名 ServerName www.tatoeba.com サーバー名 # cat access.confOptions All # cat srm.conf DocumentRoot /usr/local/etc/httpd/htdocs ドキュメントのルート UserDir public_html ユーザーごとのドキュメントルート DirectoryIndex index.html デフォルトファイル名 ReadmeName README ディレクトリのリスト表示に使うファイル名 HeaderName HEADER IndexIgnore *.c インデックスで表示しないファイル AccessFileName .htaccess アクセス制御ファイル DefaultType text/plain デフォルトのファイル形式 AddEncoding x-compress Z データの解凍方式 AddEncoding x-gzip gz AddType text/x-server-parsed-html .html サーバーで扱う新しいMIMEタイプ AddType application/x-httpd-cgi .cgi AddType text/x-imagemap .map
# /usr/local/sbin/httpd -d /usr/locl/etc/httpd
# chmod a+x newcommand # mv newcommand /usr/local/bin/ # rehash
別名: 転送先名と設定すれば、メールが、別名→転送先名と転送されます.
# newaliasesを実行して新しい別名をシステムに読み込ませる必要があります。
# fdformat fd0 # disklabel -rw fd0 fd1440 # newfs -tz -u18 -l1 fd0 (# mkdir /fd) # mount /dev/fd0 /fd
これで、mcopyなどのMS-DOSライクなコマンドを用いることができます。 詳しくは、manやpkg_infoで調べて下さい。# pkg_add mtools-3.8.tgz
# fdformat /dev/rfd0.1440 # mkdosfs -f 1440 /dev/rfd0
# tar cf - .|(cd ターゲットのディレクトリ; tar xvBf -)
**方法2**# ls /var/db/pkg
# pkg_info -a
検索用のシェルスクリプトgropeを作成しておくと便利です。# cd / # find / -print >/usr/local/etc/files.all
これであとは、grope [検索するファイル]で短時間に検索できます。 cronを使って、files.allを毎日更新すれば、常に1日以内の新しい情報が 得られます。crontab -eで以下の行を追加し、files.allを更新するスクリプト files.updateを作成しておきます。# cat /usr/local/bin/grope if [ 'x'$1 = x'' ]; then echo "usage: grope <file|dir to be found>" exit 1 fi grep $1"$" /usr/local/etc/files.all # chmod ugo+x /usr/local/bin/grope
crontab -lでcronにプロセスが追加されたことを確認します。 時刻の指定の1-5カラムは、分(0-59)、時(0-23)、日(1-31)、月(1-12)、 曜日(0-7)です。MAILTO=root 15 5 * * * /usr/local/bin/files.update #cat /usr/local/bin/files.update mv /usr/local/etc/files.all /usr/local/etc/files.prev find / -print >/usr/local/etc/files.all