オープンソースを用いたVPNサーバ構築
社外から社内データに安全にアクセスする技術の人とに、VPN接続が考えられます。その技術はSSL-VPN、IPSecなど多種多様ですが、ここではシンプルなPPTP(Point to Point Tunneling Protocol)を用いた手順をご紹介します。OSの事前準備
FreeBSDサーバがまずは、NIC2枚差しで1枚は固定グローバルIPが設定されており、1枚は内部ネットワーク(固定プライベートIPアドレス)が割り当てられているものとします。 VPN装置としての設定に限って記載しますのでそのほか設定は各自でお願いします。1. kernel再構築
FreeBSD6.3では標準でtunデバイスが有効になっていますので、必要ありません。kernelの再コンパイルなどを実施し、不要デバイスを削除している場合には
が組み込まれていることを確認してください。
また、VPNサーバはゲートウェイとしての機能が必要です。/etc/rc.confに、
が記述されていることを確認してください。そのほか、ファイアウォール機能(ipfw)が有効な場合には、対象サーバのグローバルIP側に1723/tcpと、GREプロトコルが通信可能であることを確認してください。
add 10500 allow gre from any to any
以上でOS側の設定は完了です。VPNサーバの上流にファイアウォールが存在する場合にはそれぞれでVPNサーバへの経路を確保してください。
Poptopのインストール・設定
Poptopは/usr/ports/net/poptopにあります。通常のインストール手順でインストールが完了します。make install
続いて、設定ファイル(/usr/local/etc/pptpd.conf)の設定を行います。おもな設定内容は次の通りです。
options /etc/ppp/ppp.conf
debug
noipparam
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
logwtmp
pidfile /var/run/pptpd.pid
pptpdが起動するために、/etc/rc.confに次の設定を追記してください。
pppの設定
PoptopはpppをキックしてVPN接続を確立します。OS標準で導入されているpppを利用する場合は以下の設定ファイルを書き換えます。/etc/ppp/ppp.conf
default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set timeout 180 # 3 minute idle timer (the default)
enable dns # request DNS info (for resolv.conf)
loop:
set timeout 0
set log phase chat connect lcp ipcp command
set device localhost:pptp
set dial
set login
set ifaddr 192.168.0.1 192.168.0.234-238,192.168.0.245 255.255.255.0
set server /var/tmp/loop "" 0177
loop-in:
set time-out 0
set log phase lcp ipcp command
allow mode direct
pptp:
load loop
disable CHAP MSCHAP PAP
enable MSCHAPv2
disable deflate pred1
deny deflate pred1
set mppe 128 stateless
enable MPPE
accept MPPE
accept dns
set dns 192.168.0.1
enable chap81
enable proxy
/etc/ppp/secure
exec /usr/sbin/ppp -direct loop-in
/etc/ppp/ppp.secret
作成したファイルのパーミッションを適切に変更します。
chmod 500 /etc/ppp/secure
以上で作業は完了です。以下コマンドを発行してVPN接続サーバを起動します。