test
----
*作成中のドキュンメント &size(8){....DQNメント}; [#ve58514f]
-Target SystemとBuild Baseのバージョンは合せた方が無難
-カーネルを作る
-Originateをcdboot下にコピー
-要らんファイルを消す。
-rdrootをvnconfig→マウント
-MAKEDEV
-make vnoff
-make cdrburn
----
 tools-3.8
 tools-3.8/Makefile
 tools-3.8/bsd
 tools-3.8/bsd.orig
 tools-3.8/cdroot
 tools-3.8/lib
 tools-3.8/lib/RDROOT
 tools-3.8/lib/cdboot
 tools-3.8/lib/cdbr
 tools-3.8/lib/elfrdsetroot.c
 tools-3.8/rdroot
 tools-3.8/rdroot.img
 tools-3.8/rdroot.orig
 tools-3.8/rdroot.orig/bin
 tools-3.8/rdroot.orig/boottmp
 tools-3.8/rdroot.orig/boottmp/init
 tools-3.8/rdroot.orig/boottmp/ksh
 tools-3.8/rdroot.orig/boottmp/ln
 tools-3.8/rdroot.orig/boottmp/login.conf
 tools-3.8/rdroot.orig/boottmp/mount
 tools-3.8/rdroot.orig/boottmp/mount_cd9660
 tools-3.8/rdroot.orig/boottmp/mount_ffs
 tools-3.8/rdroot.orig/boottmp/mount_mfs
 tools-3.8/rdroot.orig/boottmp/rc
 tools-3.8/rdroot.orig/boottmp/sh
 tools-3.8/rdroot.orig/boottmp/sysctl
 tools-3.8/rdroot.orig/cdrom
 tools-3.8/rdroot.orig/dev
 tools-3.8/rdroot.orig/dev/MAKEDEV
 tools-3.8/rdroot.orig/dev/*
 tools-3.8/rdroot.orig/etc
 tools-3.8/rdroot.orig/mfs
 tools-3.8/rdroot.orig/mnt
 tools-3.8/rdroot.orig/sbin
 tools-3.8/rdroot.orig/tmp
 tools-3.8/rdsetroot
----
マシンAがコピー。Bがコピー先
 Machine-A : Originate
 [/--+--altroot/ ]
 [   |           ]
 [   +--bin/     ]
 [   |           ]         Machine-B : Target
 [   +--mnt/--------NFS-----/--+--altroot/ ]
 [   |           ]         [   |           ]
 [   :           ]         [   +--bin/     ]
                           [   :           ]
マシンBをNFSサーバとし、マシンBのNFSクライアントの/mntにマウント。
*PFを使用したアドレス変換の例 
仕事で要になりそうなんで、予備実験の後ちょびっと書いてみた備忘録
**要件 
-異なるネットワークに属するホストA、ホストB間で通信したい。
-通信は両方のネットワークに接続されたゲートウェイで中継する。
-ホストA、ホストBのルーティング設定などをいじりたくないため;
--Host Aは同一ネットワークに属するゲートウェイのL側(下図参照)と通信しているように見せかけたい。
--同様に、Host BからはゲートウェイのR側と通信しているように見せかけ、実際にはHost Aと通信するようにしたい。
-使用プロトコルはHTTP及びFTPを想定。
--Host A及びBではproxyの存在などを意識せず、透過的に通信できるようにしたい。
-プロトコルとして、アクティブモードのFTPを使用することが予想される。
--そのため、Host A, Host BのどちらからでもTCPのセッションを開始できるようにする要がある。
**システム構成 
下図のとおり
    addr_A                    addr_B
 +------+        +-------+        +------+
 |Host A|------->|GateWay|------->|Host B|
 |      |<-------|       |<-------|      |
 +------+        +-------+        +------+
              if_L    if_R
            addr_L  addr_R
 
            ネットワーク構成図
(表記)
-Host A, Host BのIPアドレスをそれぞれ、addr_A, addr_Bとする
-GatewayのHost A側のネットワークインターフェース名をif_L、そのIPアドレスをaddr_L。
同様に、Host B側のネットワークインターフェース名をif_R、そのIPアドレスをaddr_Rとする。
**ソリューション 
-A->B方向の変換
--始点 addr_A, 終点 addr_L のパケットを if_L にて Host Bに向けなおす。/etc/pf.confの記述行は以下のようになる;
 rdr pass on if_L from addr_A to addr_L -> addr_B
''pass''は、フィルタリングルールをバイパスするための指定
--rdrによって向け直されたパケットは始点アドレスがaddr_Aのままなので、
Host Bからの復路のパケットの終点アドレスがaddr_Aとなり、このままでは戻りパケットがHost Aに到達しない。~
よって往路のパケットがif_Rを通過する時に、始点アドレスを書き換える。
 binat pass on if_R from addr_A to addr_B -> if_R
binatを使用するのは、アドレス変換に伴いポートが変ってしまわないための意味もある。

machine-B : /etc/exports
 / -maproot=root
-B->A方向の変換
--B->A方向にもセッションを張れるようにするためには、
A->Bで挙げた例と対称な記述を付け加える。
 rdr pass on if_R from addr_B to addr_R -> addr_A
 binat pass on if_L from addr_B to addr_A -> if_L
**実行結果 
-HTTPに関しては、問題なく実行できた
-FTPは、ログインまでは可能であったが、ディレクトリの一覧やファイルの送受信は不能。
--FTPではデータコネクションを張るときにPORTコマンドを相手に送るが、このパラメータに生のIPアドレスが含まれているため、それに対して直接接続を張ろうとする。このため、うまく行かない~
→ FTPに関してだけは ftp-proxy(8)を使用する要がある。
**感想とか 
-PFでは、フィルタリングルールはlast matchだが、nat ruleはfirst matchらしい
-FTPマンドクセ

machine-B
 # rpc.portmap
 # nfsd -tun 4
 # mountd
 # rpc.lockd

machine-A
 # mount -t nfs machine-b:/ /mnt


Front page   New Page list Search Recent changes   Help   RSS of recent changes