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使えたよ! 成功!