こんにちは!スマートコンテンツ事業部で開発を担当している兒玉です。
はじめに
業務ではクラウド上に用意されたサーバーを使うことが多く、インフラの細部に触れる機会が限られています。そこで「自分で一から構築・運用できる環境を作りたい」と考え、自宅サーバーの構築に取り組みました。
特に、ネットワーク設定やセキュリティ対策を実際に手を動かして理解することを目的としています。これにより、業務でも活用できる基礎知識を深め、障害対応や構成設計に対する理解を高めることを目指しました。
この記事では、その一環として「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を参考に必要な情報の登録を進める
User Infoから登録者情報を登録

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

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を利用する際にも役立つ知識であり、サーバーがどのように公開・保護されているかをより深く理解する一助となりました。少しずつサーバ運用に伴うテックな知識を蓄えていければと思います。