ひろったPCでLinuxをはじめて、19日目にできました。
オープンソースのVPNソフト、SoftEther VPNを、ところどころつまづきながら、Raspberry Pi 3のRaspbian OSにインストールしたので、その手順をステップ・バイ・ステップで、できるだけわかりやすく書きたいと思います。
必要なものは、
-Raspberry Pi 3モデルB ARMv8 1GB RAM
-Raspberry Pi用の電源
-USBキーボード(もしくはBluetoothキーボード)
-HDMIケーブル
-HDMIで接続できるモニター
-セットアップ用に使うPC
-インターネット接続環境
#####SoftEther VPNサーバーをRaspberry Piで稼働させて、PCや、タブレットでVPNを使って、他のネットワークから、VPNを通ってインターネットに接続するということを目的とします。
SoftEther VPNインストールのため使用したセットアップ用に使ったPCのOSは、Ubuntu StudioのXenial Xerus 16.04.3 LTS
です。
いままで、いろいろな方がRaspberry PiにSoftEther VPNをインストールする記事を書かれてこられたと思います。
そいいったネット上のHow toの記事だけを参考にさせていただきました。
ある程度、Linuxまわりのことや、Raspberry Piについて、ご存じの方は、特に必要のないことを主軸にして、このステップ・バイ・ステップを書けたら良いなと思います。
参考にさせていただいたHow toの記事をまずここにひとつ。
####「Raspberry Pi 2とSoftEther VPNを使ってVPNサーバーを構築しよう!」
たいへん丁寧に書いておられます。
パッとわかる方には、簡潔でとてもよいと思います。速く実際にインストール作業を進めたいという方は、参考にされてはいかがでしょうか。
なぜSoftethre VPNを選んだかというと、どういうことが、どのようにできるのかわかりませんでしたが、DDNSが要らずに、ソフトウェア単体でVPNを通すことができそうだったからです。
Raspberry Piを知ったのが今から2週間ほど前、店頭で本体のみ購入したのが12月15日。注文した2.5Aの電源が届いたのが、16日。Raspberry Piがどんなものかも知らないで、おそらくLinuxOSをいれれば、VPNのHubになるとふんで、そこから調べ始めました。
Linuxについては、12月2日に起動しないPCにインストールして、その日から使い始めました。はじめてから今日で20日目ということになります。ここにこの文章を書き始めたのが、12月22日です。
購入した直後の15日の夕方、路上の風景。とりあえず、早く実物を見てみたかったため、京都のマルツパーツさんにて購入。
Raspberry Pi3の電源については、スイッチ付きの方が便利そう…という理由でこちらをネットで購入。コンセントに差し込む部分と、ケーブルが分かれている方が、好みにあっていると思い、よく見ずに注文しましたが、届いてみると、ケーブルの方にスイッチが付いていて、それはわたしの想像と違いましたが、特に問題があるわけでなく、スイッチが付いているのはいずれにせよ便利です。
ケーブルを別のもので代用すると、スイッチは付いていませんが。
Raspberry Piについては、これまでなにも知りませんでしたが、ここ最近たまたま身近で2回ほど、その実機を見てマイクロSDカードに、OS自体も格納して読み書きしてコンピューター基板という認識で、それはつまり、カートリッジ式のOSで、そのカートリッジのOSイメージもコピー( デュプリケート)が可能であるというイメージを持ちました。つまりは、用途に合わせて、そのセットアップ済みのOSを取り替えることが、PCよりは簡単・・・そう。
###Raspberry Pi のOS
Raspberry PiにインストールするOSですが、
RASPBIAN STRETCH WITH DESKTOP
Image with desktop based on Debian Stretch
Version:November 2017
Release date:2017-11-29
Kernel version:4.9
をイメージからインストールしました。
最初にOSをインストールするのに、WindowsのPCで NOOBSをダウンロードして、マイクロSDカードにコピーして、Raspberry Piのカードスロットに挿しこみ、起動させてインストールを進めていたのですが、途中でカード自体の不具合などもあり、時間がかかりすぎるのでOSイメージ自体をカードに書き込む方法に変えました。
MicroSDカードは2枚以上あると、設定中に不具合があると、悩まず消去して、同じような構成のところまでセットしておいたカードに代えて、そこから設定していくなど、カードとPCのストレージの中のディスクイメージと、カードのコピーバックアップなどを、やりくりすれば時間が大きく節約できると思います。
わたしはおそろしくなるほど時間がかかりましたが、はじめてのことは想像とは
ちがうものですから、理解できない不安に、くじけそうになるかもしれませんが、楽しんでやりましょう。
時々、お菓子食べたり、散歩したり、途中で旅行に出かけたりしてもいいかもしれませんね。
おいしいケバブサンドの作り方を研究してみたり、ダラムサラまで旅に出たり、リラックスできることもはさんで、また戻ってきたら続けられるはずです。
MicroSDカードについてですが、ネットで調べると、いかに性能が良いかというベンチマークで比較されていますね。
わたしは、あるものでやりくりしたかったので、使いさしのカードを家の中から発掘して使用しました。
もう何処にあるのか、忘れてしまっていて、Raspberry Piを買った日の帰り道に、家の中を大掃除してカードを見つけないといけないなと思うと、気が重たくなったのですが、シガレットケースからその想い出の品々がちゃんと見つかったときは、それだけで、うれしくなって、その夜はひとまずぐっすりよく眠れました。
これは、これまで生きていた中でも、かなり意外に感じて印象に残ったことなんですけども、みなさんはすでにご存知かもしれません。
それは、カードリーダーについてなんですが、カードリーダーを通してカードからデータを読みたいのに、エラーになってどうしても読み込めないということが起こったことがありますか?
わたしは、あります。その際、ふとネットの情報の中で、「できるだけ安いカードリーダーを使えば、それはなんとかなる」ということが書かれてありました。今でも、それをわざわざ書いてくれた人に感謝します。それは、実際やってみると本当でした。ときどき100円ショップで、カードリーダーが売られていることがありますが、もしあなたが、そういう状況にあって、諦めかけているカードのデータがあるならば、一度試してみる価値はあると思います。
わたしはかなり重宝しています。
といっても、シガレットケースに何年もしまい込まれていたんですが。
これも、また余談ですが、Raspberry Piを買う前に、調べてみると、またちがうコンセプトのワンチップボードがあり、そちらもLinux OSをメモリカードに入れて使うコンピューターでした。
充電式のバッテリーで動かすLinuxマシンで、C.H.I.P. Proというボードです。16ドルで販売されています。
かなり気になり、ポケットチップという、キーボードとモニターがついた、ポケットに入るには、ちょっと中途半端に大きなコンピューターという感じのゲーム機も69ドルで販売されています。
ポケットチップには、PICO-8という、名前もかわいいゲーム開発環境といっていいのかな?ファンタジーコンソールがインストールされています。なお、PICO-8自体は、Raspbianでもインストール可能なようです。
Raspberry Piは、はじめて対峙してからOSをインストールするまでが、関係性のプレッシャーが続くというか、はじめて部屋に動物を連れてきたときのような、これどうしたらいいのかな・・・?というトライアンドエラーで関係を近くしていくために新しい知覚が必要になっていく気がしました。
野生の鳥の雛をひろってきて、育てたことが何度かあるのですが、そのお互いにプロトコルを共感して発見していくという行為に似ている気がします。気分的にもね。
まず、インターネット接続できて、LANがある環境でOSインストールが済んで、wi-fi接続の設定ができてしまうと、HDMIで接続するモニターも特には必要ないと思います。
###SoftEtherをインストールする大まかな手順
操作をするPCがあれば、VNCで接続して、リモート操作でRaspbian OS(Raspberry Pi)へSoftEther VPN serverインストールと、PCへSoftEther VPN Server Managerのインストールで、SoftEther VPN Server管理までできます。
SoftEther VPN Server Managerは、Raspberry Piにではなく、リモートする側のPCにインストールします。
Raspbian OS(Raspberry Pi)のターミナルをリモートで操作して状況を確認しながら、まずSoftEther VPN Server ManagerでVPNサーバーの設定、次にSoftEther VPN Client ManagerをPCにインストールして、VPNクライアントの設定やテストという順になります。
そして、これは大事な確認すべきところなのですが、SoftEther VPNには、Linux用のGUIが用意されていません。
大事なことなので、見落とさないでください。
Linux用にはGUIが用意されていませんよ。
SoftEther VPN Severをインストールすると、通常はコマンドラインで、VPNサーバーの設定をすることになります。
Windows OS向けには、SoftEther VPN Server ManagerというGUIで操作できる管理ソフトが用意されています。
| 「SoftEther VPN サーバー管理マネージャ」は、以下のオペレーティングシステムに対応しています。 |
|:--|
| |
| Windows 98 / 98 SE / ME / NT 4.0 SP6a / 2000 SP4 / XP SP2, SP3 / Server 2003 SP2 / Vista SP1, SP2 / Server 2008 SP1, SP2 / Hyper-V Server 2008 / 7 SP1 / Server 2008 R2 SP1 / Hyper-V Server 2008 R2 / 8 / Server 2012 / Hyper-V Server 2012 |
また、同じく、SoftEther VPN Client ManagerというGUIで操作できるクライアントもWindows OS向けのみ提供されています。
しかし、わたしのようにLinuxのPCしか用意できないというケースでも、WineをLinuxのPCにセットして、SoftEther VPN Server Manager、SoftEther VPN Client Managerをインストールして使うことができました。尚この場合は、GUIのインターフェイスは自動的に英語表示になります。
###RaspbianにVPNサーバーをセットするためのSoftEther VPNの構成
- SoftEther VPN Server(Linuxプラットフォーム)コマンドラインプログラム
- SoftEther VPN Server Manager for Windows(GUI)
- SoftEther VPN Client Manager for Windows(GUI)
そして、上記のインストールと設定で、ハイつながった!おわり。という記事にはandroidとiphoneでL2TPでSoftEther VPNサーバーへ接続が目的であるとしていると思います。
LinuxのPCからクライアントとして接続(SoftEther VPN Client Manager for Windowsを使って)というのを実際にやってみるとなにかオカシイ。
接続したHUB側のグローバルアドレスにならないな・・・ということに(12月24日現在)。おそらくそれは、今、現在のこのLinuxのPCにL2TP接続のための機能が、まだ入っていないということですね。
ということで、androidとiphoneや、macにWinと同じようにLinuxでもL2TPで接続したい場合は、また別に必要な手順があると予感しておいてください。
クリスマスまで後40分という今現在、LinuxをクライアントにしてのL2TPでのVPN接続は未開通です。
youtubeで見つけた動画に、NetworkManager-l2tpというプラグインを入れたらいいよ、というのがありました。
https://www.youtube.com/watch?v=DkQefsZCfq0
このページがUbuntuにはL2TP over IPSecの機能を導入するHow toを掲載している元のようです。
Enabling L2TP over IPSec on Ubuntu 16.04
22 AUGUST 2016 on L2TP, VPN, Xenial
12月26日(火曜日)になり、上記についての状況。
Update (23 Oct 2017) - Many users of Ubuntu 17.xx have reported it to be working as is, and some needed more hacks to get it running. If the Using PPA - Update (29 Mar 2017) does not work for you, there are plenty of hacks specific for different Linux distributions that are available in the comments section by the amazing community here.
と、
Using PPA - Update (29 Mar 2017)
network-manager-l2tp now exists in a PPA. You can install it using
sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp
sudo apt-get update
sudo apt-get install network-manager-l2tp
あり、PPAからインストールして、再起動してみると、networkmanagerのGUIにL2TPが現れます。GUIで編集画面に入るとIPsecの設定もできますが、結果としてはVPNサーバーにIPsecでは接続されませんでした。
まだ、何かおかしい。LinuxのPCからの接続は、ですけど。
Androidからは、L2TPでVPN接続できています。
###VNC
おっと、さも当然のように”VNCで接続して”と書いてしまいましたが、それもやはり当然のようにはじめてのひとには、なんだかわからないはずです。わたしは、VNCは以前に古いMACで使ったことがありましたが、その時は、すごい!と思って、VNCの詳細の本まで買ってしまいました。読んだ記憶はないんですが。持っていました、今でもあると思います、どこかに。
こういう「こうやってやったら、簡単にできるよ」的な文章に、知らない固有名詞が、さも当然のように出てきて、なんだかわからない、という気持ちは、ほんとうによくわかります。わたしには、sshがよくわかっていませんからね。
Raspbian OSを立ち上げると、もともとtightvncserver(サーバー)が入っていた気がします。
確認すると、tightvncserverとは書いてありませんでした。VNCとだけですね。なんでしょうね?
RealVNCと書かれています。
いまや、初期状態からRealVNCがセットされているようですが、いや、入っていないという方は、Raspbian OSのバージョンを調べたうえで、Raspberry Piの公式ページのドキュメントを参考にしてみましょう。
https://youtu.be/Kk67hLAjsyw
DOCUMENTATION > REMOTE-ACCESS > VNC
Enabling VNC Server
On your Raspberry Pi, run the following commands to make sure you have the latest version of VNC Connect:
LXTerminal
sudo apt-get update
sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer
Now enable VNC Server. You can do this graphically or at the command line.
>**ENABLING VNC SERVER GRAPHICALLY**
> - On your Raspberry Pi, boot into the graphical desktop.
> - Select Menu > Preferences > Raspberry Pi Configuration > Interfaces.
> - Ensure VNC is Enabled.
公式なドキュメントによると、一体いつの時点かさだかではないですが、
>あなたのラズパイで以下のコマンドを実行して、最新版のVNCを使えるようにしましょう
>```ruby:ラズパイのLXTerminal
sudo apt-get update
sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer
これでVNCサーバーが使えるようになりました。
- ラズパイのデスクトップをたちあげて、
- メニューから、「設定」> Raspberry Piの設定 > インターフェイス
- VNCを有効にしてください。
ということです。realvncのサーバーとピューワーがインストールされるようです。
インストールしたけど要らなくなったら、
sudo apt-get remove realvnc-vnc-server realvnc-vnc-viewer
sudo apt autoremove
で削除できます。
LinuxのPC側にリモートデスクトップビューアーというプログラムが、入っていれば、それからRaspberry piへVNCのモードで接続するのがよい感じがしました。
これです。
xvncviewerというVNCのクライアントをインストールしてみて比べてみましたが、リモートデスクトップビューアーでは、リモートするVNCサーバー側のデスクトップのスナップショット(画面キャプチャー)を接続したクライアント側に保存することができます。長いこと同じような作業をしていると、ときどき1分前、1時間前、自分が何をしたか思いだせなくなりますから、スナップショットを作業記録として使うことが出来るのは良いです。独断ですが。
ここで、インストールするのにコマンドでapt-get
と打ったり、apt autoremove
としたりしました。なんでしょうね、これ?
apt-get install パッケージ名[ Enter ]
というように使うようです。
パッケージ?
Linux OSでは、ソフトウェアはパッケージというフォーマットで管理されていて、そのパッケージのフォーマットも乱立しているんですね。
debというパッケージのフォーマットを扱うのがATPで、そのコマンドがapt-get
であったり、apt autoremove
であったりするようです。
VNCは、ネッのトワーク越しにデスクトップをGUIで操作するプログラムで、
- サーバー
- クライアント(もしくはビューワー)
に分かれています。
Raspberry Piはヘッドレス状態(モニター無し、キーボード、マウスの接続なし)で、有線もしくは、無線でLANに接続している場合、他のPCからネットワーク越しに操作していくわけですが、GUIで、Raspberry Piのデスクトップを見て、普通にPCを操作するようにマウスとキーボードを使って操作したいものです。わたしは。
VNCは、そういった用途に使われるプログラムです。VNCサーバーが、コントロールされる側で、コントロールするのがVNCクライアントになっています。
なんとなく呼び方が逆なようにも感じますが、タイムシェアリングシステムのようなところから起源がある呼び方なのかもしれません。確かに、画面をホスティングしているサーバーと、クライアントと解釈すればそうなります。
そして、確かVNCは、MACをWindowsでGUI操作するとか、逆も可能なはずです。
何も知らずに、LANのストレートケーブルでもPCとRaspberry Piを繋いで操作できると思っていたのですが、
USBシリアルケーブル(USB-TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル)
という、ちょっと、オオ?と思うものでつなぐというのをRaspbianOSインストール後に知りました。
どういう状況で、それを知ったかというと、後述しますが、OSの/etc/network/interfaces
ファイルを編集して、PCとRaspberry Piとが、wi-fi接続もケーブル接続も、どちらもできなくなった時です。
と、同時に、Raspberry Piが同じネットワーク上につながっていれば、そのIPアドレスを通知してくれるプログラムがあることも知りました。
これは、最初から用意してあれば便利だと思います。
The Adafruit Raspberry Pi Finder
Raspberry PiにどういうIPアドレスが割りふられたか確認するのは、LANのルーターの通信ログを見るか、Raspberry Piのターミナルから、ifconfig
コマンドで確認するかなのですが、Adafruit Raspberry Pi FinderをRaspberry Piにリモートで接続したいPCから起動すると、自動的に発見してくれます。
パスワードもわかってしまう。
確かにすっきりしたGUIだと安心するのですが、堂々とパスワードもホラってバッチリ見せてくれると、これは、どこかに送ったりしてないですよね?と思ったりもするかもしれません。
やめときましょうか、便利ですけど。
RaspbianにAvahiというキツネザルを呼びこむと、同じようなことがリモートする側のターミナルで可能です。こっちの方が良いかもしれませんよ。
というのは、実際に、LANにケーブル接続してRaspberry Piのetc/network/interfaces
の内容を色々と書き換えてはrebootしてみたのですが(後述する予定です)、するとRaspberry Piのブリッジ(まだ説明していません)と、wi-fi接続に別々のローカルIPが割りふられたりしました。
この場合、Pi Finderはどっちをみつけてくれるのでしょうか?それは、わからないですが、どちらか1つしか表示してくれませんし、ssh接続エラーになったりしますから何が起こっているかわからないです。
Raspberry PiにVNC接続して、ターミナルからifconfig
で確認すると、そういうことが起こっているんだなぁ、これは間違っているのかもなぁと気がつきます。どちらにせよ、確認手段がある方が過程として有効ですね。
androidから、VPNを使うという目的があるのなら、androidのアプリでネットワークスキャナーを使って、Raspberry PiのIPをみつけることも出来ます。
Fingというネットワークスキャナーアプリを使ってみましたが、MACアドレスから、Raspberry Piと同定して表示されました。
####Fing
https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=ja
編集履歴を見れるのかな?見たらわかるでしょう(自分も)、今1月23日、ということで設定するのに6日どころではないですね。
元旦深夜の初詣から数時間でインフルエンザの様な症状がではじめて、以降はずっと、Raspbian lite用のSoftether VPNサーバーにとりかかりました。
Raspbian liteの方は、なぜかSDカードをコピー(メモリダンプ)すると、その後は、そのコピー元のSDカードでRaspberry Piが起動しなくなるという、インフルエンザのせいかどうか、何度やっても労力が無にきされるという面白い現象を繰り返しました。
この自らの発熱現象による生物的な記憶エラーか何かによる、作業の繰り返しで、sshとRaspbian liteのターミナル日本語文字化け解消、Raspberry Piで起動中のSDカードのコピーについての知識を得ました。
####ターミナルでの日本語の文字化け
Raspbian liteには、GUIがありません。VNCを使えるようにするには、GUIをあとから付け足す必要があります。最小構成で、VPNが出来るかの実験というか、VPNの最小構成を考えるためにRaspberry Pi zero WでSoftether VPNサーバーを起動してみようということで、GUI無しRaspbian liteをセットアップするのに、ターミナルの中で日本語の部分が文字化けすると、セットアップ中の画面を見ても、ダウンロードが完了したのか、エラーなのか、□伏せ字を見てもよくわからないので、一応日本語フォントをインストールすることにしました。
調べてみると、そのことについては沢山の情報があって、そのいくつかを何回も繰り返しやったのですが、結論としては、
$ sudo apt-get install fonts-ipafont fonts-ipaexfont
だけで、日本語部分に文字化けは全てなくなりました。
文字化けで悩まれている方は、試してみてください。
####SDカードのコピー
ここでいうのは、ラズパイ3でSDカードにRaspbianをOSとしてセットしたうえで、そのコピーを別のSDカードにとるクローニングですが、RaspbianがGUI版であれば、GUIで操作できるSD card copierがあります。
勿論、ラズパイからSDカードを抜いて、PCのカードリーダーに挿して、PCにメモリダンプして取り込んだ後、別のSDカードに.imgを書き込むやりかたでも問題なければ、いいです。
SD card copierの良いところは、コピーをとりたいSDカードはラズパイに挿したまま、Raspbianが起動している状態で、そこからクローンできるのですが、コピー先のSDカードの容量が、コピー先のSDカードの容量より小さい場合でも、コピーが可能な点があります。
SD card copierは、現行のRASPBIAN STRETCH WITH DESKTOPには、標準で用意されています。
例えば、わたしの場合、8GB(と16GB)のSDカードにRASPBIAN STRETCH WITH DESKTOPをセットしていたのですが、そのSDカードで実際に使っている容量は小さかったため、SD card copierで4GBのカードにクローニングすることができました。
もうひとつ同じようにSDカードをクローニングする方法としてrpi-cloneがあります。こちらは、GUIではなくコマンドで操作するもので、Raspbian liteで使うのには良いのではないかと思います。
SD card copier、rpi-clone両者に共通することですが、USBデバイスとして認識されるSDカードリーダーが必要になります。
1月13日に年末に新たに注文した、Raspberry Pi zero Wが届きました。