専属ホスト

社長:/etc/hosts のユーザ版があると良いのにと思います。

開発:自分なりにホストに名前を付けたいことは多いですからね。

!!!

基盤:うわっ、またMacMini落ちた。

経理:そう言えば中にiMacの入ってるはずの台形ダンボールが玄関のオブジェ化してますね。ちょっと邪魔だし。我が社最初の固定資産なのに。

社長:オブジェ指向。

開発:開けたら中からカルロスさんが出てきたりして。

社長:しかし驚くのはこの、Mission Control の仮想デスクトップとそれぞれに配置されてたアプリのウィンドウがちゃんと回復することです。

開発:特にターミナルについては、まあセッションは切れちゃいますけど、やってきた作業の履歴が見れるのが助かりますね。

基盤:そもそも落ちなきゃいいっていう話ではありますけどね。ひょっとして熱暴走ですか?あと、Mission Control については、Desktop 1, 2, 3とかじゃなくて、ユーザに名前つけさせろって世界中で非難ゴーゴーです。

開発:まあゴーゴーするほどこれの愛用者が居るかって話ですけどね。そもそも仮想デスクトップは固定的な名前を付けられるような安定した存在なのかというところが疑問です。

社長:デスクトップごとに、ここはソフト開発用デスクとか、ログ監視デスクとか、社長のブログ執筆机とかw,固定してアプリを配置して、そのままずっと使い続けたいですね。

開発:普通に ~/Desktop の他に ~/Desktop1, ... 式にディレクトリを作ればいいんじゃないかって気もしますよね。

社長:それを言うなら、全てのディレクトリがデスクトップであり得ても良いですよね。単に、このディレクトリはデスクトップ的なビューで表示できます、てなスイッチがあってくれれば。で、そのディレクトリを開くと仮想デスクトップが開く。うーん、それともディレクトリの中でコンテクストメニューを開くと「デスクトップ型式で表示する」でも良いかな。

開発:それと、このデスクではタイル型のウィンドウ配置とか、サムネール置き場とか、デスクトップごとにウィンドウのマネージメントの方式を変えたいですね。ドックとかタスクバーなんかも、デスクトップごとに定義できる。

経理:デスクトップごとに、セキュリティ上のタイムアウトとかスクリーンセーバとか変えられたら安心です。

開発:昔は複数ユーザの間をシャカシャカ切り替えたりもしましたけどね。

社長:うちもいつかそっち方面にも手が出せると良いですね。

* * *

社長:昔はホストに短縮名を付けたり、階層的なドメイン名の省略規則を使ったものですが、最近ではそういう事はほとんどされなくなったように思います。

開発:はじめは /etc/hosts で、そのうち YP、NISが普及して、最終的にはDNS一色になりました。DNSではせっかく階層的になってても、参照する側はFQDNとしてしか使わなくなりましたね。

基盤:というかWindowsの人たちはWORKGROUPみたいなグループの中で名前を付けてましたね。WINS?

社長:そういえば私の先輩は今でも、自分のPCをetlxxxというホスト名にしてます(^^)

開発:GUI化して手打ちでホスト名を入れることがほとんど無くなったという事もあるでしょうね。管理上は、グローバルにいつも同じ名前表記で参照されることが望ましいし。

基盤:ですがインフラの管理作業ではターミナルを使うことが多いので、手打ちでホスト名を入れることも多くて、短い alias があったほうが助かります。

開発:その alias という単語を良く使ってたのは、おそらくYPでのホスト名の alias の事だったように思います。おぼろげな記憶ですが。

社長:短縮名やニックネームを一意に意図する対象に結びつけるというのは、特にコンピュータの世界では根幹ですね。

開発:DNSではドメイン名が直接最終的なアドレスまで変換されるわけですが、名前が多段階にマッピングされる場合もある。ファイル名のシンボリックリンクとか。

社長:まあサーバのマウントというのもまさにそれなんですが。HTTPの世界ではリバースプロキシという特殊な呼ばれ方をしますが。

開発:プログラミング言語の世界では名前のスコープとか寿命とかが明確に規定されていて有用なわけですが、あれと同じような名前の管理をもっと一般的に適用したら面白いと思います。

基盤:ホスト、ファイル、デバイス、ユーザ、それぞれに名前の管理システムが違うのはいかがなものかという気はします。

開発:それは昔なら /etc/hosts であり、/etc/services であり、/etc/passwd であり、/etc/fstab であり、とかしたわけですね。

社長:ユーザ名の識別もDNSでやったら良いのにと思いましたよね。なんでも階層化しちゃう。

開発:ユーザ名とホスト名の間が @ であるというのは、わかりやすくも有り、不連続で嫌だな感も感じはします。

基盤:@はマシンと人間の境界なんだと思いますが。あー、でも人間である必要は無いか。

開発:そこにポート番号を入れられたらいいのにと思いますね。だって、user@host.domain:port って、表記の位置関係が不自然ですよね。何にしても、@より左側の表記方法が定式化されていないのはつまらないと思います。

社長:そういえばドメイン名って、左から右に向けてローカル化する記法ってありませんでしたっけ?

基盤:名前をUUIDに変換するというようなDNS的なものはあるんですかね?まあDNSを使っても良いと思いますが。MACアドレスも逆引きできるといいですね。

開発:何にしても、ものには全てフィジカルに結びついた物理的なIDと、サイバーで論理的でマッピングしたり変換できるIDがあると良いんだろうなと思いますね。

社長:研究としてそういう事をやっているかやってた人は絶対居ると思います。

* * *

社長:それで、ホスト名をユーザが簡単に決めて、自分から見える世界ではいつでもどこでもそれを使えるようにしたい。/etc/hosts以外に簡単な方法はあるでしょうか?

基盤:というかDNS的ならベタファイルじゃなくて、ドメインの階層に従ったディレクトリになるんじゃないですかね。

開発:トップダウンなドメイン名の階層と、横紙破りなaliasの関係がよくわからないですね。

基盤:alias も階層化されるんでしょうね。

社長:それで私は、現行のシステムでホスト名がどう解決されるのか知りたかったわけです。で、strace telnet xxxxx とかして見たのです。で、名前解決のためにどんなファイルとかサービスを見てるのだろうって。

社長:あ、コマンド + +/ー でターミナルの拡大縮小ができるようになりました。さっきリブートするまで効かなくて、なんだろうって思ってたんですが。あれ?拡大が出来ない… おっと、コマンド+Shift+ +でした。なんでこうなるの?

経理:iMac にちゃんとしたMac用のキーボード付属してきてますよね。あとお絵かき用のパッドも。

開発:お絵かき用のパッドで、オレオレ手書きフォント作りたいですね。

基盤:点描に打ち込むんじゃないんですか?

社長:それで、grep -e xxxxx -e open なんてすると、こういう事になってました。

社長:47番に /etc/hosts が出てきてます。それより後はDNS/UDPです。

社長:で、思い出したんですが、何をどういう順序で見るかは、/etc/host.conf で定義できたようなという事。

社長:さらに man host.conf すると、trim というキーワードでローカルドメインのマッチングを制御できるということです。

社長:それで、order に何が書けるかというと、bind, hosts and nis なんですね。私もこれに習ってリゾルバの順序を規定するパラメータを作ったんだと思います。なんで dns じゃなくて bind なのかとか、nis ってまだあるのかしら?とか引っかかりは感じます。

社長:そして man hosts。残念なことに /etc/hosts 以外を見てくれる気配は微塵も無いですね。でも「In  modern  systems, even though the host table has been superseded by DNS, it is still widely used for: bootstrapping, NIS, isolated nodes」という事でした。/etc/hosts に #include とか書けるといいのにな。うーん、Google IMEのショートカットまで変になってきた。

経理:実際このキーボードが終わりかけなんでは。

基盤:怪奇現象に出会ったら物理層を疑えの法則。

開発:ユーザの使う共有ライブラリをすり替えて、openを引っ掛けて、/etc/hosts を read-only で開いたら、/etc/hosts と自分の ~/.hosts をマージしたものを返すとかでどうですかね。

基盤:まあ自分専用のリゾルバを立てるのが自然かなとは思いますが。

社長:そして!最初のほうに出てくる nsswitch というのに見覚えがあったので、man nsswitch.conf してみたら、これがまさに色んな名前のリゾルバーのスイッチだったわけです。で、こっちでは hosts は dns, file, nis だよとあります。そして、db というので何かできる感じはします。というか、/lib/libnss_xxxx.so を参照することになってるんですが、そういうライブラリってもう絶滅しているかも知れないので、自分たちで復活させても被らずに済むかなと言う感じがします。何にしても、昔の人は名前の解釈について統合的に考えてたように思いますね。

基盤:find するとlibnssありますね。x86_64-linux-gnu の下とか。

社長:まあ、既存の共有ライブラリを自分用にラッピングするという話であれば、gethostbyname()だとは思います。

-- 2020-0703 SatoxITS

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です