ログ日記

作業ログと日記とメモ

ネットワークのテスト環境をVMwareで真面目に

 ──┐        ┌──
     ├─┬──┤
 ──┘  │    └──
       host OS
         │192.168.1.10
 ====================
        VMware
 ====================
         │bridge 192.168.1.11,192.168.1.12,...
 ┌───┴───┐                      ┌───────┐
 │  wan router  │                      │global servers│
 └───┬───┘                      └───┬───┘
         │1.2.3.1/24       vmnet5               │1.2.3.17/28
         ├───────────────────┤
         │1.2.3.2/28                            │1.2.3.129
 ┌───┴───┐192.168.1.1/24        ┌───┴───┐
 │  lan router  ├─────┬─────┤ local router │
 └───┬───┘          │       ↑ └───┬───┘
         │192.168.0.1/24    │  192.168.1.2/24  │192.168.2.1/24
         │                  │                  │
 ┌───┴───┐  ┌───┴───┐  ┌───┴───┐
 │   servers... │  │inner servers │  │   clients... │
 └───────┘  └───────┘  └───────┘
      vmnet2               vmnet3              vmnet4

まだ出来てない部分もあるけど、こんな感じで想定。
host os はリアルネットワークの inner servers に位置する。
外部からテスト用のサーバに接続する場合は 192.168.1.11 を指定すると、wan router が 1.2.3.11 などの仮想グローバルIPに変換して lan router が 192.168.0.11 などの仮想サーバ用IPに変換して servers に到達する。
これは現在の環境をほぼそのまま書いていて(いいのか?)lan routerはグローバルIPを16個管理、local router はテスト用回線&社内クライアント用回線を表している。


vmnet5は 1.2.3.0/24 でも 1.2.0.0/16 でも良い・・と思う。仮想NICの設定は変えていなくて、仮想NIC自体は192.168で設定されたままだ。それでも仮想NICに繋ぐ端末同士のIPに矛盾がなければ上手く動くようだ。


wan router は仮想WAN(?)とリアルネットワークを繋ぐNATで、global servers はインターネット上にあるサーバを想定している。


iptables の設定は

###############
# wan router
###############
# リアルネットワークから仮想ネットワークへの接続
iptables -t nat -A PREROUTING -j DNAT -d 192.168.1.11 -i eth0 --to 1.2.3.11
iptables -t nat -A POSTROUTING -j SNAT -d 1.2.3.11 --to 1.2.3.1
...

# 仮想ネットワークから外部への通信
iptables -t nat -A POSTROUTING -j SNAT -d ! 1.2.3.0/23 --to 192.168.1.10


###############
# lan router
# 現実のルータ設定を写す
###############
# 外部へ
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.0.0/28 --to 1.2.3.2
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.1.0/24 --to 1.2.3.2

# サーバ毎に設定を追加
iptables -t nat -A PREROUTING -j DNAT -d 1.2.3.11 --to 192.168.0.11

vmnet5に属するノードのルーティング設定も必要。

route add -net 1.2.3.0 netmask 255.255.255.240 gw 1.2.3.2
route add -net 1.2.3.16 netmask 255.255.255.240 gw 1.2.3.17
...

自分自身がgwの場合は除く。
これは /etc/network/interfaces に書くと楽。



そんな感じで。。。あとは lan router と global servers を設定すると今の社内ネットワークと同一のものをVMware上に再現できる。
仮想インターネットのアドレス範囲が狭いが、支障はないように思う。




で、ここまでして何がやりたいのかと言うと・・。
clients からローカル回線を使ってサーバに接続したりテスト用回線を使ってサーバに接続したり、global servers とのメールのやり取りが出来るのかをテストしたかったわけです。
global serversをプロバイダと仮定すると、例えばWindowsなんかをインストールしてメーラから servers に接続して送受信できるか、とかね。


これ書いてて、何だか凄く無駄手間な気がしてきた・・・・。
ネットワーク環境が同じなので、テストサーバから本番にコピーする時は /etc 以下も含めてrsync出来るのが楽かなーと思ってたんだけども・・これだとIPアドレスをささっと書き換えた方が楽なのか?
一度仮想ルータ群の設定さえしてしまえば・・とか思っているのだが。


# 何も考えてなかったけど、テストサーバ群を一気に全部動かすのには無理があるよなぁ・・。
# やはり物理的なネットワークを別途用意した方がいいかも