ユーザ用ツール

サイト用ツール


wireguard

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
wireguard [2025/12/11 06:52] – [クライアント] arakiwireguard [2026/08/22 01:12] (現在) – [クライアント] araki
行 9: 行 9:
 クライアントとして、Windows, Android, iOSなどもサポートされている。 クライアントとして、Windows, Android, iOSなどもサポートされている。
  
 +nanoKVMは、Tailscaleに対応しており、独自にVPNを用意せずとも、外部からアクセス可能だが、正直、とても遅い。
 +また頻繁に切断される。
 +何か、問題があった時用のラインだと思って納得していたが、WireGuardでVPNを構築した場合、外部からWindows11のデスクトップにアクセスしても十分に使えるレベルでありしかも安定している。
 +WireGuardは非常に強力なリモートアクセスツールとして利用可能である。
 ===== 設定 ===== ===== 設定 =====
  
行 20: 行 24:
  
 パッケージがあるのでそれをインストールすればよい。 パッケージがあるのでそれをインストールすればよい。
 +パッケージにはサーバ、クライアントの別はなく、どちらであってもwireguardをインストールする。
  
 <code bash> <code bash>
行 39: 行 44:
 別にどこに保存してもいいですが、ばらけるとめんどくさいのでとりあえず/etc/wireguard に置きます。 別にどこに保存してもいいですが、ばらけるとめんどくさいのでとりあえず/etc/wireguard に置きます。
 一応中身を見られないように600にしておきます。 一応中身を見られないように600にしておきます。
 +
 +VPNから別のネットワークにアクセスするにはIPフォワーディングを有効化する必要があります。
 +/etc/sysctl.conf の中にある net.ipv4.ip_forward=1の行のコメントマークを削除しておきます。
 +
 +<code ini>
 +# Uncomment the next line to enable packet forwarding for IPv4
 +net.ipv4.ip_forward=1
 +</code>
 +
 +即座に有効化するには以下のコマンドを発行します。
 +
 +<code bash>
 +$ sudo sysctl -p
 +</code>
 +
  
 次に、設定ファイルを作りますが、これはVPNのインターフェイスごとに作ります。 次に、設定ファイルを作りますが、これはVPNのインターフェイスごとに作ります。
行 71: 行 91:
  
 Peerは接続してくるクライアントごとに持たせることができる。 Peerは接続してくるクライアントごとに持たせることができる。
-DHCP機能はないので、IPはここで設定されたものが渡される。+DHCP機能はないので、IPはここで設定されたものが渡される。((とはいえ、DHCPで新しいデバイスをばかばかつなぐような性質のものではないので、これでいいと思われる。DHCPでアドレスを静的割り当てする設定と大差ないので実用上問題はないと思う。))
 クライアント側で生成されたPublicKeyに従って割り当てが行われる。 クライアント側で生成されたPublicKeyに従って割り当てが行われる。
 +-o eth0 の部分は実際に動かすサーバのネットワークインターフェイスと置き換える必要がある。
  
 外部に対して、192.168.1.2:51800/UDP を公開して、サービスを起動すればVPN接続を待ち受ける。 外部に対して、192.168.1.2:51800/UDP を公開して、サービスを起動すればVPN接続を待ち受ける。
行 81: 行 102:
 </code> </code>
  
 +=== 注意 ===
 +
 +サーバ側の wg0.conf を書き換えるときは、必ず適切な方法で行うこと。
 +基本的には wg は設定ファイルを読み込んで動作を開始し、終了時点で自分が持っている設定を wg0.confに書き出して終わるので、ただ単純にファイルを書き換えても反映されないし、終了時に設定がすべて消えてしまいます。
 +
 +一番確実なのは wg-quick down wg0 して、落としてから wg0.confを修正し、wg-quick up wg0することです。
 +
 +ほかにもwg setconf や wg addconf などのコマンドでも可能(なはず)ですので、ゆめゆめ wg0.conf を直接書き換えて、終わった終わったと油断しないように。((何度かそれでうまくつながらなくなってはまったらしい。))
 +
 +きちんと設定が反映されてないと、クライアントは接続は確立するものの、LAN内に到達できない状態になるので、大体ネットワークがおかしな状態になって終了となるのですぐにわかるとは思いますが、外からテストして、つながらなかったりすると、修正するためにまた帰ってこないといけなくなるやもしれないので要注意です。
  
 ==== クライアント ==== ==== クライアント ====
行 96: 行 127:
 <code bash> <code bash>
 $ sudo wg genkey | sudo tee /etc/wireguard/client.key $ sudo wg genkey | sudo tee /etc/wireguard/client.key
-$ sudo cat /etc/wireguard/client.key | wg pubkey | sudo /etc/wireguard/client.pub+$ sudo cat /etc/wireguard/client.key | wg pubkey | sudo tee /etc/wireguard/client.pub
 $ sudo chmod 600 /etc/wireguard/client.{key,pub} $ sudo chmod 600 /etc/wireguard/client.{key,pub}
 </code> </code>
行 125: 行 156:
 $ sudo wg-quick down wg0 $ sudo wg-quick down wg0
 </code> </code>
 +
 +== 自動起動 ==
 +
 +NetworkManagerの機能を利用して、自宅のSSID以外のものに接続したら自動的にVPNを起動させることが可能です。
 +/etc/NetworkManager/dispatcher.d/99-wg0-autostart というスクリプトを実行権限をつけて作成します。
 +
 +<file bash 99-wg0-autostart>
 +#!/bin/bash
 +IFACE=$1
 +STATUS=$2
 +
 +case "$STATUS" in
 +  up)
 +    SSID=$(nmcli -t -f active,ssid dev wifi|grep '^yes'|cut -d: -f2)
 +    case "$SSID" in
 +      myhomewifi*)
 +        # no need to start VPN
 +        wg-quick down wg0
 +        ;;
 +      *)
 +        wg-quick up wg0
 +        ;;
 +    esac
 +    ;;
 +  down)
 +    wg-quick down wg0
 +    ;;
 +esac
 +</file>
 +
 +自宅のアクセスポイントが myhomewifi* であると仮定しています。
 +ここを実際の自宅のWiFiのSSIDに置き換えれば機能します。
  
 === Windows === === Windows ===
行 134: 行 197:
  
 クライアントを[[https://play.google.com/store/apps/details?id=com.wireguard.android|Google Play]]からダウンロードしてインストールします。 クライアントを[[https://play.google.com/store/apps/details?id=com.wireguard.android|Google Play]]からダウンロードしてインストールします。
 +
 +設定ファイルを、wg をインストールしてある任意の端末で生成して、qrencode コマンドを使って、QRコードに変換し、Android上の wgで読み込ませるのが簡単だろう。
 +
 +<code bash>
 +$ qrencode -t ansiutf8 < client.conf
 +</code>
  
 ==== メモ ==== ==== メモ ====
wireguard.1765435949.txt.gz · 最終更新: by araki