さくらのクラウドでwireguardを使ってみる
概要
さくらのクラウドで作ったVPCルーター配下のサーバとグローバルネットワークに直接繋がっているサーバ間を
wireguardを使ってVPNを張ってみます。
構成
共有セグメントに繋がっているグローバルのIPが振られたサーバをVPNサーバとし、
VPCルータ配下にあるサーバをクライアントとしてwireguardを使ってみます。
インスタンスの構成情報
- VPNサーバ側
- OS: Ubuntu 20.04 LTS
- eth0 には 153.125.137.154/24 が設定されている
- クライアント側
- OS: Ubuntu 20.04 LTS
- eth0 には 192.168.1.15/24 が設定されている
wireguardについて
- 公式: https://www.wireguard.com/
- とにかくシュッと始めるなら、公式のquickstart を見るのがヨイヨイ
sidebysideの項目のvideo通りにやるとシュッと繋がります。
wireguardのインストール
- OS: Ubuntu 20.04 LTS
- eth0 には 153.125.137.154/24 が設定されている
- OS: Ubuntu 20.04 LTS
- eth0 には 192.168.1.15/24 が設定されている
- 公式: https://www.wireguard.com/
- とにかくシュッと始めるなら、公式のquickstart を見るのがヨイヨイ
sidebysideの項目のvideo通りにやるとシュッと繋がります。
wireguardのインストール
VPNサーバ側とクライアント側で行う
sudo apt update
sudo apt install wireguard
公開鍵と秘密鍵を作る
VPNサーバ側とクライアント側の両方でする。
umask 077 # やらなくてもいいんだけどやらないと注意書きが標準出力にペロッと出るし、chmodで都度permissionを変えないといけない
wg genkey > privatekey # wg genkey コマンドで秘密鍵を作る
wg pubkey < privatekey > publickey # wg pubkey コマンドで秘密鍵から公開鍵を作る
privatekeyファイルとpublickeyファイルの内容は以下の感じ。
# サーバ側
cat privatekey
uCSI+741hx3v42pgs3zwMzO8nm/Tkd4wi3yO4H4Xq3k=
cat publickey
woN4V2wU28RhHK3OSNzRuSHTMmEwDlkPcUiThAvO1g4=
---
# クライアント側
cat privatekey
iCki6pNR+stpegsWvg4LFJyOiNW1IiA+j92eDNq6S2I=
cat publickey
fRfhnfj3rLuxG9y1LAMKBeZ8uoh17rf/TFNnokAiQBA=
サーバ側で設定ファイルを書く
/etc/wireguard/ 配下に wg0.conf というファイルを作って以下の感じで書く。
[interface]
PrivateKey = サーバ側の秘密鍵
Address = VPNの時に割り当てるIPアドレス
ListenPort = 待ち受けるポート番号
[Peer]
PublicKey = クライアント側の公開鍵
AllowedIPs = 接続を許可するIP
---
# 今回はこんな感じ
[interface]
PrivateKey = uCSI+741hx3v42pgs3zwMzO8nm/Tkd4wi3yO4H4Xq3k=
Address = 10.0.0.1
ListenPort = 37859
[Peer]
PublicKey = fRfhnfj3rLuxG9y1LAMKBeZ8uoh17rf/TFNnokAiQBA=
AllowedIPs = 10.0.0.2/32
サーバ側でwireguardが自動起動するようにする
sudo systemctl enable wg-quick@wg0
sudo systemctl start [email protected]
サーバ側でwg0デバイスができているのを確認する
ip addr
(前略)
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/32 scope global wg0
valid_lft forever preferred_lft forever
クライアント側で設定ファイルを書く
sudo systemctl enable wg-quick@wg0
sudo systemctl start [email protected]
ip addr
(前略)
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.1/32 scope global wg0
valid_lft forever preferred_lft forever
クライアント側で設定ファイルを書く
/etc/wireguard/ 配下に wg0.conf というファイルを作って以下の感じで書く。
[interface]
PrivateKey = クライアントの秘密鍵
Address = VPNの時に割り当てるIPアドレス
[Peer]
PublicKey = サーバ側の公開鍵
EndPoint = サーバ側のIP:待ち受けているポート番号
AllowedIPs = VPNサーバ側に流すトラフィックの範囲
---
# 今回はこんな感じ
[interface]
PrivateKey = iCki6pNR+stpegsWvg4LFJyOiNW1IiA+j92eDNq6S2I=
Address = 10.0.0.2
[Peer]
PublicKey = woN4V2wU28RhHK3OSNzRuSHTMmEwDlkPcUiThAvO1g4=
EndPoint = 153.125.137.154:37859
AllowedIPs = 10.0.0.1/32
#AllowedIPs = 0.0.0.0/0 とすると全部の通信をVPNサーバ経由でする感じになる。サーバ側でnatとかの設定をしないとグローバルには繋がらない。後述。
クライアント側でwireguardを起動させて、pingを打ってみる。
sudo wg-quick up wg0
ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) バイトのデータ
64 バイト応答 送信元 10.0.0.1: icmp_seq=1 ttl=64 時間=0.879ミリ秒
64 バイト応答 送信元 10.0.0.1: icmp_seq=2 ttl=64 時間=0.971ミリ秒
64 バイト応答 送信元 10.0.0.1: icmp_seq=3 ttl=64 時間=1.39ミリ秒
^C
--- 10.0.0.1 ping 統計 ---
送信パケット数 3, 受信パケット数 3, パケット損失 0%, 時間 2000ミリ秒
rtt 最小/平均/最大/mdev = 0.879/1.080/1.391/0.222ミリ秒
sudo wg-quick up wg0
ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) バイトのデータ
64 バイト応答 送信元 10.0.0.1: icmp_seq=1 ttl=64 時間=0.879ミリ秒
64 バイト応答 送信元 10.0.0.1: icmp_seq=2 ttl=64 時間=0.971ミリ秒
64 バイト応答 送信元 10.0.0.1: icmp_seq=3 ttl=64 時間=1.39ミリ秒
^C
--- 10.0.0.1 ping 統計 ---
送信パケット数 3, 受信パケット数 3, パケット損失 0%, 時間 2000ミリ秒
rtt 最小/平均/最大/mdev = 0.879/1.080/1.391/0.222ミリ秒
sudo wg-quick down wg0 とすると繋がらなくなる。
VPNサーバ側に設定をして、全部の通信をVPNサーバ経由でしてみる。
iptablesの設定
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/etc/sysctl.conf ファイルを編集して転送を有効にする
sudo iptables -A FORWARD -o wg0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/etc/sysctl.conf ファイル内の
#net.ipv4.ip_forward=1
の行のコメントを外す。(先頭の#を削除する)
# コメント外す前
#net.ipv4.ip_forward=1
---
# 外した後
net.ipv4.ip_forward=1
以下のコマンドで設定を反映させる
sudo sysctl -p
クライアント側から、www.wireguard.com へのtracerouteを見てみる
sudo wg-quick up
wg0 した状態
traceroute www.wireguard.com
traceroute to www.wireguard.com (147.75.79.213), 30 hops max, 60 byte packets
1 10.0.0.1 (10.0.0.1) 4.634 ms 4.156 ms 4.109 ms # <-VPNサーバを通ってる!
2 153.125.137.2 (153.125.137.2) 5.095 ms 5.074 ms 5.055 ms
3 192.168.11.12 (192.168.11.12) 5.009 ms 5.007 ms 4.989 ms
(後略)
sudo wg-quick down
wg0 した状態
traceroute www.wireguard.com
traceroute to www.wireguard.com (147.75.79.213), 30 hops max, 60 byte packets
1 _gateway (192.168.1.254) 0.808 ms 0.796 ms 0.779 ms #<-VPNサーバを通ってない!
2 133.242.237.2 (133.242.237.2) 1.623 ms 1.646 ms 1.821 ms
3 192.168.11.12 (192.168.11.12) 1.821 ms 1.752 ms 192.168.10.11 (192.168.10.11) 1.557 ms
(後略)
おわり
シュシュっとできて便利。
公式のquickstart のsidebysideのvideoの方法で設定すると
再起動したら設定したものは消えるので気軽に試せるよよよ。
androidとios用のアプリもある。
Author And Source
この問題について(さくらのクラウドでwireguardを使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/tomokitamaki/items/ce895cf5197df4cd7849著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .