Wireguardを構築して宅内Lanに接続する

NW

構成イメージ

VPSに立てたWireguardサーバーと宅内リレー用端末を経由してLANにアクセスする。

サーバー構築

■スペック
今回は、サーバー構築先VPSとしてLinodeをえらんだ。
#アカウント開設するときは↓から登録すると双方クレジットがもらえるのでおなしゃす!
https://www.linode.com/?r=724050700aa10755472fed8d058f5664420d5230

サーバースペック
– 1GM memory
– 25GB Storage
– 1TB transfe
– Ubuntu 20.04LTS

■構築手順
Wireguardは構築のしやすさもウリなので、基本的にaptしてConfig書くだけ

$ apt install wireguard
$ wg genkey | tee privatekey | wg pubkey > pub //接続用のキーを生成
//接続クライアントが多数いる場合は、ここでクライアント分キーを生成しておくとconfigで楽
$ chmod 600 privatekey  //一応パーミッションを変更しておく

$ vim /etc/sysctl.conf  //通信の転送を許可しておく。
右記箇所をコメントアウト
net.ipv4.ip_forward=1 
$ sysctl -p //反映する。

下準備は完了したので、configを書いていく

 $ vim /etc/wireguard/wg0.conf
interfaceはサーバー側の設定
peerはクライアント側の設定

[Interface]
PrivateKey = 上で生成したprivate Key
Address = 172.16.99.1/32 #wireguradで使うプライベートIP
ListenPort = 80 #server側がListenするIpを指定。
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

4つのクライアントからアクセスできるように書いておく
[Peer]
PublicKey = pubkey①
AllowedIPs = 172.16.99.2/32

[Peer]
PublicKey =  pubkey②
AllowedIPs = 172.16.99.3/32,172.16.0.0/16,10.0.0.0/8

[Peer]
PublicKey =  pubkey③
AllowedIPs = 172.16.99.4/32

[Peer]
PublicKey =   pubkey④
AllowedIPs = 172.16.99.5/32

保存して、wireguardを起動する。

$ wg-quick up /etc/wireguard/wg0.conf

これでオッケー!
クライアントから接続できるか試してみる。

クライアントから接続する(mac)

クライアント(mac)から接続してみる。
クライアントソフトは以下からダウンロードできる。
https://www.wireguard.com/install/

★画面イメージ

右下の+ボタン→空のトンネルを作成する。より新規にTunnel設定を作成する。

今度は逆転してinterfaceにクライアントMac側の設定を記載していく。
privatekeyにpubkey①に対応するキー
Addressには172.16.99.2/32
DNSにはなんでもいいのでcloudflare(1.1.1.1)やローカルDNSがあればそれを書く。

peerにはサーバーの情報を記載する。
publickeyにはサーバーキーに対応する。
AllowedIPsにはwiregurad経由で通信するIPの範囲を書く。
0.0.0.0/0ならば全通信になる。今回はLANのみなので、172.16.0.0/16と書いておく。
EndpointsにはサーバーのIPを記載する。

設定できたら有効化し接続元IPがVPSのものになっていれば成功

ラズパイの設定

ラズパイにもサーバー側と同じ流れでwireguardを導入していく。
違う部分はラズパイもクライアント扱いのため、confにはmacと同様の設定を書く。

$ apt install wireguard
$ vim /etc/sysctl.conf  //通信の転送を許可しておく。
右記箇所をコメントアウト
net.ipv4.ip_forward=1 
$ sysctl -p //反映する。
$ vim /etc/wireguard/wg0.conf
interfaceはクライアント側の設定
peerはサーバー側の設定

[Interface]
PrivateKey = 生成したprivate Key②
Address = 172.16.99.3/32 #raspiに割り当てるプライベートIP
DNS = 1.1.1.1

4つのクライアントからアクセスできるように書いておく
[Peer]
PublicKey = server_key
AllowedIPs = 172.16.99.2/32
Endpoints = server_ip

そして、踏み台用にNATに設定する。

iptables -t nat -A POSTROUTING -s 172.16.99.0/24 -o ens0 -j MASQUERADE

これでmacからLAN側端末へ接続できる。

おわり

wireguardはvpnなのに速度低下が少なく(体感1~2mbps低下する程度で誤差の範囲)
簡単にできるのでおすすめです!

NW技術
スポンサーリンク
Probiees

コメント

タイトルとURLをコピーしました