お得情報  | ➡

Raspberry PiでOpenVPN。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が使えるものを選ぶとよいでしょう。皆様快適ライフを!

20200622追記 設定がうまく行かない場合

sudo vi /etc/ufw/before.rules
にて設定がうまく行かない場合は10行目付近でなく、COMMITの後に以下を追加したらうまく行きました。
*nat
:POSTROUTING ACCEPT [0:0]
-F
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
パソコンに向かう人アイキャッチ
アプリ
文字変換を便利に使おう。IMEの種類や辞書登録など

皆様こんにちは、IMEを使っていることと思います。IMEって何?と思う方もいらっしゃるかもしれません。 IMEはInput Method Editorの略でパソコンやスマートフォンに文字を入力する際に必要になるソフトウェアです。 これがあるおかげで私達はPCに日本語を入力することができるわけですね。 そこで今日はIMEについて掘り下げて見たいと思います。 I …

豆知識
iPadでWindowsを操作するリモートデスクトップができるアプリ

iPadでリモードデスクトップクライアントになるアプリをマイクロソフトが出しているようです。 iPadでものを書くと変換が自動でされてびっくりしました。 ブルートゥースマウスとキーボードが役に立ちます。 app storeをマイクロソフトリモートデスクトップというワードで検索すると出てきます。 通常通りIPアドレスとユーザ名、パスワードを入力するとリモートデ …

トンネル
アプリ
SSH通信でリモート作業、SSHとは

皆様こんにちは。皆様SSHをご存知ですか。SSHとはなんなのでしょうか。 実はサーバをリモートで操作する事ができるのがSSHです。Secure Shellの略のようです。linuxを使っていると殆どの作業はコマンドラインから行えます。そんな中、コマンドをリモートから発行できるのがSSHです。応用でポートフォワードなどを行って安全なトンネルを作ってTCP通信を …