| OpenH.323をとにかくやりたいのだが、そのためにはサーバーをグローバルIPにさらさせる必要がありそう。H.323プロトコルはアプリケーション層に自分のIPアドレスを記載する必要があり、自分がNAT内のローカルIPで動いている場合、NAT外の相手には無意味なIPアドレスを提供してしまう。これの補正を行うのがH.323
Proxyなのだが、それ自体をNAT内で動かすのことができるかどうか? やはりネットワーク社会で強烈なサービスを実装させるにはわがサーバーもグローバルIPにさらしていかにゃいかんだろう。
サーバーにグローバルIPを与えるにはADSLモデムをブリッジモードで動かすのが普通だが、MegaBitGear
TE4121Cには便利な機能がある。Global Address Proxy NAT、略してGapNATというものだが、通常のルータ構成のネットワークの状態のまま、ネットワーク内の1台だけにグローバルアドレスを与えちゃうという機能である。じゃあルータのグローバルアドレスは何で動いているの? 不思議な機能だが、割りつけられた1台以外にはごく普通の構成、すなわちグローバルアドレスはルータが持っているように見えている。実はこの姿が正解で、1台だけNATのProxyに騙されている感じだ。
この機能、BroadBand WatchのイニシャルBでも絶賛されており、もっと流行っていいと個人的には思うのだが、まぁ住友電工もNTT-MEも商売下手なんでどうしようもないなぁ。
GapNAT経由でもらうグローバルIPは実際のところかなり安全で、どのポートを通過させるかを通常のルータと同様に設定できる。僕の場合は
www / ftp / smtp / imap と、将来のために H.323
関係を予行演習のために開けておくことにした。またグローバルIPをもらうLANカードを増設し、サーバーのLANは2枚差しになった。これが共に同じHubに繋がっているのは一見不思議な光景である。
GapNATでグローバルアドレスをもらうためには、TE4121CをDHCPサーバーにしなければならない。これが大問題で、実はサーバーにDHCPをやらせているため、DHCPがぶつかってしまう。DHCPはいろいろな情報をクライアントに与えることができるので、TE4121Cに譲ることはとうてい出来ない(いずれはブラウザのProxy機能もDHCP使って設定させる予定)。
これを回避するためには、まずTE4121CのDHCPサーバー機能を停止させる。この状態でもGapNATモードであれば実はTE4121CのDHCPは動いており、グローバルアドレスを与えるために待機している。さらにTE4121CのGapNAT機能で、指定のMACアドレスにのみ、グローバルアドレスを与えるような設定を行う。これで、TE4121Cは指定LANカードにのみのDHCPサーバーになる。
次にサーバー側のDHCPサーバー(ISC DHCPD)だが、GapNATで割り当てられるはずのMACアドレス以外にDHCPが機能するような設定を行う。これはかなり悩んだが、最終的に以下のdhcpd.confで落ち着いた。
default-lease-time 600;
max-lease-time 7200;
authoritative;
ddns-update-style interim;
ddns-updates on;
log-facility local7;
subnet 172.25.0.0 netmask 255.255.255.0 {
option domain-name "tokoo.net";
option domain-name-servers 172.25.0.3, 202.248.37.74, 202.219.63.253;
option routers 172.25.0.3, 172.25.0.1;
option broadcast-address 172.25.0.255;
option netbios-name-servers 172.25.0.3;
option netbios-dd-server 172.25.0.3;
option netbios-node-type 8;
host XXXXX{
hardware ethernet XX:XX:XX:XX:XX:XX;
fixed-address 172.25.0.4;
ddns-hostname "XXXXX";
}
host YYYYY {
hardware ethernet YY:YY:YY:YY:YY:YY;
fixed-address 172.25.0.5;
ddns-hostname "YYYYY";
}
host ZZZZZ{
hardware ethernet ZZ:ZZ:ZZ:ZZ:ZZ:ZZ;
}
pool {
range 172.25.0.6 172.25.0.254;
allow unknown clients;
}
ちなみに上記の 172.25.0.3
がローカル側のサーバーのIPアドレス。172.25.0.1がTE4121Cである。ZZZZZはグローバルIPをもらうサーバーのLANカードである。ZZZZZのIP割り当てレンジが無いように仕向けることで、ZZZZZはTE4121CからグローバルIPをもらうようにする。
|