- The added line is THIS COLOR.
- The deleted line is THIS COLOR.
*作成中のドキュンメント &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