23
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-07-09

Raspberry Piを買ってからOpenVPNサーバにするまでのいきさつです。

  • Raspberry Pi 3 Model B
  • 有線のLANは使用せずWi-Fiのみ接続
  • GUIは使用しない
  • クライアントの通信をVPN経由にする
  • セキュリティ対策はとりあえず後回し

OSのインストール

Raspberry Piで使用するOSのRaspbianをダウンロードします。

Raspbianのサイト
https://www.raspberrypi.org/downloads/raspbian/

RaspbianにはWITH DESKTOP版とLITE版があります。
今回はデスクトップ不要のためLITE版を使用します。

RASPBIAN STRETCH LITEの[Downlowd ZIP]からzipをダウンロードします。
解凍するとディスクイメージのimgファイルになります。

SDカードにOSを書き込みます。

書き込みにはRufusを使いました。

Rufus
https://rufus.akeo.ie/

image.png

起動準備

sshログインできるようにします。
boot直下にsshという名前で空のファイルを作っておくとsshログインできるようになります。

Wi-Fi接続できるようにします。
boot直下にwpa_supplicant.confというファイルを作ります。
内容は以下の通りです。

wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
country=JP
network={
    ssid="SSID"
    psk="パスワード"
    key_mgmt=WPA-PSK
    proto=WPA WPA2
    pairwise=CCMP TKIP
    group=CCMP TKIP WEP104 WEP40
}

SSIDとパスワードを記入します。改行コードはLFで保存。

起動

Raspberry PiにSDカードを差し込んで電源を入れます。

うまくWi-Fiに接続できていればDHCPでIPアドレスが割り当てられているはずです。
割り当てられたアドレスはDHCPサーバの払い出し状況を見るなどして確認してください。

sshでログインします。
初期値は USER: pi PASSWORD: raspberry です。

初期設定

IPアドレスを固定します。

vi /etc/dhcpcd.conf

一番下にwlan0の設定を追加する。

/etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.0.120/24
static routers=192.168.0.10
static domain_name_servers=192.168.0.10 8.8.8.8

ソフトウェアのアップデートをします。

sudo apt update
sudo apt upgrade

ラズパイの設定をします。

sudo raspi-config

ラズパイの設定メニュー(CUI)が表示されます。
ロケールとタイムゾーンを変更します。

Localisation Optionsを選択
Change Localeを選択
en_GB.UTF-8 UTF-8を外す
ja_JP.UTF-8 UTF-8を付ける
デフォルトロケールはja_JP.UTF-8を選択

Localisation Optionsを選択
Change Timezoneを選択
Asiaを選択
Tokyoを選択

VPNサーバにするためIPフォワードを有効にします。

sudo vi /etc/sysctl.conf

以下の行のコメントを外して有効にします。

/etc/sysctl.conf
net.ipv4.ip_forward=1

再起動します。

sudo reboot

OpenVPNのインストール

インストールします。

sudo apt install zip openssl openvpn

easy-rsaで証明書を作成します。

sudo su
cd /usr/share/easy-rsa
vi vars

以下の各行を任意の値に修正します。

/usr/share/easy-rsa/vars
export KEY_COUNTRY="JP"
export KEY_PROVINCE="Tokyo"
export KEY_CITY="Edogawa"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
. ./vars
./clean-all

openssl.cnfをコピーして作成します。

cp openssl-1.0.0.cnf openssl.cnf

CA証明書を作成します。

./build-ca

サーバ証明書を作成します。

./build-key-server server

以下はそれぞれyで。

Sign the certificate? [y/n]:
1 out of 1 certificate requests certified, commit? [y/n]

クライアント証明書を作成します。

./build-key client

以下はそれぞれyで。

Sign the certificate? [y/n]:
1 out of 1 certificate requests certified, commit? [y/n]

クライアントが複数ある場合は同様に作成します。

./build-key client2
./build-key client3

DHパラメータを生成します。
これは結構時間がかかります。

./build-dh

TLS鍵を作成します。

cd keys
openvpn --genkey --secret ta.key

作成した鍵とサーバ証明書をコピーします。

cp ta.key server.crt server.key dh2048.pem ca.crt /etc/openvpn

サンプルからOpenVPNサーバの設定ファイルを作成します。

cd /etc/openvpn
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
gunzip server.conf.gz

設定ファイルを修正します。

vi server.conf

ファイル内の各行で鍵や証明書の場所を設定します。

/etc/openvpn/server.conf
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key

今回はVPNクライアントの通信をすべてVPN経由にするため、以下の行のコメントを外して有効にします。

/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"

OpenVPNをリスタートして設定を反映します。

systemctl restart openvpn

Raspberry Piの起動時にOpenVPNが自動起動するようにします。

systemctl enable openvpn

iptablesのポートを開放します。

vi /etc/rc.local

exit 0の前に2行追加

/etc/rc.local
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o wlan0 -j MASQUERADE

再起動します。

reboot

OpenVPNクライアントの設定

OpenVPN GUI for Windowsのダウンロード
https://www.openvpn.jp/document/openvpn-gui-for-windows/

インストール後、スタートメニューから[OpenVPN]-[OpenVPN Configuration file directory]を選択し、configフォルダを開く。

client.ovpnファイルを作成し、以下の内容を編集する。
remoteのxxx.xxx.xxx.xxxはサーバのIPアドレス。
各鍵などの内容を

client.ovpn
client
dev tun
proto udp
key-direction 1
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
<ca>
-----BEGIN CERTIFICATE-----
(ここはca.crtから)
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
(ここはclient.crtから)
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
(ここはclient.keyから)
-----END PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
(ここはta.keyから)
-----END OpenVPN Static key V1-----
</tls-auth>

参考ページ

Raspberry Piのインストールはこちらを参考にしました。
https://jyn.jp/raspbian-setup/

OpenVPNの構築はこちらを参考にしました。
https://qiita.com/oi1man/items/abe3c5ef2113ec3e91f1

23
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?