PC ルーターとして構築した Slackware 10.2 で VPN パススルーを実現する

SERVER


PPTP-VPN パススルー

Liinux で構築した PC ルーターを間に挟むネットワークで、その内側に構築した PPTP-VPN サーバーへ外側からアクセスしようとしてみたところ、上手く接続することができませんでした。

PPTP-VPN サーバーへ接続するためには、1723/TCP ポートと併せて GRE パケットを転送するひつようがあるのですが、どうやら GRE パケットの方が正しく転送できていないような感じです。調べてみると "ip_gre.o" というモジュールによって GRE トンネリングを行うことができるとのことでしたので、それを用いて PPTP-VPN を開通させてみることにしました。

 

まず、1723/TCP と GRE パケットの転送については、次のようになると思います。

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 1723 -j DNAT --to 192.168.1.5:1723

iptables -t nat -A PREROUTING -i ppp0 -p gre -j DNAT --to 192.168.1.5

これは、PPTP-VPN サーバーの IP アドレスが 192.168.1.5 で、接続要求が ppp0 インターフェイスから来るものとして設定しています。

 

これだけだと GRE パケットが正しく通過できないようですので、GRE トンネリングを行えるように、次のようにして "ip_gre.o" モジュールを読み込みます。

insmod ip_gre

これで、この PC ルーターを経由して、内部の PPTP-VPN サーバーへ接続できるようになりました。

 

"ip_gre.o" モジュールを Linux 起動時に読み込むようにするには、Slackware の場合は "/etc/rc.d/rc.modules" ファイルに次の行を追加すれば大丈夫です。

modprobe ip_gre