柏崎@北海道です.

その後,やっぱり通信出来なくなったり,設定を投入したら OK だったのに
再起動したら NG とかいろいろありまして,ようやく整理する事が出来まし
た.現在は以下のような構成で動いています.

                host
            +------------+                    jail/www
       bge0 |     pf     |       bge0 alias +-----------+
 -----------+[port80 rdr]+------------------+80  apache +
 133.87.a.b |   [ nat ]  |     192.168.0.20 +-----------+
            +------------+

ポイントだったのは host 側の pf の設定でした.nat の設定で

  ext_if="bge0"
  table <private> const { 10/8, 172.16/12, 192.168/16 }
  nat on $ext_if from 192.168.0/24 to ! <private> -> ($ext_if)

のように記述していたのですが,bge0 に alias が設定されている状態では
nat の規則が以下のように展開されまして,

  % sudo pfctl -s nat
  nat on bge0 inet from 192.168.0.0/24 to ! <private> -> (bge0) round-robin

133.87.a.b と 192.168.0.20 が round-robin で利用される事になってしま
って通信出来ないという状態になったのではないかと.

ということで,pf.conf を

  ext_addr="133.87.a.b"
  nat on $ext_if from 192.168.0/24 to ! <private> -> $ext_addr

にしまして,

  % sudo pfctl -s nat
  nat on bge0 inet from 192.168.0.0/24 to ! <private> -> 133.87.a.b

となって jail/www 側からの通信が出来るようになりました.

ホストにグローバルアドレス,jail側がプライベートの時に NATを使わなけ
ればいけない事をそもそも確信出来ていなかった上に,pfで redirect だけ
は使っていたので,外部→ jail/wwwへのアクセスが出来て,何で jail/www
→外部へのアクセスが出来ないのだろうかと懊悩する事になったというオチ
です :-)

jail + NATの構成でまとまった情報源がなかったので,今回の構築をどこか
でまとめておこうと思います.みなさまからの情報に多謝.

-- 
柏崎 礼生 (Hiroki Kashiwazaki)@HUIST
Assistant Professor @ Graduate School of Information Science and
Technology, Hokkaido University
mailto:[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]
Tel:+81-11-706-2056 (Office), +81-11-706-2998 (Takai Lab.)

メールによる返信