普段Macはプライベートネットワーク内で使っていて、 Host名はローカルなホスト名の指定をしてそれを使っているのですが、 他のネットワークでグローバルなIPが割り振られるようなネットワークに接続した時に ホスト名がおかしくなってることに気づいて対処したことについて。
Macのローカルホスト名
Mac(OS X 10.9)ではシステム環境設定にある共有の項目に行くと、
コンピューター名という設定項目があって、これを設定すると
ローカルのネットワーク内からはこの名前に見える様になります。
ターミナルでhostname
した結果や$HOSTNAME
という環境変数に入っている
値もこの値になります。
(正確にはここに書き込んだ名前.localな形になります。)
ローカルネットワークでない場合のホスト名
このホスト名を.bashrc等の設定で使っている所があって、 その辺でちょっと上手く動かなくなってる部分があって よく見てみたらホスト名が違うものになっていました。 (GNU screenを立ち上げてない時にはプロンプトに、screenを立ち上げてる時も hardstatusやcaptionに表示させてるのでよく見ればすぐに気づくところですが。。。)
具体的にはscreen
のセッション情報を保存するソケットディレクトリSCREENDIR
に
ホスト名を含ませていたので
1、
screen -r
なんかで前に閉じたセッションを探そうとすると、
ネットワークが変わると違う名前を探しにいって前のセッションを復活できない、
と言う事態になって気づきました。
hostname
とかしてみるとそのネットワークの中で自動的に割り振られる
名前になっていて、元のローカル設定とは違ってしまいます。
当然といえば当然ですが、これだと色々面倒なので固定する方法を探してみたところ、 Macでは/etc/hostconfigを使っていて、 デフォルトではこんな感じになっています。
1 2 3 4 5 6 |
|
going awaay
となってますが、取り敢えず、ここにHOSTNAME
の指定をしてあげると
それを使うようになるとのことなので、
HOSTNAME=myMac.local
と言った感じの行を加えます。
上の共有から設定していたものと合わせるため
.local
も必要まで書くことが必要です。
この設定にして再起動すると、どのネットワークにつなげても
手元のhostname
ではmyMac.local
を返す様になりました。
この辺の話については古いものしか見つからなかったのであれですが、 取り敢えずラップトップとして手元で使う分にはこれで大丈夫そうです。
OS X ハッキング! (19) システム環境設定と/etc/hostconfigの関係 マイナビニュース: http://news.mynavi.jp/column/osx/019/
共有からの設定はどこに反映されるのか
上の設定をしていて、共有から設定される物が 実際どこへ反映されるのか気になったのですが、 これは
- /Library/Preferences/SystemConfiguration/preferences.plist
という設定ファイルに書き込まれます。
また、共有の部分で編集をおすと、 ダイナミック・グローバル・ホスト名を使用 という設定もあり、これを設定するとローカル以外からでも ホスト名で参照できる様にもなります。
OS X Mavericks: ダイナミック・グローバル・ホスト名を使用する: http://support.apple.com/kb/PH14233?viewlocale=ja_JP
この設定も上のpreferences.plist
に書き込まれ、
下みたいな設定になっています。
ダイナミック・グローバル・ホスト名を使用 にチェックしてない場合は DynamicDNSの部分はありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|