ピックアップ
WireGuardを個人的に試した件
VPNの理解のために、
WireGuardを使用して、
試すのが良いと意見を聞き、
それを試すことにした。
あくまで、
個人的な備忘録なので、
ChatGPT等に聞きながら、
自分なりに見返したいところだけ、
この記事にメモしてる。
前提環境 / 準備
環境としては、
Ubuntu
を使って試した。
sudo apt install wireguard -yで導入。
設定
メモ
2つのサーバー間
──────────────────
サーバーとクライアントで何が違うか
──────────────────
- A(サーバー)側
- ListenPort を開けて待ち受ける
- ピアの公開鍵を登録して AllowedIPs を指定
- Endpoint は不要
→ 「自分から接続しに行く」わけじゃなく、相手が接続してくるのを待つだけ
- B(クライアント)側
- 自分の秘密鍵・VPN内IPを設定
- 接続先サーバー A の公開鍵を登録
- AllowedIPs で許可するルーティングを指定
- Endpoint 必須
→ 「どこに接続するか」を知っている必要がある(AのグローバルIP:51820)
要するに、両方の設定ファイルは構造は同じ [Interface] と [Peer] だけど、値の意味が逆向きになるんだよね。
イメージで言うと:
Droplet A (サーバー)
[Interface] → 自分の秘密鍵、IP、ListenPort
[Peer] → Bの公開鍵、AllowedIPs
Droplet B (クライアント)
[Interface] → 自分の秘密鍵、IP
[Peer] → Aの公開鍵、AllowedIPs、Endpoint
なるほど、
だけど、
片方だけ、Endpointが入るのがわからん。
Interface, Peerがわからんからか。
そもそも、Interface, Peerとは?
──────────────────
WireGuardの本質:VPNトンネル
──────────────────
VPNはざっくり言うと “自分と相手を安全につなぐ暗号化トンネル” だよね。
そのトンネルを作るために必要なのが鍵とIP情報。
- Interface → 「自分側のトンネル情報」
- Peer → 「相手側のトンネル情報」
──────────────────
Interface(自分)とは?
──────────────────
- 自分が持つ秘密鍵
- 自分のVPN内のIPアドレス
- (サーバーならListenPortで待ち受け)
つまり 「自分のトンネルをどう作るか」 を決める部分。
ここを見れば「このノードはVPN上でどのIPを持ってるのか、どの鍵で通信するのか」がわかる。
──────────────────
Peer(相手)とは?
──────────────────
- 相手の公開鍵
- 相手に許可するIP(AllowedIPs)
- (クライアントなら接続先としてEndpoint)
つまり 「この相手と通信していいか」 の情報。
Peerに書いた公開鍵とIPにだけ通信が許可される。
ここを見ると「誰とつながるのか」がわかる。
──────────────────
図でイメージすると
Droplet A (サーバー)
Interface → 自分の鍵、IP、ListenPort
Peer → Bの公開鍵、AllowedIPs
Droplet B (クライアント)
Interface → 自分の鍵、IP
Peer → Aの公開鍵、AllowedIPs、Endpointこれ、
Interface は必ず「自分」、Peer は必ず「相手」
がポイントらしい。
さらに、
WireGuard は双方向通信できるけど、設定上は
どちらかを“起点”として接続を開始するかどうか
という役割分担で考えると良いらしい。
なるほど、
少しわかったような気がする。
整理
ポイントはこう整理できる:
──────────────────
- 双方向通信は可能
──────────────────
- WireGuardはトンネルが一度張られると、両方向で暗号化通信できる
- だから「どちらも設定ファイルは必要」
- つまり両方に Interface と Peer の情報を書く必要がある
──────────────────
2. でも接続の開始は片方が主体
──────────────────
- 「サーバー」と呼ぶ方は ListenPort を開いて待つだけ
- 「クライアント」と呼ぶ方は Endpoint を指定して接続しに行く
- 接続が確立すれば、双方向通信はどちらからもできる
──────────────────
3. まとめると
──────────────────
- 両方に設定が必要 → トンネルを作るには双方が自分用Interfaceと相手用Peerを持つ
- 接続開始は片方だけ → Endpointを書いて自分から接続するのはクライアントだけ
- トンネル確立後は双方向通信可能 → データのやり取りはどちらからでもOK
視点としては、
- 設定は「自分視点」
- 接続開始役を決めると整理しやすい
こう考えると、AとBのconfが「同じ構造で値だけ違う」理由も納得できる。
通信試す
サーバーA,Bで
sudo wg-quick up wg0をやって立ち上げたら、
サーバーA
ping 10.0.0.1サーバーB
ping 10.0.0.2これでうまく接続できました。
おすすめ書籍
コメント一覧
コメントはまだありません。




コメントを残す