より良い環境を求めて このページをアンテナに追加 RSSフィード

2007-04-03

[] PHPの終了タグは書かない方がいいらしい

php-usersで流れてた。

404 Not Found - Zend Framework

PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません。終了タグは、PHP には必要ありません。 終了タグを省略することで、ファイルの最後にある空白文字が出力に影響することを防ぎます。


終了タグを書いてないファイルがあったら後からきっちり付け足してたよ・・逆なのね。

どこかで「PHP終了タグの後に改行を入れる」というのを見て、それからコードの終了は「?>[LF]」にするようにしたんだが、そもそも必要ないというか書いたらダメだとは・・。言われてみればその通りだ。

[] ネットワークのテスト環境を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アドレスをささっと書き換えた方が楽なのか?

一度仮想ルータ群の設定さえしてしまえば・・とか思っているのだが。


# 何も考えてなかったけど、テストサーバ群を一気に全部動かすのには無理があるよなぁ・・。

# やはり物理的なネットワークを別途用意した方がいいかも