wireguard
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| wireguard [2025/12/11 06:28] – 作成 araki | wireguard [2025/12/17 01:01] (現在) – [クライアント] araki | ||
|---|---|---|---|
| 行 9: | 行 9: | ||
| クライアントとして、Windows, | クライアントとして、Windows, | ||
| + | nanoKVMは、Tailscaleに対応しており、独自にVPNを用意せずとも、外部からアクセス可能だが、正直、とても遅い。 | ||
| + | また頻繁に切断される。 | ||
| + | 何か、問題があった時用のラインだと思って納得していたが、WireGuardでVPNを構築した場合、外部からWindows11のデスクトップにアクセスしても十分に使えるレベルでありしかも安定している。 | ||
| + | WireGuardは非常に強力なリモートアクセスツールとして利用可能である。 | ||
| ===== 設定 ===== | ===== 設定 ===== | ||
| 行 20: | 行 24: | ||
| パッケージがあるのでそれをインストールすればよい。 | パッケージがあるのでそれをインストールすればよい。 | ||
| + | パッケージにはサーバ、クライアントの別はなく、どちらであってもwireguardをインストールする。 | ||
| <code bash> | <code bash> | ||
| 行 39: | 行 44: | ||
| 別にどこに保存してもいいですが、ばらけるとめんどくさいのでとりあえず/ | 別にどこに保存してもいいですが、ばらけるとめんどくさいのでとりあえず/ | ||
| 一応中身を見られないように600にしておきます。 | 一応中身を見られないように600にしておきます。 | ||
| + | |||
| + | VPNから別のネットワークにアクセスするにはIPフォワーディングを有効化する必要があります。 | ||
| + | / | ||
| + | |||
| + | <code ini> | ||
| + | # Uncomment the next line to enable packet forwarding for IPv4 | ||
| + | net.ipv4.ip_forward=1 | ||
| + | </ | ||
| + | |||
| + | 即座に有効化するには以下のコマンドを発行します。 | ||
| + | |||
| + | <code bash> | ||
| + | $ sudo sysctl -p | ||
| + | </ | ||
| + | |||
| 次に、設定ファイルを作りますが、これはVPNのインターフェイスごとに作ります。 | 次に、設定ファイルを作りますが、これはVPNのインターフェイスごとに作ります。 | ||
| 行 44: | 行 64: | ||
| これも600で作成します。 | これも600で作成します。 | ||
| - | < | + | < |
| [Interface] | [Interface] | ||
| Address = 192.168.10.1/ | Address = 192.168.10.1/ | ||
| 行 71: | 行 91: | ||
| Peerは接続してくるクライアントごとに持たせることができる。 | Peerは接続してくるクライアントごとに持たせることができる。 | ||
| - | DHCP機能はないので、IPはここで設定されたものが渡される。 | + | DHCP機能はないので、IPはここで設定されたものが渡される。((とはいえ、DHCPで新しいデバイスをばかばかつなぐような性質のものではないので、これでいいと思われる。DHCPでアドレスを静的割り当てする設定と大差ないので実用上問題はないと思う。)) |
| クライアント側で生成されたPublicKeyに従って割り当てが行われる。 | クライアント側で生成されたPublicKeyに従って割り当てが行われる。 | ||
| + | -o eth0 の部分は実際に動かすサーバのネットワークインターフェイスと置き換える必要がある。 | ||
| 外部に対して、192.168.1.2: | 外部に対して、192.168.1.2: | ||
| 行 78: | 行 99: | ||
| <code bash> | <code bash> | ||
| $ sudo systemctl enable wg-quick@wg0 | $ sudo systemctl enable wg-quick@wg0 | ||
| - | $ sudu systemctl start wg-quick@wg0 | + | $ sudo systemctl start wg-quick@wg0 |
| </ | </ | ||
| ==== クライアント ==== | ==== クライアント ==== | ||
| + | |||
| + | === Linux (Ubuntu) === | ||
| + | |||
| + | サーバと同じく wireguard パッケージをインストールする。 | ||
| + | |||
| + | <code bash> | ||
| + | $ sudo apt install -y wireguard | ||
| + | </ | ||
| + | |||
| + | 設定も鍵を作って、/ | ||
| + | |||
| + | <code bash> | ||
| + | $ sudo wg genkey | sudo tee / | ||
| + | $ sudo cat / | ||
| + | $ sudo chmod 600 / | ||
| + | </ | ||
| + | |||
| + | <file ini wg0.conf> | ||
| + | [Interface] | ||
| + | PrivateKey = yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy= | ||
| + | Address = 192.168.10.2/ | ||
| + | DNS = 192.168.1.1 | ||
| + | |||
| + | [Peer] | ||
| + | PublicKey = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx= | ||
| + | EndPoint = vpn.example.com: | ||
| + | AllowedIPs = 192.168.10.0/ | ||
| + | </ | ||
| + | |||
| + | 上の例では、LAN内へのトラフィックだけをVPNへ流すようにしていますが、AllowedIPs = 0.0.0.0/0 とすればすべてのトラフィックをVPN経由とします。 | ||
| + | |||
| + | デスクトップ版を使っている場合はタスクバーに統合されているウィジェットから起動することもできますが、手動で起動する場合には、コマンドラインから以下のようにします。 | ||
| + | |||
| + | <code bash> | ||
| + | $ sudo wg-quick up wg0 | ||
| + | </ | ||
| + | |||
| + | 停止は次のようになります。 | ||
| + | |||
| + | <code bash> | ||
| + | $ sudo wg-quick down wg0 | ||
| + | </ | ||
| + | |||
| + | == 自動起動 == | ||
| + | |||
| + | NetworkManagerの機能を利用して、自宅のSSID以外のものに接続したら自動的にVPNを起動させることが可能です。 | ||
| + | / | ||
| + | |||
| + | <file bash 99-wg0-autostart> | ||
| + | #!/bin/bash | ||
| + | IFACE=$1 | ||
| + | STATUS=$2 | ||
| + | |||
| + | case " | ||
| + | up) | ||
| + | SSID=$(nmcli -t -f active,ssid dev wifi|grep ' | ||
| + | case " | ||
| + | myhomewifi*) | ||
| + | # no need to start VPN | ||
| + | ;; | ||
| + | *) | ||
| + | wg-quick up wg0 | ||
| + | ;; | ||
| + | esac | ||
| + | ;; | ||
| + | down) | ||
| + | wg-quick down wg0 | ||
| + | ;; | ||
| + | esac | ||
| + | </ | ||
| + | |||
| + | 自宅のアクセスポイントが myhomewifi* であると仮定しています。 | ||
| + | ここを実際の自宅のWiFiのSSIDに置き換えれば機能します。 | ||
| + | |||
| + | === Windows === | ||
| + | |||
| + | クライアントを[[https:// | ||
| + | |||
| + | |||
| + | === Android === | ||
| + | |||
| + | クライアントを[[https:// | ||
| + | |||
| + | ==== メモ ==== | ||
| + | |||
| + | === 鍵の転送 === | ||
| + | |||
| + | 設定ファイルには、鍵を書込む必要があるが、当然鍵をネットワーク越しに渡すのは注意が必要である。 | ||
| + | 秘密鍵は外部に出さないように注意すること。 | ||
| + | 公開鍵だけがわかったところで簡単にはクラックされないが両方そろうとそれは問題である。 | ||
| + | |||
wireguard.1765434509.txt.gz · 最終更新: by araki
