学内限定サーバーでしかオンラインアクティベートできないMathematicaを学外からアクティベートする方法(MacOS)


はじめに

Mac使いでMathematicaを使いたいが、ライセンスサーバーが学内にあるので学外からアクティベートできず使えない!

こんな経験がある方はこの記事を見れば解決します。(ただしVer.11以前のMathematicaでは成功していません。)

sshでDynamic Port Forwardingを飛ばしてしまえば解決するはずだったのですが、どうやらMathematicaはMacのネットワーク設定からsocksプロキシを設定しても見てくれないようです。。。
この現象によって筆者はずっと悩んでいましたが、tsocksというソフトを利用することによって解決しました。

(また、この記事はMacOSを標的としていますが、LinuxやWindows Subsystem for Linux(WSL)でも同様の手順で解決するはずです。
純正Windowsはtsocksが使えないのでもう少し工夫する必要がありそうです。)

環境

  • MacOS Mojave 10.14.6
  • Mathematica 12.0

※ Mathematica 11.1以前の32bit版を使用している方は後ろの方のMathematica 11.1で起動しない問題も参照してください。

Dynamic Port Forwarding

まず、Mathematicaのライセンスサーバーにpingが通る踏み台サーバーを用意し、
sshでDynamic Port Forwardingします。
Dynamic Port Forwardについての詳細な説明は省きます。
詳しくはググるか、sshによるポートフォワーディングまとめなどを参照してください。

$ ssh {ユーザー名}@{学内に置いてある踏み台サーバーIP} -D 10080

ここでは10080ポートを利用していますが、基本何でもいいです。ただし、小さい数字はすでに何かのサービスが専有している可能性があるので10000以上を指定するのが無難です。

本来はここまでやってsocksプロキシを設定すればよいのですが、今回は追加の手順が必要です。

tsocks

tsocksは任意のアプリケーションの通信を強制的にsocksプロキシ経由にするソフトです。
githubで公開されています。

homebrew版もありますが、上手く動かなかったのでソースからビルドします。

まず別のターミナルを開いて、ローカルにcloneします。(今回は~/optを作業ディレクトリとします。)

$ cd ~/opt
$ git clone https://github.com/pc/tsocks.git

あとはgithubで記された手順に従って作業しますが、/usrにソフトをインストールすることは推奨されていませんし、SIPで保護されているので、/usr/local以下にインストールするように変更します。

以下の手順を実行してください。

$ cd tsocks
$ autoconf
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

次に/usr/local/bin/tsocksを以下のdiffのように修正します。

$ vi /usr/local/bin/tsocks
diff
45c45
< LIBDIR="/lib"
---
> LIBDIR="/usr/local/lib"

さらにtsocks用の設定ファイルを作ります。

$ sudo vi /etc/tsocks.conf
$ cat /etc/tsocks.conf
server = 127.0.0.1
server_type = 5
server_port = 10080

ここでのserver_portは先程ポートフォワーディングで設定したポートです(今回は10080)。

実際に起動する

以下で起動します。

$ tsocks /Applications/Mathematica.app/Contents/MacOS/Mathematica

これでsocksプロキシ経由でMathematicaを起動することができました。

毎回これを入力するのはめんどくさいので、エイリアスを設定しておくと良いです。

$ echo "alias math-socks='tsocks /Applications/Mathematica.app/Contents/MacOS/Mathematica'" >> ~/.bashrc

次回からは以下でsocksプロキシを経由して起動できます。

$ math-socks

あとは起動したMathematica上でいつものようにネットワークアクティベートすればOKです。

Mathematica 11.1で起動しない問題

同様の手順でMathematica 11.1を起動しようとすると、

$ tsocks /Applications/Mathematica.app/Contents/MacOS/Mathematica
dyld: could not load inserted library '/usr/local/lib/libtsocks.dylib' because no suitable image found.  Did find:
    /usr/local/lib/libtsocks.dylib: mach-o, but wrong architecture
    /usr/local/lib/libtsocks.dylib: stat() failed with errno=1

[1]    66718 abort      tsocks ./Mathematica

と怒られます。
これはVer.11以前のMathematicaが32bitアプリであるため発生している現象です。

これに対応するためにはtsocksを32bitでmakeする必要があると思われますが、、、勉強不足でやり方がよくわかりません。
どなたか教えて下さい。