Xen 徹底攻略 第2版を読みながら、ブリッジ接続じゃない方法でDomain-Uを公開しようと思ったら、うまくいかなかった。というか、よくわからなかったというのが正しいか…。勘違いしている可能性が大。
ブリッジ接続にするとDomain-0と同様のネットワークに属している必要があるので、Domain-0のeth0にグローバルIPを与えるとDomain-U全部にもグローバルIPを与える必要があるんじゃないかと思った。グローバルIPはできれば1個で、というふうにうちの会社のネットワーク管理者に言われたので、NAPT(IPマスカレード)で公開するのがよいと思われたので、ブリッジじゃない接続にして仮想LANを設置すればいいのかなと思った。そこでXen本に従ってやってみたのだが、うまくいかず。本が悪いのか俺が悪いのかは定かではないが、繋がらないので前に進めない。
Domain-0でifconfigしてみたら、virbr0というのがあって、これにIPが192.168.122.1というのが振られている。こんな設定したことないのでこいつが何者さえかわかってなかったのであるが、ググってみたらどうもDomain-0内にある仮想ルータらしい。ということは、この仮想ルータに接続するようにDomain-Uのネットワーク設定を行って、Domain-0のiptablesでNAPTすればやりたいことはできそうであるなぁと思った。
Xenの標準設定の状態でvirbr0に接続するようにDomain-Uの設定を行って、Domain-Uからインターネットに向けてpingやtracerouteを行ってみたら、不達。virbr0からeth0に行けてない?xenbr0の存在がよくない?
/etc/xen/xend-config.sxpを編集して、NATにしてみた。こうしたら、xenbr0がなくなって、192.168.122.0のネットワークからインターネットにアクセスできるようになった。うーむ、この設定でいいのだろうか?別にxenbr0があってもできそうな気がするのだが…。
#(network-script network-bridge) #(vif-script vif-bridge) (network-script network-nat) (vif-script vif-nat)
で、今の構成がこうなってる。まだDomain-0をインターネットに公開していないので、ローカルIPです。
外部からのアクセスをDomain-Uに中継するためにDomain-0でポートフォワーディングする必要があるわけですが、ネットワークエンジニア経験やサーバ構築経験はあるくせして、iptablesの設定ってほとんどやったことがない(ネットワークはシスコの機器ばっかりだったから、そっちのコマンドばっかり勉強してたからです!でももう忘れた…)。iptablesは自宅サーバの場合は出来合いのiptablesのシェルスクリプトを自分用にちょこっと改変して使ってたので、何やってるかはわかるけど、自分では書けないというか…。頭を抱えながらも、iptablesの説明をしてくれているページを見ながらNATの設定をやってみたら、外部からDomain-UのWWWサーバにアクセス出来た!!
iptablesは奥が深いので、ものすごい情報量。
もっと勉強しないとなぁ。
Domain-0にリバースプロキシ組めば、グローバルIP1つで色々と面白いことできるんじゃないかな〜!と思うのですが、リバースプロキシもやったことないので、勉強が必要です。サーバに詳しい人にまた聞いてみよう。