wireguard/WireGuard\343\201\253\343\202\210\343\202\213VPN\343\201\256\346\247\213\347\257\211.md
... ...
@@ -0,0 +1,120 @@
1
+この文章はgpt-5.2によって生成し、人間がレビューしました。
2
+
3
+## 概要
4
+
5
+この文書では、WireGuardを用いて「VPNネットワーク内のみ通信可能(インターネット経由はしない)」な環境を構築する方法を解説します。
6
+本例では、サーバーと複数のクライアント(例:Raspberry Piを含む)がVPN内で相互通信可能な「ハブ&スポーク型」(全クライアントがサーバー経由で通信)を構築します。
7
+
8
+---
9
+
10
+## 前提
11
+
12
+- **サーバー:** Ubuntuサーバー(例:`vpnserver.example.com`)
13
+- **クライアント:** Raspberry PiやPCなど
14
+- **VPN内アドレス:** `10.100.0.0/24`
15
+- **サーバーのグローバルIP/ドメイン:** `vpnserver.example.com`
16
+
17
+---
18
+
19
+## 1. 鍵の生成
20
+
21
+各ノードで秘密鍵・公開鍵を生成する。
22
+
23
+```bash
24
+umask 077
25
+wg genkey | tee privatekey | wg pubkey > publickey
26
+```
27
+
28
+*備考:秘密鍵ファイル(`privatekey`)と公開鍵ファイル(`publickey`)は厳密な権限(600)で管理推奨。*
29
+
30
+---
31
+
32
+## 2. サーバー側設定(例:`/etc/wireguard/wg0.conf`)
33
+
34
+```ini
35
+[Interface]
36
+Address = 10.100.0.1/24
37
+ListenPort = 51820
38
+PrivateKey = <サーバーの秘密鍵>
39
+
40
+# クライアント1
41
+[Peer]
42
+PublicKey = <クライアント1の公開鍵>
43
+AllowedIPs = 10.100.0.2/32
44
+
45
+# クライアント2
46
+[Peer]
47
+PublicKey = <クライアント2の公開鍵>
48
+AllowedIPs = 10.100.0.3/32
49
+
50
+# 追加のクライアントも同様...
51
+```
52
+
53
+---
54
+
55
+## 3. クライアント側設定(例:`/etc/wireguard/wg0.conf`, クライアント1の場合)
56
+
57
+```ini
58
+[Interface]
59
+PrivateKey = <クライアント1の秘密鍵>
60
+Address = 10.100.0.2/24
61
+
62
+[Peer]
63
+PublicKey = <サーバーの公開鍵>
64
+Endpoint = vpnserver.example.com:51820
65
+AllowedIPs = 10.100.0.0/24
66
+PersistentKeepalive = 25
67
+```
68
+- 他のクライアントも同様、Address/PrivateKey/公開鍵をそれぞれ変えて作成。
69
+
70
+---
71
+
72
+## 4. ポート開放
73
+
74
+サーバーのUDP 51820ポートを必ず開放する(例: UFWの場合):
75
+```bash
76
+sudo ufw allow 51820/udp
77
+```
78
+
79
+---
80
+
81
+## 5. サービス起動・自動起動設定
82
+
83
+全ノードで下記のコマンドを実施。
84
+
85
+```bash
86
+sudo systemctl start wg-quick@wg0
87
+sudo systemctl enable wg-quick@wg0
88
+```
89
+
90
+---
91
+
92
+## 6. 接続テスト
93
+
94
+- サーバー/クライアント間でVPN内アドレス宛に`ping`を実行。
95
+ - 例:`ping 10.100.0.1`
96
+ - 例:`ping 10.100.0.2`
97
+- すべてのクライアントがサーバーを経由して相互通信できることを確認。
98
+
99
+---
100
+
101
+## 7. サーバーの設定上の注意点
102
+
103
+- サーバーの`[Peer]`セクションには**全クライアントのPublicKeyとIP(/32)を1エントリずつ追加**すること。
104
+- クライアントの設定`AllowedIPs`は**サブネット全体(例: `10.100.0.0/24`)**を含めて、VPN内通信がサーバーへ流れるようにする。
105
+
106
+---
107
+
108
+## 8. ルーティング・フォワーディング設定
109
+
110
+- **VPN内通信のみ**の場合、サーバーでの`net.ipv4.ip_forward`等のパケット転送設定は**不要**。
111
+- **VPN経由でインターネット転送をしたい場合**のみ、追加でiptables/NAT設定が必要となる(本例では不要)。
112
+
113
+---
114
+
115
+## 9. トラブルシューティング
116
+
117
+- サーバー/クライアントとも`sudo wg`でハンドシェイクや通信量が増えているかを確認。
118
+- FirewallでVPNサブネットの通信がブロックされていないか注意。
119
+ - UFW等を使う場合は `sudo ufw allow from 10.100.0.0/24` も忘れずに。
120
+