自宅/アパートの回線(動的IP)を利用して自宅サーバを外部公開してみる

こんにちは!スマートコンテンツ事業部で開発を担当している兒玉です。

はじめに

業務ではクラウド上に用意されたサーバーを使うことが多く、インフラの細部に触れる機会が限られています。そこで「自分で一から構築・運用できる環境を作りたい」と考え、自宅サーバーの構築に取り組みました。

特に、ネットワーク設定やセキュリティ対策を実際に手を動かして理解することを目的としています。これにより、業務でも活用できる基礎知識を深め、障害対応や構成設計に対する理解を高めることを目指しました。

この記事では、その一環として「v6プラス環境での自宅サーバー外部公開」の手順と学びを整理しています。同じような環境で検証・学習したい方の参考になれば幸いです。

エムティーアイ Blog Summer 2025」の 8/5 分の記事として自宅サーバの外部公開手順を紹介します。

この記事の対象者

  • 自宅/アパートの回線(動的IP)を利用して自宅サーバを外部公開したい人
  • v6プラスなどを利用しており、ポート解放ができない人

目次

概要

以下のイメージで環境を作成します。 変動するIPアドレスはMyDNSを用いてドメインとの紐付けを行います。 何番煎じネタではありますが、今一度手を動かしながら理解を深める手助けになればと思います。

用意するもの

  • 外部公開に使用するサーバ
    • Raspberry Pi 5を使用
  • MyDNS
    • アカウント登録を済ませておく

RaspberryPiの設定

基本的なセットアップは割愛します。

最低限のセキュリティ対策

  • SSHセキュリティ
    この設定では、リモート接続時の基本的なセキュリティ対策として、SSHの設定をカスタマイズする方法を学ぶことができます。 rootログインの無効化やパスワード認証の停止、公開鍵認証の有効化により、攻撃リスクを下げる実践的な手法です。
# 設定の追加
sudo vim /etc/ssh/sshd_config

# 以下をそのまま追記
Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

# 変更後にSSHサービスを再起動
sudo systemctl restart ssh

  • UFWによるポート保護
    この設定では、最低限のポートだけを開放し、それ以外の通信をブロックするという「基本のセキュリティ設計」を実施します。
sudo apt install ufw

# SSHポートを事前に許可してから ufw enable を実行してください
sudo ufw allow ssh

# ポート指定 (webアプリのポートを追加)
sudo ufw allow 3000 

# 有効化
sudo ufw enable

ステータス確認(ルールが反映されているか確認)
sudo ufw status verbose

  • Fail2Ban によるSSH保護設定
    この設定では、ログ監視によって不正アクセスを検知し、自動的にアクセス元IPをBANするというセキュリティ対策を学ぶことができます。
sudo apt install fail2ban

# jail.localに上書き設定を記載する
sudo vim /etc/fail2ban/jail.local

# jail.localの基本設定 (下記を追記)
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
backend = systemd
maxretry = 5

# Fail2Banの起動と自動起動設定
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

# ステータス確認(Jail が有効になっているか確認)
sudo fail2ban-client status

# BANされたIPはlogを確認
sudo cat /var/log/fail2ban.log

MyDNSの設定

HowToUseを参考に必要な情報の登録を進める

  1. User Infoから登録者情報を登録

  2. ドメイン情報の登録 独自ドメインを使う場合、ネームサーバー(NSレコード)の設定 ネームサーバー設定( XServer Domainの設定 )

  3. IPアドレスの通知 (下記URLにアクセスしユーザ認証を実施すればOK)
    http://ipv4.mydns.jp/login.html
    http://ipv6.mydns.jp/login.html

ポートマッピング設定v6プラス

v6プラスの既存で使用できるポートとRaspberryPiのポートマッピング設定を実施します。 ここでは不用なポートは開かず、使用するポート解放のみにとどめましょう!

192.168.10.120:RaspberryPiのlocalIP
変換対象ポート番号:v6プラスの既存で使用できるポートから選択
宛先ポート番号:RaspberryPiで公開したいポート

お疲れ様でした! ここまで設定できていると外部からもアクセスできるようになっています。 以下のURLを参考に確認をしてみてください。

・192.168.10.120:3000 (IP固定化していなかったので 192.168.10.119で設定し直しています)
・{自分のドメイン}.com:4300

学びのまとめ

今回の構築を通して、以下のような点を実践的に学ぶことができました。

  • v6プラスなどのIPv6環境におけるポート開放制約とその回避策
  • MyDNSの仕組みと、ダイナミックDNSを用いたドメイン運用
  • SSHやUFW、Fail2Banによる最低限のセキュリティ設定
  • 自宅ネットワーク環境のIP固定・ポートマッピングの重要性

これらは、業務でクラウドやSaaSを利用する際にも役立つ知識であり、サーバーがどのように公開・保護されているかをより深く理解する一助となりました。少しずつサーバ運用に伴うテックな知識を蓄えていければと思います。