クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

VPNのトンネルが守るもの(WireGuard)

このレッスンのあとで: VPNが何を守るのかを説明できる。

50分のレッスンコマンド5件WireGuard のラボ:2つの拠点をつなぐ VPN トンネルをブラウザーで作る

二つの店と一つの在庫表

町のパン屋が、となりの市に二号店を出しました。どちらの店のレジも、本店にある一つの在庫表を見に行きます。

二つの店の間にはインターネットがあります。途中の回線を扱う人なら、そこを通るデータを読めてしまうかもしれません。

パン屋がほしいのは、人通りの多い場所を通る自分専用の道です。その道がVPNです。

このレッスンのゴール

メモ

VPNが何を守るのかを説明できる。

重要な言葉

ことばいみ
暗号化鍵を持つ人だけが読めるように、データをかき混ぜること
鍵データを閉じたり開けたりする秘密の値
秘密鍵鍵の組のうち、だれにも渡さない方
公開鍵鍵の組のうち、相手に渡してよい方
トンネル二つの地点の間で、パケットを別のパケットの中に入れて運ぶこと
VPN暗号化したトンネルでつくる、仮想の専用ネットワーク

学生が入力するセルは、このプレビューでは空白です。

間にインターネットがある二つのネットワーク

ラボには二つの拠点があります。拠点Aは 10.1.0.0/24、拠点Bは 10.2.0.0/24 で、二つのゲートウェイはインターネット役の回線 203.0.113.0/24 でつながっています。

どちらの拠点もプライベートアドレスです。だからインターネット役の回線のルーターは、もう一方の拠点への道を知りません。

四台の機械を見る

コマンド
wglab status

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

拠点Aから拠点Bへping

コマンド
sudo ip netns exec a1 ping -c 2 -W 1 10.2.0.2

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ゲートウェイAの経路表を読む

コマンド
sudo ip netns exec gwA ip route

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ゲートウェイAには通り道が無い

ping は From 10.1.0.1 ... Destination Net Unreachable を二回出します。10.1.0.1 はゲートウェイAです。

表は二行で、自分の拠点 10.1.0.0/24 と、インターネット役の回線 203.0.113.0/24 だけです。10.2.0.0/24 の行も、デフォルトルートもありません。

暗号化には鍵が要る

暗号化は、読めるデータをでたらめな並びに変えます。正しい鍵を持つ人だけが、元に戻せます。

古い例がシーザー暗号です。すべての文字をアルファベットの順に三つずらします。鍵が3なら、CAT は FDW になります。

今の暗号は、とても大きな鍵と高度な数学を使います。鍵を当てずっぽうで探すと、一生かかっても終わりません。

例:三つずらすシーザー暗号

元の文字三つ数える暗号の文字
CD、E、FF
AB、C、DD
TU、V、WW
YZ、A、BB

学生が入力するセルは、このプレビューでは空白です。

ゲートウェイごとに鍵の組がある

WireGuard では、ゲートウェイごとに二つの鍵を持ちます。秘密鍵 はそのゲートウェイから出しません。公開鍵 は秘密鍵から作り、相手側に渡します。

どちらのゲートウェイも、相手の公開鍵を知っています。それで、正しい相手と話しているかを確かめられます。

使い捨ての秘密鍵を作る

コマンド
wg genkey

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

鍵のフォルダーをだれが読めるか見る

コマンド
sudo ip netns exec gwA ls -ld /etc/wireguard

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

鍵は秘密のファイル

一つ目の実行は、英字と数字と記号が44文字並んだ一行を出し、最後は = で終わります。人によって全部違います。保存していないので、もう残っていません。

フォルダーの行は drwx------ で始まり、root が二回出ます。開けるのは root だけで、秘密鍵の置き場所としてはそれが正しい形です。

トンネルが隠すものと見せるもの

トンネルが動くと、ゲートウェイAは拠点B宛てのパケットを暗号化し、ゲートウェイB宛ての新しいパケットに入れて送ります。

インターネット役の回線をのぞいても、見えるのは二つのゲートウェイのアドレスと、かき混ぜられたデータだけです。内側のアドレスと中身は隠れます。

それでも、二つのゲートウェイが話していること自体は隠れません。レジに入ったウイルスを消してくれるわけでもありません。

よくある間違い

注意

VPNを使えば自分が見えなくなる、と思いがちです。守られるのはトンネルの中を通る通信だけです。両端の機器は見えますし、それぞれの機器が攻撃される危険も残ります。

さらに挑戦:シーザー暗号を破る

ずらす数を教えてもらえないまま、OMISE WA KUJI NI AKIMASU を暗号にしたものが届いたとします。暗号文は RPLVH ZD NXML QL DNLPDVX です。

1から25までのずらし方すべてで uncaesar を呼び、答えを全部表示するループを書きましょう。読める行はどれですか。シーザー暗号が弱いと言えるのはなぜですか。

このラボとソースについて: WireGuard のラボ:2つの拠点をつなぐ VPN トンネルをブラウザーで作る

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。