【Raspberry Pi】SoftEtherでVPN

「Raspberry Pi Model B+」を買いました。

Raspberry Pi Model B+ (Plus)

Raspberry Pi Model B+ (Plus)

 

 

SoftEtherについては、以前LIVAでインストールしたまま放置してましたが、このラズパイに再度インストールした上でVPNを実現します。

 

Raspberry Pi でSoftEther VPN 1.0 RC2を試す | よもやま雑記帳

を参考にさせていただきました。

なお、今回はwgetによるダウンロードではなく、直接HPからダウンロードしています。ラズパイの場合はSofEtherはOS: Linux、CPU: ARM EABI (32bit)を選択します。

 

※セッティング方法を書こうと思いましたが、上記参考サイトとまるっきり同じなので割愛(手抜き)

 

注意点①

VPNサーバにするラズパイはLinuxルータを通したローカルネットワークの中で動作しています。

なので、Linuxルータのiptablesの設定でVPNアクセスを転送してあげなければなりません。というわけで、iptablesを設定するシェルスクリプトの記載を抜粋すると

IPTABLES='/sbin/iptables'

WAN='ppp0' # 外部インタフェース

 

#-------------------------#
# VPN接続からの接続を許可 #
#-------------------------#

$IPTABLES -t nat -A PREROUTING -i $WAN -p tcp --dport 443 -j DNAT --to 192.168.0.81:443
$IPTABLES -t nat -A PREROUTING -i $WAN -p udp --dport 500 -j DNAT --to 192.168.0.81:500
$IPTABLES -t nat -A PREROUTING -i $WAN -p udp --dport 1701 -j DNAT --to 192.168.0.81:1701
$IPTABLES -t nat -A PREROUTING -i $WAN -p udp --dport 4500 -j DNAT --to 192.168.0.81:4500

 

$IPTABLES -A FORWARD -i $WAN -p tcp --dport 443 -d 192.168.0.81 -s xxx.xxx.0.0/16 -j ACCEPT
$IPTABLES -A FORWARD -i $WAN -p udp --dport 500 -d 192.168.0.81 -s xxx.xxx.0.0/16 -j ACCEPT
$IPTABLES -A FORWARD -i $WAN -p udp --dport 1701 -d 192.168.0.81 -s xxx.xxx.0.0/16 -j ACCEPT
$IPTABLES -A FORWARD -i $WAN -p udp --dport 4500 -d 192.168.0.81 -s xxxx.xxx.0.0/16 -j ACCEPT

 PREROUTINGでルータで受け取った443ポート等の通信を192.168.0.81(ラズパイのIPアドレス)に透過させるようにします。

ただし、PREROUTINGの後に動作するFORWARDの記載では、-sオプションで特定のIPアドレス帯域からの通信のみを許容するようにしてアクセス制限をします。

私の場合は格安SIMを入れたAndroidからVPNを貼りたいため、SIMを提供している会社が払い出すIPアドレス帯域を事前に調べ、その帯域のみからアクセスを許容する形にしています。フルオープンは危険なのでやめましょう。

ちなみにiptablesは送信元をドメイン指定することも可能なので、いずれはAndroidでDynamicDNSクライアントでドメイン自動更新→そのドメインのみのアクセスを許容、という形を取る予定です。

 

注意点②

iptablesの設定が完了してもアクセス出来ない場合。

SoftEtherのログ(security_log/VPN/sec_2014xxxx.log)で「VPNクライアントの IP アドレスがまだ決定されていないにもかかわらず、VPNクライアントが通信を行おうとしました」とでていたら、仮想DHCPを設定しないとダメらしいです。

f:id:engetu21:20141122195926j:plain

 

 

f:id:engetu21:20141122195942j:plain

 

警告が出るけど気にしない

f:id:engetu21:20141122195948j:plain

 

SecureNATの設定に入り、仮想DHCPサーバの設定にチェック

f:id:engetu21:20141122195936j:plain