- raspberry piを用い、外出先からアクセス可能なファイルサーバーの作り方をまとめました。
- 基本的にGoogleの上位に出るサイト様と同様の手法を用いています。
- 中国のネット制限に対応しています。
- Windowsとのファイル共有に対応しています。
用意するもの
- raspberry pi (以下、ラズパイと記載)
- 外付けHDD(ラズパイのUSB電力供給だと不安定なので、電源アダプター付きが望ましい)
- ポート開放できるルーター
構築手順
DDNSの取得
外出先からNASにアクセスする際、住所となるルーターのIPアドレスが必要です。
しかし、一般的なネット回線契約であればIPは変動するため、DDNSサービスを利用します。
以下のDDNSサービスは、中国でも無料で使用できるため利用しました。
ラズパイのDDNS設定
上記で紹介した様なDDNSは、特定のアドレスにアクセスすることでIPを更新しています。
IPの更新を自動で行ってくれる Ddclient をラズパイにインストールします。
sudo apt update && sudo apt upgrade -y
sudo apt install ddclient -y
インストールを終えたら、以下のコマンドにてnanoエディタを開き、ファイルを変更します。
sudo nano /etc/ddclient.conf
ssl=yes
use=web, web=myip.dnsomatic.com
#freemyip.com
custom=yes
server=freemyip.com
protocol=dyndns2
login=「取得ドメインのトークン」
password=「取得ドメインのトークン」
「取得ドメイン名」.freemyip.com
ドメイン取得後に遷移するページの「If you use ddclient…▼」にトークン等は記載されています。
次に、Ddcliantを起動時に実行させる設定を行います。
sudo nano /etc/default/ddclient
以下の様に変更。
10分毎にルーターのIP確認し、変更していれば自動更新するようになる。
# Configuration for ddclient scripts
# generated from debconf on Thu Jan 16 05:14:29 UTC 2020
#
# /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="10m"
設定後、以下のコマンドで問題なく動くことを確認します。
動かない場合は、「sudo nano /etc/ddclient.conf」を修正してみてください。
sudo ddclient -daemon=0 -verbose
問題なければ以下のコマンドで、起動時に自動化させます
sudo service ddclient restart
VPN設定
下記サイト様を参考に、ラズパイにWireguardをインストールし設定を行ってください。
PiVPN のBashファイルへのアクセスは中国IPだと蹴られます。(アクセス先がgithubなので)
従いまして、Windows等でダウンロードしラズパイに転送して実行しましょう。
設定後に生成される、.confファイルを用いてVPN接続を行います。

中国では使えるDNSサーバーが限られるため、以下の「119.29.29.29」を使用しました。
ルーターの設定
Wireguardの設定にて定めたUDPポートの開放を行います。
ポートの開放方法はルーターに依存するため、取扱説明書をご参照ください。
ラズパイのIP固定
下記サイト様を参考に、ラズパイのIPを固定しましょう。
GUIでの設定の方が楽ちんです。

HDDのマウント
Windowsでも読み込むことを想定しているので、「exfat」でフォーマットしたHDDを使用します。
HDDを接続した状態で、下記コマンドを実行し、HDDのUUIDを確認します。
sudo blkid
下記コマンドを実行。
sudo nano /etc/fstab
最終行に以下を追記。
UUID="step2で調べた値" /mnt/hdd/nashdd exfat defaults,nofail,umask=000 0 0
samba設定
Windowsとのファイル共有のため、sambaをインストールします。
下記コマンドでsambaをインストールします。
sudo apt-get install samba
下記コマンドにて、設定ファイルを変更します。
sudo nano /etc/samba/smb.conf
; interfaces = 127.0.0.0/8 eth0
これの下に「; hosts allow = 192.168. 10.8.」を追加。
; interfaces = 127.0.0.0/8 eth0
; hosts allow = 192.168. 10.8.
下の方にこんな感じで記入。
[pi_nas]
comment = Share folder
path = /mnt/hdd/nashdd/share
create mask = 0777
directory mask = 0777
read only = no
writable = yes
guest ok = no
browsable = yes
force user= pi
各オプションについてはグーグルで検索してください。
「guest ok = no」だとユーザー登録する必要があるので、下記コマンドでユーザーを登録。
sudo useradd "username"
sudo pdbedit -a "username"
接続方法


おわり
中国でも外出先からアクセス可能なNASサーバーを作ることが出来ました。
家に転がってたラズパイくんやHDDくんは、仕事が出来て喜んでいると思います。