AzureのMarketPlaceのUbuntuをインストールした際に勝手にwebサイトにつながったことに衝撃を受けたので調査してみました。
関連記事
- AzureのVMはなぜ設定なしでネットにつながるのか①- Azureのデフォルトリゾルバ(168.63.129.16)について-
- AzureのVMはなぜ設定なしでネットにつながるのか(番外)-UbuntuでDNSのデフォ設定が127.0.0.53#53だった件-
#サーバーなのにインターネットにつながるモヤモヤ感・・
AzureでUbuntuを立ててsshでログインしたところすぐに
digでyahoo検索できた・・
user@testserver:~$ dig www.yahoo.co.jp
:中略
;; ANSWER SECTION:
www.yahoo.co.jp. 780 IN CNAME edge12.g.yimg.jp.
edge12.g.yimg.jp. 38 IN A 182.22.25.252
w3mをaptコマンドでインストールするにも設定不要だし、webもみれる、みれてしまう・・・、
最近はクライアントで何も設定しなくてもネットにつながるのが普通って感じになっているけど
長いことオンプレでサーバーを立ててきた身としては全く何も設定していないのにインターネットにつながるのはどうにもモヤモヤしてしまいます。。。
#なぜ、名前解決できたのか。
外部ドメインの名前解決ができるということは、何らかのリゾルバに問い合わせしているはず。(自明)
ではどのように設定され、どこに問い合わせて設定いらずで名前解決ができているのでしょうか?
名前解決している問い合わせ先を確認
dig
で名前解決しているサーバーを確認
user@testserver:~$ dig www.yahoo.co.jp
:中略
;; Query time: 343 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Wed Dec 05 05:12:03 UTC 2018
:中略
127.0.0.53ってなんやねん・・・
とチーンとなったのですが、現状のUbuntuのデフォルトではローカルスタブリゾルバ(systemd-resolved)
に問い合わせるのがデフォルト構成となっているようです。
今回はAzureネタメインのため127.0.0.53やsystemd-resolvedについてのネタはこちらでまとめています。
ローカルスタブリゾルバ設定の確認
ということでLinuxの新しい流れについていけず若干とまどいましたが、
↑にもあるようにUbuntuのデフォルトローカルスタブリゾルバであるsystemd-resolvedの設定を確認していきます。
確認コマンドは
systemd-resolve --status
です。
実行してみると
user@testserver:~$ systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
:中略
Link 2 (eth0)
Current Scopes: DNS
:中略
DNS Servers: 168.63.129.16
DNS Domain: xxxxxxxx.xx.internal.cloudapp.net(伏字)
DNSの設定発見
DNSの設定内容から問い合わせ先を調査
見つかった💛うれしい💛
DNS Domain: xxxxxxxx.xx.internal.cloudapp.net(伏字)
でもでも、このアドレスは一体どこを参照しているのでしょうか?
Ubuntu側?Azure側?最近Linuxもあまり触っていなかったので謎のアドレスをみてさらにモヤモヤが募ります。><
##168.63.129.16とはなんのアドレス?
Edgeで検索したところAzure関連の情報がザクザクでてきた!どうやらAzureで使用しているIPのようだ
備忘録レベルでサマると
・ 168.63.129.16はAzureのデフォルトリゾルバ
・全リージョン共通で今のことろ変更の予定なし
・内部DNSをたてり場合は別途リゾルバの設定が必要
・168.63.129.16はリゾルバ以外にもDHCPやVMの通信でも使用している
※ログ確認の際は注意
リゾルバみーっけた💛
Azureのリゾルバなんだ!当たり前といえば当たり前ですが妙にテンションがあがりますw
## (ちなみに)xxxxxxxx.xx.internal.cloudapp.netって何?
※ xxxxxxxx.xx.internal.cloudapp.netのxxxxxxxx.xxは伏字です。環境によって異なる模様。
なにこれnetapp?cloudapp?webapp?何それストレージ?PaaS?え?おいしいの
と一人突っ込みしながらEdgeで検索するとこちらもいろいろな情報が。
- [Azure 仮想ネットワーク内のリソースの名前解決]
(https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances)
Azure で提供される名前解決を使用している場合、Azure の動的ホスト構成プロトコル (DHCP) によって内部 DNS サフィックス (.internal.cloudapp.net) が各 VM に提供されます。
ホスト名のレコードは internal.cloudapp.net ゾーン内に存在するため、このサフィックスによってホスト名を解決できます。
ということでこの設定でAzureの内部通信の場合は勝手に(.internal.cloudapp.net)が補完されて
VM間の通信はhostsなどに記載したホスト名だけで通信が可能となる(仕組み自体はオンプレと同じ)
#結論1. 問い合わせ先はAzureの内部リゾルバだった!
すぐにネットにつながる幸せ。神様仏様Azure様です。(セキュリティ設定必要ですけどね。)
#ではDNSはどうやって設定されたのか?
Azureは確かDHCPでIPを動的に割り当てているはず・・
ではDNSの設定もクライアントと同様にDHCPで割り当てているのでしょうか・・?
MarketPlaceと自分で仮想マシンを立てるのでも設定違う気がしますし・・
どんな結果になるのか気になりますがちょっと長くなってきたのと、夜もだいぶ深くなってきたのでこの続きは次回②でお届けします。
#AzureのVMはなぜ設定なしでネットにつながるのか①のまとめ
- Azure MarketPlace上のUbuntuはホストからAzure内部のリゾルバ(168.63.129.16)に問い合わせをしているのでホスト上で設定なくインターネットにつながる!
- だがしかしどうやってリゾルバの設定がされているかは(DHCPと思われるが)謎!継続調査中
#####上記記載以外で参考にさせていただいたサイト
-
[/etc/resolv.conf について]
(https://qiita.com/kasei-san/items/137b7fc86a0eacd60765)
関連記事