Ubuntuで筑波大学にVPN接続する

動機

課題内容を学内からしか閲覧できない科目のレポートが突然目の前に現れた!!

俺はUbuntuでしかプログラムを書けない!!

しかし大学公式にはLinuxでの利用方法は書かれていない!!

方法

要約
  • ゲートウェイovpnファイルのremote行にdomein port形式で書かれている
  • ovpnを分割してそれぞれ鍵ファイルとして使う
学情のページを見る

筑波大学 VPN サービス 設定マニュアル

SoftEther VPN, L2TP/IPsec, OpenVPN, MS-SSTP の各プロトコルで提供されているらしい。

NetworkManagerにプラグインを入れる

$ apt search vpn をするとそれっぽいのが出てくる。 今回はOpenVPNを選択した。

$ sudo apt install NetworkManager-openvpn-gnome すると必要なパッケージが全部入った。

設定

学情のページでは散々にOpenVPNを避けるように案内されている。

OpenVPN プロトコルを用いた筑波大学 VPN サービスへの接続方法 を見ると公式クライアントでは設定ファイルを1つぶち込んでユーザー名・パスワードを入力すればいいらしいが, Ubuntuではそうはいかなかった。

NetworkManagerのアイコンをクリックし, 「接続を編集する…」をクリックして開いたダイアログで「Add」をクリックする。そこでOpenVPNを選ぶ。

「作成…」をクリックするとメニューが開くので認証→タイプを「パスワードと証明書(TLS)」にする。

f:id:y_sanagi:20170423200045p:plain

証明書や秘密鍵で3つのファイルが必要になるが, 学情で配布している設定ファイルは1つしかない。 しょうがないので設定ファイルをcatで見ると, 中身はXMLっぽくマークアップされたテキストである。

そこで<ca>内のテキストを全てca.pemとして, <cert>内をcert.pemとして, <key>内をkey.pemとして保存する。

学情からダウンロードした *.ovpn ファイルでremoteから始まる行がゲートウェイなので, domain:port の形で「ゲートウェイ」欄に記述する。 ユーザー名に13桁の番号(UTID-13), パスワードに統一認証パスワードを入力する。 ユーザー証明書として先ほど保存した cert.pem を, CA証明書として ca.pem を, 秘密鍵として key.pem を選択する。「秘密鍵のパスワード」は不要。

保存して, NetworkManagerのアイコンから「VPN接続」→(先ほど設定した接続の名前) を選択して「VPN接続の確立に成功しました」と表示されれば完了。

余談

SoftEtherも設定してみたが, 設定が悪くてパケットがVPNを通ってくれなかった。

追記: 学内へのアクセスのみVPNを通す

OpenVPNに接続するとパケットが学外に出ていかない感じだったが, 「IPv4設定」の「方式」を「自動(VPN)アドレス専用」にして, 「ルート…」からアドレス 130.158.0.0, ネットマスク 16 と入力したら学外にはVPNを通さずにアクセスできるようになった。traceroute によると 130.158.0.0/24 外の slis.tsukuba.ac.jp へもVPNを通っているがよくわからない。

f:id:y_sanagi:20170429160657p:plain

ちなみに, VPNを通したtracerouteは遅いので感覚でわかる。

追記2: Unity以外からVPN接続する方法

y-sni.hatenablog.com

coinsと物理学類の比較

よっぽどの物好き以外には物理学類に行ってほしくないので

coins

  • 学類のWebページに標準時間割があります
  • シラバスがあります
  • 演習を交えた講義が多いです
  • 3食には日替わりでない定食があります
    • 席がありません
  • 名店街があります
  • 天の川周辺で騒ぐ人がいて賑やかです

物理学類

  • 標準時間割なんてありません
  • シラバスは今年度までありませんでした (紙はあったらしい)
  • 講義は板書して終わりです
  • 1食は定食や丼は日替わりしかありません
  • 松屋が近いですが, 昼休みだけでは間に合いません
  • 松美池周辺で騒ぐ人も居ますが,極稀です。

留年が確定した

今年度で卒業研究履修条件に達する可能性がない

卒業研究履修条件

物理学類

卒業研究 履修条件: 卒業に必要な124単位のうち, 下記の授業科目を含む95単位以上を修得していること。 * 物理学実験3 * 物理学実験1 または 物理学実験2 次に掲げる授業科目のうちから選択するもの6単位以上, * 量子力学2 * 量子力学3 * 量子力学4 * 統計力学1 * 統計力学2

実験1,2は切っていた。

ほとんど物理学類の科目を修得できていないので実験3は拾得できる見込みがない。 実験3は通年なのでレポートの負担からして実験1や2と同年度に修得するのは困難。

6単位以上と言われたやつも 1つとして拾得していない

情報科学

卒業研究の履修条件は「『論理回路実験』・『(専攻)実験』を含む100単位以上履修済みであること」

その「(専攻)実験」の履修条件がcoins限定の科目で埋め尽くされているので今年度は履修できない。 あ, 来年度も履修できないのでは…… 3年次編入生は除くらしいが, あれは高専卒向けだし……

どうすんの

f:id:y_sanagi:20170406182230p:plain

昨年度春学期のように拾得6.0単位なんてもう見たくないからcoins系を取るしかない。

転学類できなかったら退学してニートですかね。 親は養ってくれるでしょう。

中途半端な気持ちで物理学類に入ったから全力にならずに落とすんだろうなあ。

最後に

coinsは 過年度の履修要覧の抜粋 を置いていて良いですね。 物理学類にはそんなものない。

本当に他人の田は真っ青だよ!!!!!!!

Nexus7 (2012) にROMを焼いた

鍵垢氏が「Nexus7の公式ROMはサードパーティROMに比べてクソ重い」と仰せていたので気になってインストールしてみた。

Nexus7を触る前に

ubuntuadbfastbootを使えるようにする
$ sudo apt install android-tools-adb
$ sudo apt install android-tools-fastboot
ROM・TWRP・GAPPSをダウンロードする

Nexus7を触る

Nexus7のブートローダーをアンロックする
  1. Nexus7を電源OFFの状態から「電源」ボタンと「音量小」ボタンを押してbootloaderを起動させる
  2. microUSBケーブルでコンピューターにつなぐ
  3. sudo fastboot devices でNexus7が認識されていることを確認してから, sudo fastboot oem unlockブートローダーをアンロック
TWRPを用いて焼く
  1. fastboot boot twrp-*.img を実行して, Nexus7をTWRPから起動する
  2. mount からMTPがONになっていることを確認する
  3. コンピューターからROMとGAPPSのZIPファイルを(Nexus7上の)任意のフォルダにコピーする
  4. TWRPのInstallからROMのZIPを選択し, インストールする
  5. TWRPのInstallからGAPPSのZIPを選択し, インストールする

引っかかったところ

最初に使おうとしていたLineageOSのZIP( [ROM][7.1.2_r24][UNOFFICIAL][grouper] Lineag… | Nexus 7 )が壊れていてインストールできなかった

追記 2018/07/19

GAPPSをインストールするときに "Wipe cache/dalvik-cache" すると既存のアプリや設定が消えるっぽい?

ちなみに新たにインストールしたのはこれ

forum.xda-developers.com

自炊は安上がりでない

今年に入って2回も食中毒っぽくなって心が折れた

食中毒リスク

当然飲食店でも食中毒が起きるリスクはあるが, 経営がかかっているから起きないようマニュアル化しているはず。 不慣れな人間がテキトーに加熱するのとはわけが違う。

食器洗い

「食器洗いしなきゃな〜〜」って意識で1時間経つ

原価

肉なんかはスーパーで買ってもそんなに安くない。食材や調味料を使い切れず, 廃棄することもある。

スケールメリット

1人分を調理・片付けするより, 大人数の分をまとめて処理したほうが効率が良い。

まとめ

みんな積極的に外食しよう!!

CGIを使ってRubyでTwitterスパムを作った

「大人のセンター試験」スパムが流行っているので, これくらいCGIを使えば簡単に作れるやろ〜〜ってノリで作った。試験期間中にも関わらず。ツイートを読み返すと4時間かかったらしい。

引っかかった点をメモする。

システム構成

cgiファイルをcoins機室で書き, 全学計算機から公開する。

Ruby gemを使えない

全学計算機のユーザー環境では gem install できるが, CGIサーバーには反映されないため, requireでエラーになる。幸いにもCGIサーバーにbundler gem はインストールされているため, Gemfile を書き, bundle install --path=./gems でローカルにインストールし, Rubyスクリプト(CGIファイル)内で require 'bundler'; Bundler.require することでgemを使える。

ちなみに, なぜかcoins機室のCentOSではgemをインストールすることができなかった。

セッション管理にはCGIライブラリを使う

RubyCGIを書いている人なんていない(みんなSinatraを使ってる)ので, セッション管理やURIパラメータの取得方法がわかりにくいが, CGIではCGIライブラリを使う。sinatraparams#.[](ハッシュっぽいの)は CGI#.[] に対応。

CGIライブラリはSymbolに対応していない

cgi.header( { status: 'REDIRECT', Location: url }) って書きたくなるけど, これではHTTPヘッダとして扱われないので, ちゃんと cgi.header( { 'status' => 'REDIRECT', 'Location' => url } ) と書かないといけない。

CGIレスポンスの文法

めっちゃ細かかったと思うけど記憶が定かではないから各自で調べて

結局アクセスされたん?

ユーザー認証ページまで進む人はたくさんいるが, 認証してくれたのはこの12時間で1人だけらしい。残念。