SSHだけで簡易VPNが構築できる「sshuttle」が便利

Apple

VPNを利用する事ができる高価なルータなどの機器がなくても、sshでさえ繋がることができれば、簡易VPNのようなアクセスを可能にするsshuttleが便利だったので紹介します。

スポンサーリンク

sshuttleとは?

Linux, MacOS, FreeBSDをサポートするSSH越しにリモートネットワークへのアクセスを可能にするソフトウェアです。実態としては、LinuxであればiptablesをMacOSではipfwを利用して、リモートネットワーク宛てのパケットをSSHコネクションを張ったトンネルを通してアクセスできるように設定してくれるソフトウェアです。
今までSSH Port Forwardingを1ポートずつ設定や起動をしていた人も多いかと思います。sshuttleを利用するとリモート先のネットワークを指定するだけで、あとは全部よしなにやってくれるようになります。
IPSecやPPTPなどのプロトコルをしゃべることのできる高価なルータや機器を用意する必要もなく、汎用的なSSHサーバを用意するだけで実現できるのはとても便利です。

インストール方法

環境はMac OSXを前提にして解説します。
Homebrewをインストールしている環境であれば

$ brew install sshuttle

とすればsshuttleがインストールされます。

トンネルのつくりかた

VPN先のネットワークが192.168.230/24だとすると

$ sshuttle -r ユーザー名@ホスト名 192.168.230.0/24
Connected.

このようにコマンドを打つだけです。ipfwの設定するためにsudoのパスワードを求められます。
ipfwの設定を確認すると

$ sudo ipfw list
12300 check-state12300 fwd 127.0.0.1,12300 tcp from any to 192.168.230.0/24 not ipttl 42 setup keep-state
12300 skipto 12301 tcp from any to 127.0.0.0/8
65535 allow ip from any to any
$ netstat -an | grep 12300
tcp4       0      0  127.0.0.1.12300        *.*                    LISTEN

パケットの宛先がVPN先のネットワーク192.168.230/24の場合は、自分のホスト(127.0.0.1)のPort 12300宛てにパケットを転送される設定がipfwに追加されています。
これでVPN先の192.168.230/24と通信することができるようになりました。
その他の詳しい設定やDNS tunnelingもできるので、詳しくは公式サイトのドキュメントをご覧ください。

タイトルとURLをコピーしました