2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Azureで作成したVirtualMachineのプライベートなFQDNの取得

Posted at

tl;dr

  • Azureは内部ネットワーク向けのDNSを持っており、リソースはこれを見て名前解決することができる
  • Azureの同一VNet内に存在するVirtualMachine(VM)であれば、VM名のみでプライベートIPを解決できる
  • ただし、Application GatewayはVM名のみでは解決できず、DNSサフィックスを付け足す必要がある

未調査

  • VNetピアリングした場合にVNetをまたいだリソースの名前解決(できない?)
  • App Service(WebApp,Functions)やAzure Database等も内部向けのFQDNを持っているかどうか(VNetで管理できないからなさそう?)

やりたいこと

VMのプライベートなFQDNでプライベートIPの名前解決を行いたい。

VM作成のパブリックIP割り当て時にFQDNを指定することができるので、パブリックIPの名前解決ができるが、プライベートIPにはないのかどうなのかわからなかった。

プライベート向けのFQDNがあると嬉しい事例としては、APサーバ用のVMとDBサーバ用のVMを作り、APからDBに接続するときの接続情報を決め打ちにできるとか、プライベート接続なので多少早いんじゃないか、とか。プライベートIPを調べて手で設定をやっても多分困らないんだろうけど、なんか嫌だった。

調査

Azure VM プライベートIP 名前解決辺りの単語で調べても、Azure DNSサービスのプライベート対応の話が多く出てきて、欲しい情報が見つからなかった。

「こりゃできないな!あきらめて手でやろう!」って思い、別の調査でARMテンプレートの再利用性について調べてたところ、NICのリソース定義の部分で、以下の定義を見つける。

    "dnsSettings": {
        "dnsServers": [],
        "appliedDnsServers": [],
        "internalDomainNameSuffix": "xxxxx.lx.internal.cloudapp.net"
    },

※xxxxxの部分は伏字です

ここの"internalDomainNameSuffix": "xxxxx.lx.internal.cloudapp.net"ってなんだろう?

サフィックスということはもしかして、vmname.xxxxx.lx.internal.cloudapp.netとすれば参照できるのでは?と思い、試したらできた。

$ nslookup vm-db.xxxxx.lx.internal.cloudapp.net
Server:         168.63.129.16
Address:        168.63.129.16#53

Name:   vm-db.xxxxx.lx.internal.cloudapp.net
Address: 10.0.1.4

168.63.129.16はMicrosoftが持つDNSサーバらしい。

で、RHEL系のLinuxなら、/etc/resolve.confにDNS回りの事を書くので覗きに行くと以下のようになっていた。

; generated by /usr/sbin/dhclient-script
search xxxxx.lx.internal.cloudapp.net
nameserver 168.63.129.16

search(DNSサフィックス)が定義されているので、省略しても見に行くはず。

$ nslookup vm-db
Server:         168.63.129.16
Address:        168.63.129.16#53

Name:   vm-db.xxxxx.lx.internal.cloudapp.net
Address: 10.0.1.4

これで完全なFQDN名を知らなくても、VM作成時につけた名前さえわかれば名前解決ができそう。

自動化が少し楽になりますね。

残念なところ

分かっている範囲では、Application GatewayはDNSサフィックスを知らないので、バックエンドプールやカスタムプローブを登録する際はDNSサフィックスを含めたFQDNで登録する必要があります。

ただAzure Resource ManagerでTemplateとして管理すれば、reference等からFQDNを取り出せそうなので自動化は出来そうかな?

関連資料

internal.cloudapp.net あたりで調べるといろいろ出ますので、そちらを調べると良いかも。

公式なら「VM とロール インスタンスの名前解決」 が一番詳しい・・・詳しい?

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?