前回の記事 では内部ネットワークからファイルサーバーにアクセスする方法を記事にしました。
今回は外出先で外部のネットワークからファイルサーバーにアクセスするまでの手順をメモにします✍️
サーバー側
クライアント側 MacBook Air
ネットワークインターフェース名を確認します。
通常、eth0、ens33などの名前が使われます。
ip addr/etc/netplan/01-network-manager-all.yaml の中身は標準では次のとおりです。
# Let NetworkMnager manage all devices on this system
network:
version: 1
renderer: NetworkManager後述の理由で IPv4 ではなく、IPv6 での公開を目指します。
これであればルーター側の設定がDS-Liteでも問題なくできるはずです。
SambaがIPv6でリスンするように設定します。
/etc/samba/smb.confの[global]セクションに次の行を追加します
interface = "lo" "enp3s0" "wlpws0"
bind interfaces only = yes
smb ports = 445Sambaが利用する必要なポートをファイアウォールルールに追加します。
sudo ufw allow sambaSambaでは(137, 138, 139, 445)のポートを使用します。
外部のネットワークに接続する場合は 445 のみの解放の方がセキュリティリスクが低くなるかと思います。
sudo ufw reload
ファイアウォールの設定を再読み込みして、追加したルールを適用します。
sudo ufw allow from any to any port 445 proto tcp
sudo ufw reload↑のように書くとTCP用の445のみの開放になります。
udo ufw reload は、Ubuntuのファイアウォール(UFW: Uncomplicated Firewall)に関連するコマンドです。
ufw allow では
が解放されます。
ufw status で解放されているポートの確認ができます。
sudo ufw status間違って開放した場合は次のコマンドで削除しておきましょう。
sudo ufw delete allow HOGEサーバー側のIPアドレスが変更されても、接続を確立するために、
https://noip.com を使ってDDNSを使用することにしました。
が出来ていることを前提に次に進みます。
出来ているかは以下のコマンドで確認してみてください。
sudo systemctl status ddclient出来ていない方は、次の記事を参照してください。
Easy-RSA の設定が古い情報だとうまくいかないので、以下を参考にしました。https://community.openvpn.net/openvpn/wiki/EasyRSA3-OpenVPN-Howto
L2TP/IPsecやOpenVPNを設定し、VPN経由で内部ネットワークにアクセスします。
これにより、DS-Liteの制約を回避できます。
sudo apt intall openvpn easy-rsa -yPIK ディレクトリの作成と初期化
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pkimake-cadir は easy-rsa の機能でOpneVPNの設定を含んだディレクトリを作成できるコマンドです。
CAのビルド
このコマンドを実行すると、
Common Name(eg: your user, host, or server name)[server]:
と聞かれるので、名前の入力をしましょう。
./easyrsa build-ca nopassサーバーの証明書の作成
./easyrsa gen-req server nopassサーバーの鍵の作成
./easyrsa sign-req server serverDHパラメータの作成
./easyrsa gen-dhクライアント用の証明書と鍵を作成します。
クライアント名は任意の名前を指定します(例:client1)。
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1生成した証明書と鍵をOpenVPNのディレクトリにコピーします。
sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/
sudo cp ~/openvpn-ca/pki/issued/client1.crt /etc/openvpn/
sudo cp ~/openvpn-ca/pki/private/client1.key /etc/openvpn/
/etc/openvpn/server.confファイルを作成し、
以下の内容を追加します。
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-CBC
persist-key
persist-tun
status openvpn-status.log
verb 3OpenVPNサービスを起動し、システム起動時に自動的に開始するように設定します。
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@serverクライアント用の設定ファイル(.ovpn)を作成します。例えば、client1.ovpnファイルを以下の内容で作成します。
remote の hoge.ddns.net は動的IPの https://noip.com で作成したDNSです。
クライアント設定ファイルと共に、
ca.crt、client1.crt、client1.key
をUSBメモリなどを使ってクライアントデバイス(私の場合はMacBook)にコピーします。
client
dev tun
proto udp
remote hoge.ddns.net 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
cipher AES-256-CBC
verb 3
ファイアウォール設定でOpenVPNのポートを開放します。
sudo ufw allow 1194/udp私はMacBook Air を使っているので tunnelblick を使用しました。
brew install --cask tunnelblickTunnnelblick は先ほどクライアント側(MacBook)に移してきた hoge.ovpn ファイルをドラッグ&ドロップしたらOKです。
そうすると、個人用かユーザー全体かを聞かれると思うのですが、
今回の用途では個人用でOKです。

私が使っているルーターは TP-Link Archer AX10 です。
このルーターでの設定を紹介します。
私と同様TP-Linkをお使いの場合は https://tplinkwifi.net/ にアクセスして管理画面に入りましょう。
まず、DS-Lite, MAP-E, V6 プラス の設定ではポートの設定ができないので、
これ以外を選択する必要があります。(ソース:https://www.tp-link.com/jp/support/faq/2799/)
そのためPPPoE方式にする必要があります。
それぞれの方式の違いについての記事はこちら
しかし、普段使いしているルーターと同じ場合 PPPoE に切り替えるとDS-Liteに比べ遅く感じてしまいます。
結局IPv4 での接続はやめることにしました。

そしてブロッコリーも食べた方がいい
coiai