«前の日記(2009-07-16) 最新 次の日記(2009-07-21)» 編集

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2009-07-17 SSHは万能?

OpenSSH による VPN

OpenSSH を使った簡易 VPN の構築 を参考にSSHでVPNを接続してみたときのメモ。サーバは 7.2-RELEASE、クライアントは 8-CURRENT。

目標状態はまあこんな感じ。

今回は tap デバイスを使ったトンネリングをするので、サーバ・クライアントの両方に tap デバイスが必要です。なければ、作る。ブリッジインターフェイスもあとで使うのでついでに作っておく。

# ifconfig tap0 create
# ifconfig bridge0 create

SSH-VPN 用の鍵をあらかじめ作っておき、その鍵でrootでログイン出来るようにしておきます。そして、接続。

client# ssh -oTunnel=ethernet -w0:0 -i /root/.ssh/ssh_vpn example.vmeta.jp

オプションの詳細は man 1 ssh でも見てください。うまく接続できたら、こんな風になってるはずです。

server# ifconfig tap0
tap0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:bd:b0:39:c3:00
Opened by PID 73615
client# ifconfig tap0
tap0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 00:bd:8f:37:80:00
Opened by PID 54562

サーバとクライアント間でVPNが確立できたので、VPN回線とサーバ側のネットワークをブリッジで接続します。

server# ifconfig bridge0 addm em0 addm tap0 up
server# ifconfig bridge0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	ether 72:07:5d:cd:ba:b3
	id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
	maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
	root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
	member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 4 priority 128 path cost 2000000
	member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 1 priority 128 path cost 200000

クライアント側も同様にして、

client# ifconfig bridge0 addm0 vr0 addm tap0 up
client# ifconfig bridge0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
	ether 36:d3:e2:27:4f:d2
	id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
	maxage 20 holdcnt 6 proto rstp maxaddr 100 timeout 1200
	root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
	member: vr0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        ifmaxaddr 0 port 2 priority 128 path cost 200000
	member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
        ifmaxaddr 0 port 6 priority 128 path cost 2000000

と設定すると、図のようにネットワークがつながります。

接続後のインターフェイスの設定を自動で行うには、上のページの「実際に運用する」あたりに習って設定すればOKです。

手軽に構築できるSSH-VPNですが、常用するには向いてないと思います。