Raspberry PiでVPN。VPNは色々便利&フリーWi-Fiも高セキュリティに

トンネリングプロトコルVPN
設定

VPNをご存知ですか?海外では公衆Wi-Fiには必需品と考えられている地域もあるほどの必須インフラですが、日本ではあまり知られていないのも実情。

VPNとはVirtual Private Networkの略で、仮想的な専用線をひくイメージです。仮想的にセキュリティの高い回線を用意するというもので、暗号化技術により成り立っています。

最近ではルータにこの機能が付属しているものも増えてきています。ルータをVPNサーバーとすれば、省エネ低コストで専用線なみのセキュリティを確保できなかなか素敵な選択肢となっています。

VPNのメリットとは

・フリーWi-Fiを利用するときの安全性が上がる
・自宅のLAN内のサーバーに外からアクセスできる
・海外から日本限定の動画サービスなどにアクセスできる
・旅行先で関東のRadikoが聞ける

などが挙げられます。

VPNの種類(プロトコルなど)

・PPTP
・IPSec
・L2TP/IPsec
・OpenVPN

この内PPTPとL2TPはトンネリングのみを行い、暗号化などは別の仕組みを利用するようになっています。PPTPであればRC4と組み合わせることが多く、Windowsに標準装備となっているそうです。またL2TPであればIPSecと組み合わせてセキュリティを確保することが多いようです。この中で一番セキュリティが高いのはOpenVPNのようです。それもSHA-2に対応しているものがよいとのことです。今からVPNを選べる環境なら最新のOpenVPNを選びましょう。

Raspberry PiでVPNサーバーを構築する

VPNルータを持ってない?それならRaspberry Piで代用ができるかもしれません。セキュリティに関して強固にできるかどうかわかりませんが一応やってみました。多分Raspberry PiであってもOpenVPNのドキュメント通り正確に正しく構築すればそれなりにセキュリティの高いものができるでしょう。ただし知識が必要なのでなんちゃってVPNくらいのセキュリティでVPNを使ってみました。ちゃんとするならVPNルータを使ったほうがセキュリティは高いかもしれません。

RaspberryPi & Open Vpn構築手順

#パッケージリストの更新
sudo apt-get update
#パッケージの更新
sudo apt-get upgrade
#ロケールの更新
sudo update-locale LANG=ja_JP.UTF-8
#タイムゾーン設定
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
sudo dpkg-reconfigure –frontend noninteractive tzdata
#オープンVPNのインストール
sudo apt install openvpn

#EasyRSAのインストール(コンパイル等はいらない模様)
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
tar -xvzf EasyRSA-unix-v3.0.6.tgz
sudo mv EasyRSA-v3.0.6 /usr/local/EasyRSA

#環境変数?の設定
cd /usr/local/EasyRSA/ 
cp -p vars.example vars 
vi vars

vi varsで認証局証明書の期限(2000日に設定)

set_var EASYRSA_CA_EXPIRE       2000
set_var EASYRSA_CERT_EXPIRE     2000

cd /usr/local/EasyRSA/
#初期化
./easyrsa init-pki
#認証局作成 パスフレーズが聞かれるので任意に入力 CommonNameも同様
./easyrsa build-ca
#DHパラメータを設定(結構時間がかかる)
./easyrsa gen-dh
#サーバー用証明書キーペア生成(パスワードは先程入力したものと同じ)
./easyrsa build-server-full server nopass
#クライアント用キーペア生成(パスワードは先程と同じ)
./easyrsa build-client-full client1 nopass

#サーバ設定

cd /usr/local/EasyRSA/
sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/dh2048.pem

#設定雛形を解凍
sudo gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
sudo cp -p /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server.conf

#TAキーを作成
sudo openvpn –genkey –secret /etc/openvpn/ta.key

サーバー設定をいかになるように編集

port 1194接続を受け付けるポート、外に開放するためのポートなのでデフォルト以外でもよいと思う。ovpnファイルに埋め込めるため使い勝手は変わらず
proto udpudpの他 tcpが選べる
push “dhcp-option DNS 8.8.8.8”名前解決のためのDNSサーバ
dev tunルーティングモードでの設定だと思う
ca ca.crtCaファイルのファイル名
cert server.crtcertファイルのファイル名
key server.keyサーバ用鍵のファイル名
dh dh2048.pemdhパラメータで出力したファイル
server 10.8.0.0 255.255.255.0VPN接続したクライアントに割り当てられる仮想アドレス範囲
ifconfig-pool-persist ipp.txtよくわからん
push “route 192.168.1.0 255.255.255.0”サーバと同じサブネット。このサブネットにVPN経由でアクセスできるんだと思う
push “redirect-gateway def1”VPNのトラフィックをすべてここに通す
client-config-dir ccdクライアントに固定IPをわりあてる
keepalive 10 120生存期間
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC暗号化方式
persist-key
persist-tun
status openvpn-status.log
explicit-exit-notify 1

IPマスカレードの設定に苦労した

IPマスカレードの設定をしないとVPN経由でネットに繋がらない。私はUFWが好きなのでufwを使っている人向けの設定を行う

sudo vi /etc/default/ufw
##DEFAULT_FORWARD_POLICY="DROP"を以下に変える
DEFAULT_FORWARD_POLICY="ACCEPT"

#sysctl.conf ファイルはufwだと以下
vi /etc/ufw/sysctl.conf 

#以下を有効化コメントを外す
net/ipv4/ip_forward=1

#iptablesの設定を直接叩くらしい
sudo vi /etc/ufw/before.rules

#十行目あたりに書く
:POSTROUTING ACCEPT [0:0] 
# Forward traffic from eth0 through eth1. 
#10.0.0.0/24 からのパケットを eth1 に転送するという意味
-A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE

#ufwの再起動 sudo ufw reloadでも良いか?
sudo ufw disable && sudo ufw enable

クライアント用設定などをまとめたファイルovpnを作る。キーなどを埋め込むことができるので便利に使える。

簡単に作れるシェルスクリプトがあるのでこちらを使うと楽

このブログは以下の記事を参考にさせて頂いた上自環境でテストして加筆していったものです。
Qiita OpenVPNサーバの作り方

これで接続自体は一発でアンドロイドなどから行えました。マスカレード設定の解決に時間を要しましたので、参考になれば幸いです。今後ルータを買う方はopenvpnが使えるもの(あるのか分からないが)あるならそれを選ぶとよいでしょう。皆様快適ライフを!

ショッピングのイメージ
豆知識
初心者の方向けインターネットを使う上で注意すべきこと(詐欺などに注意)

基本はオフィシャルサイトを見極めてオフィシャルサイトで作業を行うことです。怪しいサイトはホームページやメールのアドレスがちょっと変な感じになっている事が多いです。 日常的に気をつけることの項目 ネットに ID、パスワードを入力するときは 必ずインターネットを見るためのソフトであるブラウザの画面上部のアドレスバーにてそのアドレスを確認し怪しいところが無いかチェ …

スマートフォンで電話をする女性
ニュース
楽天モバイル(MNO)にZenfone Max Pro M2で接続する

色々調べた結果Zenfone Max Pro M2で接続できました。ただし接続が成功するまでに不安定で実用性は低いと想います。なぜなら端末の再起動や機内モードなどのオンオフで接続がうまくされず再接続するまでに時間がかかるからです。 あくまで楽天のアクティベートによるポイントゲットのために有効な手段と考えたほうがよいと想います。 シムスロットを選ぶ シムカード …

ルーティングのイメージ画像
設定
Raspbianの固定IP(DNS、デフォルトルート等)の設定はおかしい

RaspbianでGUIを使い固定IPを設定したいと思います。一度目はよいんです。二度目変更しようとして設定をいじると高確率でおかしくなります。なんかこれClearをうまく使わないといけないんですかね。設定が二重、三重に保存されてしまい設定がおかしくなります。 とくに以前の設定がクリアされないのでルーティング設定などが残り無効なデフォルトルートが設定されて通 …