ネットワーク関係

研究室のネットワーク環境の構築

晴れてサーバをグローバル環境においたのでJupyterに外からアクセスできるようになった.(購入費とか作業費とか諸々で30万弱かかったけど…)

VLANにはBuffaloのL2スイッチ,ファイアウォールにはFortiGateのFortigate 50を導入した.L2スイッチで研究室に1本しかないLAN端子の通信を仮想的に分岐させてから,グローバル環境側にのみファイアウォールを挟んでいる.
経験的にBuffalo製品を使うとネットワークの調子が悪くなるというジンクスがあってげんなりしていたのだけれど,案の定設置から3日経ってもネットワークの接続が断続的なのでさめざめと泣いている.その辺は今後要改善.

研究室のネットワークの設定にあたりやらなければいけないことは2つある.

– 解析サーバーのセキュリティの確保
– 論文検索のための学内経由でのブラウジング

解析サーバーのセキュリティの確保

解析サーバーのセキュリティの確保は実は結構厳重にやっている.ファイアウォールにFortigate 50を導入して,アクセス元のグローバルIPとアクセス先のポート番号をホワイトリスト形式で指定,そこが一致しない通信は全て遮断している.

当初の計画では,自宅の光回線とスマホのSIMを固定IPにし,学外アクセスはそのIPだけを受け入れる形を取ろうとしていた.ただ,まずフレッツ光の固定IPオプションが月およそ1200円(しかもうちで契約しているOCN光の場合だと固定IPを提供しているのは法人契約のみ),そしてスマホの固定IP化に関してもIIJではやっていないので別で固定IPをやれるようなMVNOに乗り換える必要があって,何が言いたいのかというと,全般的に初期投資もランニングコストもかなりかさむ構成になり,しかもうちの光回線は基本的人権が担保されないレベルで遅いので,こんなもののために年額14400円多く支払うのはあまりにもあほらしくてやめた.

本当なら名城大学で提供しているVPNに接続することで,アクセス元IPの範囲を学内ネットワーク(これをメイネットという)から振り出されるグローバルIPの範囲に絞るのが一番楽に最低限のセキュリティを確保しつつ利便性も高められていいんだけど,残念ながらこの大学のVPNはいわゆる全ての通信をVPN経由にするようなものではなくて,特定の学内サイト(簡単にいうとインターナルのみに公開されている情報センターとか学務とかのサイト)へのアクセスのみがVPN経由になるようなもの.だからたとえば学外からVPNに繋いでもGoogle Scholarへのアクセスには学内を経由しないし,同様に僕が研究室から公開しているサーバへのアクセスにも学内を経由できない.本当に事務仕事のためのVPNじゃん.困った.

最初は愚かすぎるアイデアとして(こんなこと考えていたのがバレたら情報センターの偉い人に怒られるかもしれないが,思考とは実行しない限り自由なのだ),ローカル側においてあるPC上からSoftEtherでメイネットに穴を開けるか,もしくはパケットをHTTPに偽装するか何かすればサーバのIP受け入れの範囲を広げなくてもいいなとか馬鹿なことを考えていた.だがそれができるならそもそもサーバをグローバル上に公開する必要がない.サーバで直接SoftEtherを走らせて,SoftEtherから提供されてるAzure Cloud経由(たぶんブリッジしてトンネル掘ってるからNATの中なのに穴開けられるってことなんだと思うんだけど)で繋げればいい話だし,そもそも冷静に考えてこの大学のセキュリティだとSoftEtherでは突破できない.

こうなると外からのアクセスをどうしようという話になる.もちろんアクセスは絞るのでファイアウォールで送信元IPベースでフィルタリングをするわけだけど,一番愚かな方法として,あらかじめスクリプトを組んでおいて作業前になったらそのスクリプトに現在の環境のグローバルIPを記述してリモートサブミットすることで動的(本当は動的ではないが)にIPのホワイトリストを書き換える方法.これは面倒なのと,出先で肝心な時にリモートサブミットがエラー吐いたりすると対処が面倒なのでやめた.外からだろうと名城のVDI環境につないでメイネット内からIP指定すればGUIの接続設定は開けるので最悪なんとかなるといえばなるのだが,外の様々な環境で使用することを考えると,ある瞬間に同じグローバルIPでアクセスするのは必ずしも僕だけではないのでやめた.

自力でVPNを組むにも色々なやり方がある.クラウド使うならAWS Client VPNで固定IPのVPNを構成,そのIPをホワイトリストに追加すること.光回線とMVNOを乗り換えるコストよりは確実に安くなる.だが問題なのは面倒だということ.赴任1年目ももう半期終わってしまったわけで,流石にあんまり環境構築ばかりに時間はかけていられない.
もしくは市販のVPNサービスとしてもう面倒くさいからInterlinkのマイIPを1回線契約する.これだとMacでもiOSでもL2TPのプロトコルで接続できるので,iPadからでも簡単に接続できる.
さらには自分のサーバでVPNを組むことも考えられる.解析サーバのJupyter向けのHTTPポート(80番は意図的に使っていない)自体を開放するのは怖いけど,VPN関係のポートだけは受け入れ元IPを全開放にしておいて,外部から証明書使ってVPN確立したらあとはJupyterの解析はサーバのlocalhost上なのでアクセスできる.このやり方も不可能ではない.PPTP,L2TP,OpenVPN,MS-SSTPまあどれであろうと使うポートは分かっているのでそこだけ開けとけばいい.

とにかくそういった何かしらのIPを固定するための方法を使えば,セキュリティを確保した上での外部アクセスはなんとか実現できそう.まあ本当はMACアドレスベースでもフィルタリングしたいんだけどねー.

あとはBuffaloのVLANがなんとかなってくれればとりあえずこっちは解決なのだが.

論文検索のための学内経由でのブラウジング

そして論文検索については,普通に考えるとこの構成だと引き続きTeamViewerを使ってメイネットローカル側に置いたデバイスにアクセスしてそこからリモートデスクトップでブラウジングする,もしくはVDIでやる形にするのが妥当.でも妥当だろうとめんどくさい.TeamViewerは最近締め付けがすごいし.リモートデスクトップだろうとVDIだろうとスクロールの不自由さに泣く.

ということでこれを無理やり実現する方法としては
– VLANがあるのだからVLANの設定をいじって特定サイトへのアクセスにのみグローバル環境側でもローカルを経由する設定にする
– グローバル環境にあるサーバにNICを増設してローカル側のルーターにも突っ込む
どちらにせよ面倒なのだ.
VLANがあるとはいえVLANなんか不安定だしなあ.これで特定のサイト(たとえばGoogle Scholar)へのアクセスには無条件にメイネットを経由するように設定できれば,グローバルに公開したサーバに外部からVPNで接続して,その先の通信はメイネット経由で,という構成が可能になる.ただなんとなく,VLANは触らせてもらえないような気がする.あともし振り分けるにしてもドメインベースじゃなくてIPベースで指定しなきゃいけないような気がする.
そしてNIC増設はサーバのLAN端子を増やしてそれをメイネットローカル側のルーターにも接続することで,特定のサイトへのアクセスに限っては学内経由にするという考え方だが,ネットに落ちている数少ない実装例を見てみたものの明らかに面倒くさい.クリティカルに一致する事例も当然ない.

ということでやれればVLAN,無理なら出先からの論文検索はVDI経由ということになる.こればかりは仕方がないかもしれない.