2019年8月1日木曜日

次世代 VPN・WireGuard の安定性

一晩 VPN を張った状態で放置してみましたが、ちゃんと VPN 状態は保持されています。





この間、端末側はスリープに入っています。



安定しているといえます。







ただ、素直に接続しないことがあり、その場合は iPhone や Android 機の「キャッシュクリア」→「アプリ起動」→「接続」とすることが必要になります。







iPhone の場合は電源ボタン長押しで「スライドで電源オフ」がでたらホームボタンを長押ししますと、数秒でキャッシュクリアされて、もとのホーム画面に戻ります。



Android 機は「設定」→「アプリ」→「WireGuard」→「ストレージ」→「キャッシュ削除」とします。





端末側アプリにはキャッシュに不要なものが残り、これが接続を妨げるバグがあると思われます。







接続されたかどうかは端末側からサーバーの VPN アドレスに向けて ping して確認します。



サーバーから端末側への ping の方がやりやすいのですが、外で家のネットに接続して使うわけですから端末側から ping とします。









ping アプリは、iPhone ならば "Ping - network utility" がいいかと思います。

このアプリは無料ながら広告が表示されませんからおすすめです。









































また、対象のアドレス入力欄には過去の入力履歴が残っていますので、例えば 1 を入力すると 10.10.0.1 とか、1.1.1.1 とか過去に入力したことがあるアドレスが表示されますからその中のサーバーの VPN アドレスを指定して ping すれば接続 ok か ng かがわかります。













Android ならば "Ping" というアプリでしょうか。

これは無料アプリで広告が出ますが、使い勝手はいいです。



これも過去使ったアドレスが右上の欄にあり、その中から選べばいいようになっています。



もちろん最初は入力します。





















































実際に WireGuard VPN 接続中に "Ping" アプリで ping したのが下記です。



例では "www.google.com" への ping を確認しています。



























































WireGuard ではサーバーとクライアント(またはサーバー同士)の接続は、対等の動作になっています。



つまりどちらが「主」でどちらが「従」ということはありません。



ハンドシェイクを始める側を「イニシエーター」、受け取る側を「レスポンダー」といっていますが、どちも「イニシエーター」にも「レスポンダー」にもなります。









サーバー側(?)の設定ファイルでも [Intaerface] と [Peer] です。

クライアント側(?)の設定もまた然りです。





つまり自分の側が [Interface] であり、相手側が [Peer] です。







こういう部分は OpenVPN やほかの VPN と大きく異る点ですね。



WireGuard は IP アドレスの隠蔽は目的としていなくて、通信の秘匿性を保つことを目的としており、この点もほかの VPN と異なる点です。









お互いに VPN 状態を保つために以下のやり取りをおこなっています。





これは端末側がスリープに入っていても行われます。





1つ目は、お互いに Keepalive を送受して通信状態を保ちます。

2つ目は、お互いにハンドシェイクを送受して通信状態を保ちます。

3つ目は、お互いにハンドシェイクと keypair 交換をおこなって通信状態を保ちます。





これらの3つは、タイミングに一定の法則があるようには見えません。

1〜2分間隔で行われています。





まれに失敗しても次の送受では回復しているようです。



つまり、送受失敗でもそれがなかったかのように次の送受を繰り返すようになっていて、成功で VPN 状態が回復、ということです。



リトライタイマーが働くこともありますが、これは通信経路保持の一つの方法でしょう。





keepalive はお互いの設定に基づいているようです。



とくに設定がない場合は1〜2分間隔になっています。









VPN 状態を保つために行われている3つの通信(送受)はどちらが「主」でどちらが「従」ということはなく、お互いが送信側であったり、受信側であったりしています。





ログ上からはそのように見えます。














0 件のコメント:

コメントを投稿