Edited at

L2なVPNでMacで学内から自宅のホームシェアリングにアクセスしてみた。


なぜこんなことをしたの

私の使っているSynology NASには、iTunes server機能(ホームシェアリング)がありまして、iTunesがインストールされているマシンへとDLNAのようにストリーミング配信してくれるんです。

これが本当に便利で、私の128GBストレージのMBAでは容量を食わず、使い勝手が最高です。

しかし、決して家の外からはそのままではアクセスできません。


そこでVPNですよ〜〜〜〜

日本にはSoftetherVPNという大変素晴らしいものが存在します。詳しいことはSoftheterのHPを見ていただきたいのですが、Etherフレームごとカプセル化してくれるVPNなのです。だから、WindowsではVPNクライアントアプリをSoftetherから拾ってきてGUIでそのまま設定すればいいんです。しかし、MacやLinuxではそうはいきません。CUIアプリで接続を行い、うまく全通信をVPNサーバ宛にルーティングしてやる必要があります。

また、私の学校ではプロキシサーバが上流にあり、TCP443ポートしか空いていません。そこで次のように通します。

MacWi-Fiゲートウェイプロキシサーバインターネット私のおうち→NAS


じゃあどうすんだ

単刀直入に言うとOpenVPNを使いました。CUIでルーティングするのはスクリプト書いたりと面倒なので…

MacではTunnelBlickを使います。インストールしておきましょう。

https://www.tunnelblick.net/


今回のケースでの設定の仕方


1.MacでVPN Server Managerを立ち上げ、OpenVPN/MS-SSTP Settingを開きます。


2.真ん中のGenerate a Sampleうんたらを押します。設定ファイルを保存する場所を選択する画面が出ると思います。/Desktopなど適当なところに保存します。


3.保存したOpenVPN~.zipを解凍し、中のフォルダにある「〜l2.ovpn」をテキストエディタで開き、環境に合わせて書き換えます。


l2.ovpn

dev tap

proto tcp #学内がudpプロトコルを弾くのでtcpにした
remote XXXX.v4.softether.net 443
http-proxy proxy.xxx.yyy 8080 ~/yourdirectory/user_auth.txt basic #学内プロキシ経由接続(ユーザ認証あり)
cipher AES-256-CBC
auth SHA1
resolv-retry infinite
nobind
persist-key
persist-tun
client
verb 3
auth-user-pass
<ca>
.
.
.


TunnelBlickで設定、接続、確認までする


1.個人用でインストール

先程のovpnファイルをTunnelBlickで開きます。


2.OpenVPN設定画面で、次のようにする。(下は「詳細設定」を押すと出る)


3.接続ボタンを押す。パスワードが求められたりしたら認証する。

自分のユーザ名、パスワードを入力する。


4.接続完了すると次のような画面が出るかもしれない。無視していい。


5.iTunesからNASがみえたよ!やったね!再生もできるよ!


おまけ

実はUbuntu向けにスクリプト書いてました。今となってはOpenVPNでええやんって話なんですけど。友人が研究でラズパイでこのスクリプト動かしてるらしいんで多分Debianでも動きます。知らんけど。


vpnstart.sh

#!/bin/sh

##VPN接続設定名、vpnclientとvpncmdの場所を定義
VPN_name=VPN
vpn_command_dir=./
##無線LAN接続中のNICデバイス名取得
machine_nic=$(for DEV in `find /sys/devices -name net | grep -v virtual`; do ls $DEV/; done)
##vpnclient起動
sudo ${vpn_command_dir}/vpnclient start
##VPN接続
sudo ${vpn_command_dir}/vpncmd localhost /client /CMD:accountconnect ${VPN_name}
##IPルーティング処理
sudo ip route delete default
sudo ip route add <proxyaddr> via <gwaddr> dev ${machine_nic}
##念のためもう一度VPN接続
sudo ${vpn_command_dir}/vpncmd localhost /client /CMD:accountconnect ${VPN_name}
##DHCPサーバからIPアドレスの取得
sudo dhclient vpn_vpn