Crunchyrollにアクセスする

呪術廻戦のSimulcastを見たいと思ったがこの仕打ち。
https://www.crunchyroll.com/jujutsu-kaisen
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/12c3c927-8db3-5e39-ab4f-fdb157af9929.png)

クソ。。我々は自由だ！

# 変数表
以下の変数表をコピーして手元のnotepadに張り付けておく。よく使うので。
値は後々埋める。

```
＜自宅ルータIP＞192.168.0.1
＜ローカルGWIP＞192.168.0.2
＜自宅のグローバルIP＞
＜取得したドメイン名＞example.com
＜innのホスト名＞inn.example.com
＜innのパブリックIP＞
＜innのプライベートIP＞10.x.x.x
＜outのパブリックIP＞
＜outのプライベートIP＞10.x.x.x
＜VPNユーザー名＞
＜VPNパスワード＞
```

# 自宅のIPアドレスを確認する
１．以下のURLにアクセスして、自宅のIPアドレスを確認する。
https://www.cman.jp/network/support/go_access.cgi
＜自宅のグローバルIP＞は変数表に控える。

# IBM Cloud側準備
無ければIBM Cloudのアカウントを作る。実際にモノ（サービスか）を買うのでクレカの登録も必要。
https://cloud.ibm.com/login

１．「Classic」＞「Network」＞「IP Management」＞「VLANs」を開き、「VLAN Spanning」をEnableにする。

２．「Classic」＞「Services」＞「Domain Registration」を開き、「Register」から適当なドメイン名を取得する。年$10くらい。取得まで数分掛かる。Route 53等、他のレジストラのドメインを持ってるならそれでも流用可。
＜取得したドメイン名＞は変数表に控える。

３．「Classic」＞「Devices」＞「Device List」を開き、「Order」から「Virtual Server Classic」を作る。
Hostnameは「inn」、Domainは「＜取得したドメイン名＞」とする。
場所は、Asia-Pasfic/TOK02とか、自宅に近いところで。
サイズはU1.1x2とかの最小のもので結構。
OSはCentOS 7 Minimal。CENTOS8は試してないし、多分動かない。
＜innのホスト名＞は変数表に控える。

４．「Classic」＞「Devices」＞「Device List」を開き、「Order」からもう一つ「Virtual Server Classic」を作る。
Hostnameは「out」、Domainは「＜取得したドメイン名＞」とする。
場所は、今度はNA West。SJC03とかで。
サイズはU1.1x2とかの最小のもので結構。
OSはCentOS 7 Minimal。

５．２台の仮想サーバーが出来たら、それらのパブリック、プライベートIPアドレスを変数表に控える。

６．「Classic」＞「Network」＞「DNS」＞「Forward Zones」を開き、取得したドメイン名を開き、「Add New Record」で「inn」と、＜innのパブリックIP＞のAレコードを登録する。
outを登録してもいいが、こちらはあまり使わない。

# outサーバーを構成する
１．Device Listを展開してoutサーバーのrootのパスワードを入手し、sshでログインする。
ログインしたら、以下のコマンドを入力してパスワードを自分で覚えられるものに変更する。

```
# passwd
```

２．以下を実行する。

```
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# sysctl -p

# iptables -A INPUT -s ＜自宅のグローバルIP＞ -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -i eth1 -j REJECT
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# cat > /etc/sysconfig/network-scripts/ifcfg-tun0 << EOF
DEVICE=tun0
BOOTPROTO=none
ONBOOT=yes
DEVICETYPE=tunnel
TYPE=GRE
PEER_INNER_IPADDR=192.168.2.2
PEER_OUTER_IPADDR=＜innのプライベートIP＞
MY_INNER_IPADDR=192.168.2.1
EOF

# modprobe ip_gre
# ifup tun0

# ip route add 192.168.0.0/24 via 192.168.2.2 dev tun0
# ip route add 192.168.1.0/24 via 192.168.2.2 dev tun0

```

# innサーバーを構成する（１）
１．Device Listを展開してinnサーバーのrootのパスワードを入手し、sshでログインする。
innサーバーへのsshログインは、outサーバーからinnサーバーのプライベートIPを使って行う方がいい。パブリック側のデフォゲを消したりとかいろいろするので。
ログインしたら、以下のコマンドを入力してパスワードを自分で覚えられるものに変更する。

```
# passwd
```

２．以下を実行する。

```
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# sysctl -p

# cat > /etc/sysconfig/network-scripts/ifcfg-tun0 << EOF
DEVICE=tun0
BOOTPROTO=none
ONBOOT=yes
DEVICETYPE=tunnel
TYPE=GRE
PEER_INNER_IPADDR=192.168.2.1
PEER_OUTER_IPADDR=＜outのプライベートIP＞
MY_INNER_IPADDR=192.168.2.2
EOF

# modprobe ip_gre
# ifup tun0

```

３．OpenConnectのSSL VPNサーバーを作る。
(参考) https://qiita.com/xiaotuanzi/items/b4bad2ab0491c3cc3325

```
# yum install -y epel-release
# yum -y install certbot
# certbot certonly --standalone --preferred-challenges http --agree-tos --email ＜自分のメールアドレス＞ -d ＜innのホスト名＞

# yum install -y ocserv
# sed -i -e 's/^auth = "pam"/#auth = "pam"\nauth = "plain[passwd=\/etc\/ocserv\/ocpasswd]"/' /etc/ocserv/ocserv.conf
# sed -i -e 's/^server-cert = .*$/server-cert = \/etc\/letsencrypt\/live\/＜innのホスト名＞\/fullchain.pem/' /etc/ocserv/ocserv.conf
# sed -i -e 's/^server-key = .*$/server-key = \/etc\/letsencrypt\/live\/＜innのホスト名＞\/privkey.pem/' /etc/ocserv/ocserv.conf
# sed -i -e 's/^#ipv4-network = 192.168.1.0\/24/ipv4-network = 192.168.1.0\/24/' /etc/ocserv/ocserv.conf

# ocpasswd -c /etc/ocserv/ocpasswd ＜VPNユーザー名＞
　→ ＜VPNユーザー名＞と＜VPNパスワード＞を入力する。
　→ それらを変数表に控えておく。

# systemctl start ocserv

```

なお、頻繁にサーバーを作っては壊しとする場合は、以下のファイル内容を変数表の下の方にコピーして取っておいてもいいだろう。certbotを再実行する必要が無くなる。

```
# cat /etc/letsencrypt/live/＜innのホスト名＞/fullchain.pem
# cat /etc/letsencrypt/live/＜innのホスト名＞/privkey.pem
```

４．ネットワーク構成をもう少し変える。

```
# gateway=$(grep 'GATEWAY=' /etc/sysconfig/network-scripts/ifcfg-eth1|sed 's/GATEWAY=//')

# cp /etc/sysconfig/network-scripts/ifcfg-eth1 ~
# sed -i -e 's/DEFROUTE=yes/#DEFROUTE=yes/' /etc/sysconfig/network-scripts/ifcfg-eth1
# sed -i -e 's/GATEWAY=.*$/#GATEWAY=/' /etc/sysconfig/network-scripts/ifcfg-eth1

# ifdown eth1 && ifup eth1
# ip route add ＜自宅のグローバルIP＞/32 via $gateway dev eth1
# ip route add default via 192.168.2.1 dev tun0

```

# 自宅ネットワーク内にVPNトンネルゲートウェイを作る
WindowsのOpenConnectクライアントが、若干期待と違う動作をするため、ローカルネットワークのVPNトンネルとしてCentOS7の仮想サーバーを作る。こいつがOpenConnectクライアントでinnに接続する。
スペックは、OSが入れば何でもいい。デフォルトの2CPUに4GBメモリで十分だろう。
ネットワークは、手元のPCと同じセグメントに配置する。VMWare WorkstationならブリッジNW。インターネットにつながるよう構成する。
仮想サーバーのIPアドレスを＜ローカルGWIP＞として変数表に控える。

１．OpenConnectクライアントを導入する。

```
# systemctl stop firewalld
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# sysctl -p
# yum -y install epel-release
# yum -y install openconnect
# openconnect https://＜innのホスト名＞
　→ ＜VPNユーザー名＞、＜VPNパスワード＞を入力する。
```

「Connected as 192.168.1.34, using SSL, with DTLS in progress」と表示されたら、ocserverとつながっている。
「192.168.1.34」のアドレスは、ocserverに静的ルーティングを仕込むために必要になる。
「Failed to read from SSL socket: The transmitted packet is too large (EMSGSIZE).」とか、「Failed to recv DPD request (-5)」は気にしないでいい。

２．元のデフォルトゲートウェイが残る場合があるので、これを削除する。
別のsshクライアントでVPNトンネルサーバーに再度接続し、以下を実行する。
192.168.0.1は、＜自宅ルータIP＞である。（これとは別に、＜innのパブリックIP＞に接続するための別の経路が存在するはずである）

```
# ip route
　→ 「default via 192.168.0.1」の行が存在する場合は以下を実行する。
# ip route del default via 192.168.0.1
```

なおここで手動でdefaultゲートウェイを削除した場合は、VPN切断時に元のゲートウェイを自分で戻す必要がある。

```
#  ip route add default via 192.168.0.1
```


# innサーバーを構成する（２）
VPN接続後、192.168.0.0/24ネットワークへの静的ルーティングを仕込む。

```
# ip route add 192.168.0.0/24 via 192.168.1.34 dev vpns0
```


# PCのデフォルトゲートウェイを切り替える
１．検索ボックスで「ncpa.cpl」と入力し、ネットワーク接続の設定を開く。

２．イーサネット、あるいはインターネットに接続しているアダプタをダブルクリックして設定画面を開く。

３．「プロパティ」＞「インターネット プロトコル バージョン 4 (TCP/IPv4)」のプロパティを開き、「デフォルト ゲートウェイ」を＜ローカルGWIP＞に変更する。

VPN経由でなく通常のインターネット接続に戻したい場合は、上記PCのデフォルトゲートウェイをもとに戻す。

# 呪術廻戦よ再び
https://www.crunchyroll.com/jujutsu-kaisen
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146381/fead8535-9c29-4781-5820-dff95dc9d282.png)


見れる。

回線品質としては、鑑賞中に通信遅延で再生中断する頻度が１話２４分内で３～４回といったところか、個人的には十分耐えられる。

英語吹き替えアニメは需要こそ少ないが英語学習にも一定の効果があり、何より吹き替えすることで大体はシリアス寄りのトーン調整が入るので、ものによってはオリジナルよりも好みに合う作品が出来ることもある。

ライセンスだか何だか知らないが、それら「良い」作品からわざわざ日本人をシャットアウトする現在の構造は陰謀とか悪意すら感じるものであり、いずれはこんなクソ面倒な仕組みを用意せずとも正規に視聴できる日が訪れることを望む。

あるいは、フタエノキワミが吹き替え業界に今でもトラウマとして残っていたりとか、そんな理由があったりするのだろうか。