1
0

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 3 years have passed since last update.

EC2へドメインでアクセスする方法

Last updated at Posted at 2021-06-04

AWSのRoute53を利用しても同様のことができますが、こちらだと利用料金がかからないのと、複数のサービスを利用するの仕組みを理解しつつできるのでこちらの方法でアドレス解決しています。

#必要なプロセス

  • ドメインを取得
  • 動的に割り当てられるEC2のIPアドレスを、DDNSサービスに通知するようにsystemdを利用して設定
  • DDNSサービスを利用して、動的に割り当てられるIPとドメイン名を紐づける。

インターネットからドメイン名でアクセスしようとする際に、アドレス解決(ドメイン名とIPアドレスの紐づけ)ができていないと、どこにアクセスしたらいいのか分かりません。
特に動的にIPを割り当てられるEC2では、自動でアドレス解決をしてくれる手段がないと面倒です。
ドメインにアクセスしようとする際の流れは、

  1. ドメイン名でアクセス。
  2. Freenomでアドレス解決のできるサーバー(ネームサーバー)を探します。(あらかじめ設定する必要あり)
  3. ネームサーバーからアクセス元へIPアドレスを返す。(Aレコード)
  4. アクセスできるようになる。

ドメインを取得

Freenomでドメインを取得。

動的に割り当てられるEC2のIPアドレスを、DDNSサービスに通知するようにsystemdを利用して設定

以下のスクリプトを実行することでMyDNSへ自分のIPアドレスを通知することができる。
(/etc/rc.d/配下に置いておいてね。)

/etc/rc.d/MyDNSNotification.sh
#!/bin/bash
#ID="mydnsのMasterID"
#PASS="mydnsのPassword"

#wget -o - 'https://$ID:$PASS@www.mydns.jp/login.html'
wget -o - 'https://{mydnsのMaterID}:{mydnsのPASS}@www.mydns.jp/login.html'

(3行コメントアウトにしているのは、なぜかうまくいかない為です。IDとPASSをベタ打ちにすればうまくいきます。)
しかし、起動の度にこれを実行させるのはさすがに手間がかかる。

その為、こちらのスクリプトを起動後に自動で実行してくれるように設定する。
ただ起動後に実行すればいいというわけではなく、インターネットに接続の確認後に上記スクリプトを実行しなければならないので/etc/rc.local~/.bashrcに書いたり、crontab -eに追記すればいいわけではない。
これの実現方法として、daemon化したプロセスとして実行させる。具体的には、.serviceファイルを作り、適切に配置する。

.serviceファイルの書き方は以下。

MyDNSNotification.service
[Unit]
Description=Initialize environment variables.
After=network.target

[Service]
Type=oneshot
User=root
Group=root
ExecStart=/etc/rc.d/MyDNSNotification.sh

[Install]
WantedBy=default.target

こちらの.servieファイルを/etc/systemd/system/配下に置く。
そして、chmod ugo+xで実行権限を付与しておきます。

ここで、sudo systemctl enable MyDNSNotificationで有効化し、sudo systemctl start MyDNSNotificationでサービススタートすると、MyDNSに通知ができるようになっているはずです。

DDNSサービスを利用して、動的に割り当てられるIPとドメイン名を紐づける。

DDNSサービスは、MyDNSを利用する。
取得したら、MyDNSのネームサーバーをドメイン取得したFreenomにて設定する。

Freenomにて、ServiceからMyDomainsを開く
無題 (1).jpg

紐づけたいドメイン名の欄の右にあるManage Domainを開く。
image.png

Management Toolsの中のNameserversを開く。
image.png

Use Custom Nameserversを選択し、Nameserver名を記入。(画像では、MyDNSのNameserver記入済み)
image.png

MyDNSのNameserverの情報は、MyDNSのDOMAIN INFO内のある。
image.png

以上の設定全て終了したら、EC2を再起動してMyDNSにログインし、IPアドレスが更新されていることを確認する。
それ以後、ドメイン名でEC2にアクセスできるようになる。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?