干し風呂

しのごの言わずにやるブログ

RaspberryPiでVPNサーバ構築

参考にさせて頂いたサイト

http://qiita.com/sumyapp/items/b7300a9ffa316d676aa1

正直↑とほとんど同じ内容になってしまい(しかも参考サイトのほうが説明が丁寧)、書く意味あるか?と思ったけど自分への手順書の意味で残す。

手順

ともあれRaspberry Piを最新の状態にする

$ sudo apt-get update
$ sudo apt-get upgrade

pptpdのインストール

$ sudo apt-get install pptpd

pptpdの設定(自身のIPと接続クライアントへの割り当てIP)

$ sudo vi /etc/pptpd.conf

編集内容

localip 192.168.1.50
remoteip 192.168.1.51-60  #VPN接続するとこの範囲からIP Addressが払い出される

接続してきたクライアントが使うDNSサーバを設定

$ sudo vi /etc/ppp/pptpd-options

編集内容

ms-dns 192.168.1.50

ルータのipとかGooglePublicDNS(8.8.8.8)とか、適当なDNSサーバを指定する。 上の編集内容はRapspberry PiでDNSサーバたてている場合。

接続クライアント用アカウント設定

pptpにてアクセス出来るユーザアカウントを追加する。 パスワードは平文保存のため注意。

$ sudo vi /etc/ppp/chap-secrets

編集内容

# User名  サーバ名  パスワード  割り当てIP
watashi  * watashinokyoukonapassword123456789 *
anata  * anatanokyoukonapassword123456789 *

IPフォワードの設定

Linux自体の設定にて、IPフォワードを有効にする(デフォルトでは無効)。 宛先アドレスが自分では無いパケットも転送するようにしなければ、VPN経由で接続した端末からのパケットはすべて破棄されてしまう。

$ sudo vi /etc/sysctl.conf

編集内容

net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0

設定反映

$ sudo sysctl -p

MTU/MRUの設定

VPNでトンネリングするときにヘッダ情報が付与されるとMTUが1500を超過してしまいルータとかいろんな機器でパケット落とされる可能性があるので最初からMTU下げておく。

$ sudo vi /etc/ppp/options

編集内容

mtu 1280
mru 1280

RaspberryPi側はこれでOK!

あとはルータでNATしてiPhoneとかで繋ぎに行ってみる。

中国からもちゃんとgoogle使えたよ! 成功!