RaspberryPiで自宅にVPNを構築したときの備忘録
参考にさせて頂いた記事
サーバ構築
基本的にはこの記事を参考にすれば問題はないのですが,幾つか注意点があるのでそれを補足する形で説明します
準備
- RaspbianはLiteでもDesktopでもどっちでもいいです
- sshログインは画面とキーボードを繋げて作業するなら必要ないです(あると後々便利ですが)
初期設定でipアドレスを固定していますが,ルータがDHCPでIPを振っている場合,最悪被ることがあるので, ルータ側の設定でDHCP設定を変更して固定IPに被らないようにします
OpenVPNのインストール
sudo su
を行ってスーパーユーザーで行うと楽です
build-ca
,./build-key-server
のときに様々入力が求められますが基本的に空欄(そのままEnter)で大丈夫です。ただ,Common Name (eg, your name or your server's hostname) []:
を聞かれたときはなにか任意の名前をつけておきましょう
以下4つは,クライアント側で必要になるのでzipにして保存すると取り回しが楽です
後でscpかなんかで取り出しやすい場所に移しておくと良いと思います
zip vpnclient.zip ca.crt ta.key client.crt client.key
サーバの設定
ここがけっこう鬼門で,この通り設定しても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
その後,
push "redirect-gateway def1 bypass-dhcp"
をコメントアウトして
以下のDNSを設定しているところをコメントアウトするか,自分の契約しているプロバイダのDNSサーバに変更する。(すると早いってだけで,Public DNSでも動作すると思います)
push "dhcp-option DNS 208.67.222.222"
以下のサイトからDNSサーバを確認できます
プロバイダのDNSサーバーアドレス一覧及び確認する方法 | インターネット接続解説ブログKAGEMARU-info
ちなみに,コメントアウトされていたDNSアドレスはopendns.comから提供されてるアドレスみたい
サーバのスタート
ここまできたらいよいよサーバを立てます。
- リスタート
systemctl restart openvpn
- 自動起動に登録(任意)
systemctl enable openvpn
- ついでにラズパイのポートを開けて,NATを設定 以下コマンドのやっていることは,
- udpパケットのport1194番は通す
- 10.8.0.0/24からのパケットをマスカレード(パケットのソースIPをこのマシンのeth0ように見せかけて転送)する。
/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 eth0 -j MASQUERADE
追記したら再起動
起動確認
以下のコマンドで active(running)になっていればOKです。なっていなければどこでエラーなのか確認します。
systemctl status openvpn@server.service
もしエラーが出ていたら
journalctl -u openvpn@server.service
でエラーの内容を確認します。
ちなみに私はserver.conf
にエラーがある旨のログがあったので,どこでエラーが出てるのか以下のコマンドで詳細を確認しました。
openvpn --config /etc/openvpn/server.conf
クライアント側
クライアント側はあの記事の通りに設定すれば問題ないです。
remoteのxxx.xxx.xxx.xxxはサーバのIPアドレス。
とありますが,これはローカルIPではなくグローバルIPなのでお間違えなく。(あたりまえですが)
おまけ
接続されているクライアントを見る方法
cat /etc/openvpn/openvpn-status.log