CGBeginner

映画好きの個人CGクリエイターが試行錯誤した記録

フォローボタン

Raspberry-PiでVPNサーバーを作る

2017/04/16

公共の無線LANなどを使用するときに、セキュリティの問題とかいろいろありますよね。その解決策として、VPN(Virtual Private Network)というものがあります。
仮想的な通信トンネルを構成したプライベートネットワークのことで、一言で言うと、通信内容を暗号化できる技術で、VPNを使えば通信の安全性が高まります。

簡単な図解

・VPNを使用しないとき(普通の通信)
[PCやスマホ]--非暗号化通信--[公共ルーター]--非暗号化通信--[インターネット]
・VPNを使用するとき
[PCやスマホ]--暗号化通信--[公共ルーター]--暗号化通信--[インターネット]--[自宅ルーター]--非暗号化通信--[インターネット]

公共のルーターを通るときの通信内容が暗号化できるんですね。なのでその際の盗聴とかのリスクも減らせます。DNS偽装とかのリスクも減ります。
※ここでいう暗号化はHTTPS通信の話ではないです

このようなVPNを構築するために、Raspberry Piを買ってそれをサーバーにします。VPNサーバーのソフトウェアは、SoftEther VPNを使用することにします。

スポンサードリンク

RASPBIANのインストール

初心者推奨のRaspberry Pi向けディストリビューションのNOOBSをまずMicroSDカードにインストールし、そこからRaspbianをインストールする形で行きます。

NOOBSダウンロードページへ行き、NOOBSをダウンロードします。

1

これです。「Download ZIP」を押してダウンロードします。これを普通に解凍します。

2

このようなファイルたちが生成されます。この内容すべてを、FAT32でフォーマットしたSDカードにコピーします。解説サイトによってはフォーマッターとかコピーツールでインストールしてるところもありますが、自分はこれでうまくいったのでよしとします。

コピーが完了したSDカードをRasPiに入れ、USBキーボード、HDMI、LANケーブルを繋いだら、給電用MicroUSBを差し込みます。勝手に電源がつきます。

しばらく待った後、NOOBSが起動します。言語を日本語にして、Raspbiann PIXELを選んでインストールしましょう。十分くらいで終わるはずです。

しばらくした後、Raspberry Piのデスクトップが表示されます。

かんたんに設定します。

Raspberry Pi初期設定

デスクトップ上のラズベリーマークをクリックし、Preferences->Raspberry Pi Configurationをクリックします。
Passwordを変更し、
BootをTo CLIに変えておきます(今後デスクトップ画面を見ることはありません。もし一時的に見たいときはstartxコマンドでデスクトップを開始できます)。
Auto Loginもチェックを外します。
次にInterfacesのタブに行き、SSHをオンにします。

あとは電源を落とし、ケーブルを、LANケーブルと電源ケーブルを残して全部抜きます。そしてRasPiをもう一度電源オンにします。今後はWindowsPCからSSHで操作します。

SSHアクセス

TeraTermなどのターミナルでアクセスします。IPアドレスは、前章で設定を変えたときに、ついでにターミナルでifconfigというコマンドを撃てば調べることが出来ます。

ユーザー名はpi
パスワードは先程自分が入力したもの(初期設定ではraspberry)
を入力します。

まずアップデートをします。

$ sudo apt update
$ sudo apt upgrade

これで一応普通に使う準備は出来ました、

 

VPN設定

ここからは、「俺の技術メモ」さんが非常に詳しく丁寧に解説してくれていますので、(その1その2その3
特に大事な、「ネットワークブリッジ」の設定部分だけメモしておきます。

仮想ブリッジのネットワーク設定

Linuxにはネットワーク仕様の問題があるそうです

http://www2.softether.jp/jp/vpn3/manual/web/3-6.aspx#vpn_3_6_11

Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。この制限は PacketiX VPN が原因ではなく、Linux の内部構造に原因があります。もし VPN 側 (仮想 HUB 側) から Linux でローカルブリッジに使用しているコンピュータ本体と、何らかの通信を行いたい場合 (たとえば VPN Server / VPN Bridge サービスと HTTP サーバーサービスを両方動作させており、VPN 側からもサーバーサービスにアクセスさせたい場合) は、ローカルブリッジ用の LAN カードを用意して接続し、その LAN カードと既存の LAN カードの両方を物理的に同じセグメントに接続してください

つまり、VPNサーバーにしたPCに直接SSH接続することが出来なくなってしまうので、ブリッジデバイスをかませる必要があるということです。マシンのIPアドレスを、物理インターフェイス(eth0)ではなく、仮想ブリッジ(br0)に割り当て、br0にeth0とVPN仮想HUBをブリッジさせることでこの問題を解決します。

デスクトップから、ターミナルを立ち上げます。

sudo su -

で、rootになります

apt-get install bridge-utils

で、ブリッジに必要なパッケージをインストールします。

vi /etc/network/interfaces

と入力し、次を追記します。

auto br0★ここからbr0の設定
iface br0 inet static★固定IPアドレスだと宣言する
address 192.168.0.20★設定したいIPアドレス
netmask 255.255.255.0★サブネットマスク
network 192.168.0.0ネットワークアドレス
broadcast 192.168.0.255★ブロードキャストアドレス
gateway 192.168.0.1★デフォルトゲートウェイ
bridge_ports eth0★eth0とブリッジする設定
bridge_maxwait 10★ブリッジの最大wait

※/etc/dhcpcd.confを編集すると書かれているものもあるらしいです。が、上のとおりに行けたので、よしとします。

以前は『/etc/network/interface』に設定していましたが、どのバージョンかは不明ですが、最近のバージョンは『/etc/network/interface』に設定しても動作しませんでした。
以下のサイトにもあるように、『/etc/dhcpcd.conf』へ設定が変わったようです。

・Setting a static IP on Raspberry Pi on Raspbian 20150505
http://sizious.com/2015/08/28/setting-a-static-ip-on-raspberry-pi-on-raspbian-20150505/

一旦PCをRebootします。

ここからは、こちらのブログを参考にしてもらったほうが早いです。(その1その2その3

参考
http://techblog.clara.jp/2016/04/raspberry-pi-3-model-b_install_and_ssh_connect/
http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_SSH.html
http://qiita.com/Cinosura/items/6ab435331ea2b3671a1d

Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その1)

Raspberry PiにSoftEther VPNを入れる


http://usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi3.htmlhttps://peraichi.com/landing_pages/view/xo6jf

Raspberry PiでNTFSファイルサーバー

NTFS形式のHDDをマウントしてファイルサーバーにするという話も興味深いので、一部紹介しておきます

NTFS形式のHDDをマウントするためにntfs-3gをインストールします

sudo apt install ntfs-3g

リブートします。実際にマウントする前に一旦システムを再起動しないと、エラーが出るらしいです。

参考
https://peraichi.com/landing_pages/view/xo6jf
http://qiita.com/Cinosura/items/6ab435331ea2b3671a1d

Raspberry Piで他のPCをWake On Lanする

SENGOKU氏のwol.cを使用します。 wol.c:http://www.gcd.org/sengoku/docs/wol.c

ダウンロードしてコンパイル

cd
mkdir wol
cd wol
wget http://www.gcd.org/sengoku/docs/wol.c
gcc wol.c -o wol

./wol 192.168.100.1 **-**-**-**-**-**

こんな感じで実行します。

#!/bin/sh
./wol 192.168.100.1 **-**-**-**-**-**

こういうシェルスクリプトを書いたらいいです。

参考
http://www.gcd.org/sengoku/docs/wol.c
http://zipsan.hatenablog.jp/entry/20140117/1389952909
http://qiita.com/kaishero/items/5e48f952c36dcaef27fb
http://dadasan.blogspot.jp/2013/10/raspberry-piwol.html

スポンサードリンク

-コンピュータ