読者です 読者をやめる 読者になる 読者になる

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

CORBAで外部から接続して落ちる

C++ Ubuntu

現象

外部ホストのCORBAのサーバアプリケーションに接続するとCOMM_FAILUREなどの例外を吐いてクライアントアプリケーションが落ちてしまう.

対処方法

というかこんな設定をすることに気が付かなかった.

/etc/hosts の最初のエントリがマシンのホスト名(localhost以外)であるようにする.

# 
# Internet host table 
# 
xxx.xxx.xxx.xxx hoge   <--- これを追加 
127.0.0.1 localhost loghost 

次に /etc/nsswitch.conf で hosts の部分でfilesが先にDNSよりも先に読まれるようにする.

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files dns mdns  <--- ここ注意
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

これで大丈夫なはず.しかしこんなことに気が付くのに3日もかかるなんて思わなかった…

参照

こんなところにちょろっと記述があった.

ただし、ネームサーバと同じマシン上に存在するサーバオブジェクトを外部から呼び出すことができないという問題が存在します。これは、そのサーバオブジェクトの参照情報において、IPアドレスループバックアドレス(127.0.0.1)として記録されているため、外部からこの参照情報をもとにサーバオブジェクトの存在するマシンのIPアドレスを特定することができないからです。この問題を解決するためには、ネームサーバの存在するマシン上の /etc/hostsファイルを編集するなどの対処が必要です。

具体的な設定方法はここを参照した.記述は「Solarisで」となっているが基本的には同じこと.

まとめ

やっぱりサーバ/クライアントでは名前解決が肝なんだなぁ.