❓ これは何?
前回の記事 では内部ネットワークからファイルサーバーにアクセスする方法を記事にしました。
今回は外出先で外部のネットワークからファイルサーバーにアクセスするまでの手順をメモにします✍️
🪴 環境
サーバー側
- Distributor ID: Ubuntu
- Description: Ubuntu 24.04 LTS
- Release: 24.04
- Codename: noble
- samba
クライアント側 MacBook Air
- sonoma 14.5(23F79)
- Apple M1
- 16GB
🖐️ 手順
Samba の IPv6 設定
ネットワークの確認
ネットワークインターフェース名を確認します。
通常、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でも問題なくできるはずです。
smb.conf の設定
SambaがIPv6でリスンするように設定します。
/etc/samba/smb.confの[global]セクションに次の行を追加します
interface = "lo" "enp3s0" "wlpws0"
bind interfaces only = yes
smb ports = 445
🔥 ファイヤウォールの設定
Sambaが利用する必要なポートをファイアウォールルールに追加します。
samba用ポートを全開放したい場合
sudo ufw allow samba
Sambaでは(137, 138, 139, 445)のポートを使用します。
外部のネットワークに接続する場合は 445 のみの解放の方がセキュリティリスクが低くなるかと思います。
sudo ufw reload
ファイアウォールの設定を再読み込みして、追加したルールを適用します。
sudo ufw allow from any to any port 445 proto tcp
sudo ufw reload
↑のように書くとTCP用の445のみの開放になります。
🐏 ufw とは?
udo ufw reload は、Ubuntuのファイアウォール(UFW: Uncomplicated Firewall)に関連するコマンドです。
ufw allow では
- TCP/UDP 137 (NetBIOS Name Service)
- TCP/UDP 138 (NetBIOS Datagram Service)
- TCP 139 (NetBIOS Session Service)
- \TCP 445 (Microsoft-DS Active Directory, Windows shares)
が解放されます。
ファイヤウォールの確認
ufw status で解放されているポートの確認ができます。
sudo ufw status
間違って開放した場合は次のコマンドで削除しておきましょう。
sudo ufw delete allow HOGE
動的DNSの利用
サーバー側のIPアドレスが変更されても、接続を確立するために、
https://noip.com を使ってDDNSを使用することにしました。
- noip.com でのドメインの作成(sample.ddns.net など)
- apt install ddclient と設定
が出来ていることを前提に次に進みます。
出来ているかは以下のコマンドで確認してみてください。
sudo systemctl status ddclient
出来ていない方は、次の記事を参照してください。
VPN の利用
Easy-RSA の設定が古い情報だとうまくいかないので、以下を参考にしました。https://community.openvpn.net/openvpn/wiki/EasyRSA3-OpenVPN-Howto
L2TP/IPsecやOpenVPNを設定し、VPN経由で内部ネットワークにアクセスします。
これにより、DS-Liteの制約を回避できます。
sudo apt intall openvpn easy-rsa -y
PIK ディレクトリの作成と初期化
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
make-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 server
DHパラメータの作成
./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 3
OpenVPNサービスを起動し、システム起動時に自動的に開始するように設定します。
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 tunnelblick
Tunnnelblick は先ほどクライアント側(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 での接続はやめることにしました。
🥦 まとめ
そしてブロッコリーも食べた方がいい
コメントを残す