GoogleDomainsで取得した独自ドメインで自宅サーバーにアクセスする方法!DDNSの利用!

自宅に設置しているサーバーに外部のネットワークから接続したいことってありますよね。

ネットで検索すれば色々な方法がでてきますが、ここでは独自ドメイン+DDNSを利用した接続方法を紹介します!

我が家の環境と条件
  • 独自ドメインはGoogleDomainsで取得
  • 戸建てでNuro光を契約中
  • 自宅サーバーのOSはUbuntu20.04
  • 外部からの接続はsshで22番ポートを利用

家庭内サーバーに接続するための基礎知識

ここでは、外部ネットワークから自宅内のサーバーに繋げる仕組みを理解するために、最低限理解しておかなければならない仕組みについて説明します。

DNS(Domain Name System)とは

DNSはドメイン名(ホスト名)とIPアドレスの対応関係を管理するシステムです。

サーバーに接続するためには、サーバーのIPアドレスを知る必要がありますが、IPアドレスを覚えるのは大変です。

DNSを利用することでIPアドレスを覚える代わりに、ドメイン名を指定して特定のサーバーに接続することが可能となります。

DNSの具体例

例えばhttps://takake-blog.comに割り当てられているIPアドレスが123.34.5.67の場合、takake-blog.com⇔123.34.5.67の対応関係をDNSが管理しています。

ブラウザ等でhttps://takake-blog.comにアクセスすると、自動で123.34.5.67を持つサーバーへアクセスされることになります。

DDNS(Dynamic DNS)とは

IPアドレスが変わってしまうホストに対して、動的にドメイン名とIPアドレスの対応関係を解決するシステムのことです。

例えば、ある日はhttps://takake-blog.comに割り当てられているIPアドレスは123.4.56.7かもしれませんが、違う日にはIPアドレスは100.10.0.3かもしれません。

こういった状況時に、https://takake-blog.comに対応するIPアドレスを動的に変更する仕組みがDDNSです。

外部ネットワークから自宅内サーバーに接続するには

インターネットに接続している端末はすべてグローバルIPアドレスを持っているため、自宅のサーバーに割り当てられているIPアドレスを調べて、そのIPアドレスを直接指定すれば外部ネットワークから自宅のサーバーにアクセスは可能です。

一方で、一般的な家庭で使用されるインターネット接続サービス(Nuro光やソフトバンク光など)では、インターネット利用時に割り当てるグローバルIPアドレスは動的に変更されてしまいます。

つまり、自宅のサーバーのIPアドレスが定期的に勝手に変更されてしまい、適切な接続先が分からないということになってしまいます。

そのため自宅のサーバーに安定的に接続するためには、独自ドメインと自宅のサーバーのIPアドレスの対応関係をDDNSの仕組みを使って登録する必要があります。

独自ドメインを取得

それでは、自宅のサーバーに割り当てる独自ドメインを、GoogleDomainsで取得しましょう。

難しいことはないので、素直に公式サイトから取得します。

https://domains.google/intl/ja_jp/

※この記事では、your-domain.comというドメインを取得したと仮定します。

グローバルIPとドメインをDDNSで紐づける

GoogleDomainsで取得したドメインと、自宅のグローバルIPアドレスをDDNSで紐づけていきます。

下記手順はGoogleDomainsのヘルプに手順が載っています(ダイナミックDNSの詳細)。

GoogleDomainsでのDDNSの設定

まずGoogleDomainsでDDNS機能をオンにしましょう。

Google Domainsにアクセスして、「マイドメイン」にアクセスします。

1.左ペインのメニューから「DNS」→最下部の「詳細設定」→「ダイナミックDNSの管理」に進んでください。

2.「新しいレコードを作成」を押下して、自分の好きなホスト名(<host名>.your-domain.com)を入力し、保存します。

3.登録したDDNSレコードの「認証情報を表示」をクリックし、ユーザー名とパスワードをメモします

自宅サーバーにDDClientをインストール

外部ネットワークから接続したい自宅のサーバーから、GoogleDomainsで登録したホスト名に対して使用しているIPアドレスを通知します。

これにはDDClientというソフトウェアを利用します。

下記コマンドからDDClientをインストールしてください。

sudo apt install ddclient
# 色々と聞かれますが、すべてESCキーでスキップして大丈夫です。

DDClientの設定

/etc/ddclient.confの設定値を書き換えます。

$ cat /etc/ddclient.conf
# Configuration file for ddclient generated by debconf
#
# /etc/ddclient.conf
protocol=dyndns2
use=web
server=domains.google.com
ssl=yes
login=<your-user-id>
password=<your-password>
<your-domain>.your-domain.com

下記項目は、各環境に合わせた値を入力してください

  • <your-user-id> : 先ほどメモしたDDNSのユーザー名
  • <your-password> : 先ほどメモしたDDNSのパスワード
  • <your-domain> : GoogleDomainsで指定したDDNSのドメイン名

DDClientを実行

ddclientを実行してみましょう。

sudo ddclient -daemon=0 -verbose

エラーなく実行出来たら実行は成功です。

実行に成功すると、GoogleDomainsのダイナミックDNSの「データ」列にグローバルIPアドレスが表示されます。

DDClientをデーモンとして動かす

上記で説明した通り、自宅のサーバーに割り当てられているIPアドレスはいつ変更されるかわかりません。

ddclientは、プログラムを実行したタイミングでのIPアドレスが登録されるため、デーモンとして定期的にddclientを実行することで、常にドメイン名と最新のIPアドレスを紐づけるようにします。

まずは、サービスの設定ファイル(/etc/default/ddclient)を編集します。

cat /etc/default/ddclient
# Configuration for ddclient scripts
# generated from debconf on Sun Mar 27 03:56:56 UTC 2022
#
# /etc/default/ddclient
# Set to "true" if ddclient should be run every time DHCP client ('dhclient'
# from package isc-dhcp-client) updates the systems IP address.
run_dhclient="false"
# Set to "true" if ddclient should be run every time a new ppp connection is
# established. This might be useful, if you are using dial-on-demand.
run_ipup="false"
# Set to "true" if ddclient should run in daemon mode
# If this is changed to true, run_ipup and run_dhclient must be set to false.
run_daemon="true"
# Set the time interval between the updates of the dynamic DNS name in seconds.
# This option only takes effect if the ddclient runs in daemon mode.
daemon_interval="300"

次に、デーモンを登録します。

systemctl restart ddclient.service

これでバックグラウンドで定期的にddclientが実行されるようになりました。

疎通確認

外部のネットワークから自宅内のサーバーに接続できるか疎通確認を行いましょう。

※テザリングなどを利用し、必ず外部のネットワークから疎通確認をしてください。

sshで接続する場合下記コマンドで疎通確認可能です。

ssh user@<domain>.your-domain.com

もし接続できない場合、下記のポートフォワーディングの設定が必要かもしれません。

(必要な場合)自宅のルーターにポート転送の設定

使用しているルータにもよりますが、外部から特定のサーバーに接続するためには自宅のルーターでポートフォワーディングの設定が必要なことが多いです。

ルーターの設定方法は利用しているルーターによって異なるので、ご自身のルーターのドキュメントを参考の上ポートフォワーディングの設定を進めてください。

自宅サーバーに対してSSH接続を行いたいときは、22番ポートの転送設定を追加します。

ポートフォワーディングとは

特定のポートに届いたアクセス要求(パケット)を、あらかじめ指定しておいたLAN内の機器に転送する仕組みのことです。

ほとんどの場合、一つのグローバルIPアドレスに対して複数の機器でLANが構築されています。

ポートフォワーディングの仕組みを利用することで、ポート番号から接続先の機器を特定することができます

まとめ

GoogleDomainsで取得した独自ドメインを利用して、外部ネットワークから自宅のサーバーに接続する方法を紹介しました。

外部ネットワークから自宅サーバーに接続する方法は、ネット上に数多くの方法が紹介されています。

ただ、基礎となる考え方(DDNSなど)は同じなので、ぜひ参考にしてみてください!

おまけ:ネットワークの仕組みが分かる本

下記の本は、非常にわかりやすくネットワークの仕組みを説明しているので、非常におすすめです!

著:戸根 勤
¥2,376(2022/10/05 07:57時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
PayPayモール

DNSやDDNS、ポートフォワーディングなど、わからないことがあれば一読することをお勧めします。