韓国のブロッキングは今どうなってるのか

# 始めに
先週は衆議院選挙でした。
選挙の投票先を決めるために諸々を調べていたら神奈川20区の甘利明氏が演説する動画が流れてきました。
それを見た時、「そういえば2018年頃、漫画村のようなサイトに対するアクセスを制限するため、DNSブロッキングを甘利氏が提案していたな」と思い出しました。
[「漫画村」ブロッキング――誰が、どんな経緯で動いたのか](https://news.yahoo.co.jp/feature/1039/)
> 状況が急展開するなか、3月上旬の自民党の知的財産戦略調査会で問題が提起された。
> 
> 会長を務める甘利明・元経済再生担当相は、漫画村など海賊版サイトの状況を知り「このままではまずいと思った」と言う。
>「『時間との戦いだ』という声を聞きました。出版社はものすごい勢いで売上が減っていて “出血量”がひどい、このままでは出版社がつぶれ、漫画家がやっていけなくなると。それで私が官邸に話をしたのです」

この話題は当時、大きな議論を巻き起こし、違法コンテンツに対する対策として注目されましたが、最終的にはブロッキングの実施を見送ることになりました。

その後、2019年には全く別件で韓国でも同様にインターネットアクセスに対するブロッキングが強化され、違法コンテンツや有害情報への更なるネット規制が実施されました。現在もこの措置が有効かどうか、またその仕組みがどのように機能しているのかが気になるところです。

# 韓国のブロッキングについて
韓国のブロッキングは、DNSブロッキングに加え、SNI（Server Name Indication）ブロッキングも実施されています。
## DNSブロッキング
DNSブロッキングは、アクセス制限の手法として比較的古くから使われており、ユーザーのDNSリクエストを改変することで特定のサイトへのアクセスを妨害します。DNSブロッキングでは、ブラックリストに登録されたドメインに対して、ISP（インターネットサービスプロバイダ）やDNSサーバーが、正しいIPアドレスの代わりに異なるアドレス(ブロック通知ページやエラーページのIPアドレス)を返答するか、リクエストを無視することでアクセスを制限します。

## SNIブロッキング
SNIブロッキングはTLSの3wayハンドシェイクの最初の段階であるClient Helloパケットを監視することでブロッキングを実現しています。
Client Helloパケット内には記載された「これから接続しようとしているドメイン名」が平文で載っています。
通信を中継する韓国内のISPは常にパケットを監視し、Client Helloパケットに記載されたドメイン名が政府機関(放送通信審議委員会)によって定められたブラックリストに載っている場合、リクエストを破棄してアクセスを遮断する仕組みです。
韓国に限らず、SNIブロッキングを実施している国はあるのでこの対策として、Encrypted SNI（eSNI）が実装されています。これはClient Hello内のドメイン名をDNSレコードに保存されている鍵を使って暗号化することで、ドメイン名が直接見えないようにする方法です。
しかし、eSNIを使用しているという事実自体は検知可能なため、暗号化されていることを理由にブロックされていまいます(現に韓国ではそうなっています)。

このため、VPNを利用するのが最も手軽で効果的な回避策とされていますが、パケットを分割してもSNIブロッキングを回避できるのではないかという議論もありました。具体的には、MTU（Maximum Transmission Unit）を小さく設定することで、Client Helloパケットを複数に分割し、検閲システムにドメイン名を認識させなければ通信が進むのではないかという方法です。

# ブロッキングされてみる
ここで、実際にこのMTU細切れ法が現時点で有効かを確認するため、以下の手順で検証を行います。
VPNで対策出来るということは、韓国を拠点に置くVPNにつなげば問題は再現出来ます、現状確認ですね。
1. SoftEther VPN/OpenVPNで韓国のVPNに接続する
1. [inonius Speedtest](https://inonius.net/speedtest)で韓国からのアクセスになっていることを確認する
1. [Namu Wiki](https://en.namu.wiki/w/%EC%9C%A0%ED%95%B4%20%EC%82%AC%EC%9D%B4%ED%8A%B8/%EB%AA%A9%EB%A1%9D)に書いてあるブロックされたサイトにアクセスしてみる
(今回は女性の健康と生命を守るための避妊と安全な中絶サービスへのアクセスを提唱し、促進するカナダの非営利団体、Women on Webへのアクセスを試してみます。)
※ なぜWomen on Webなのかというとブロッキングされた時に分かりやすく警告画面が出るからで、他意はありません。

まずは何もせずにそのままアクセスしてブロックされる事を確認します。

**※ PCだと今まで色々いじった設定が悪さしてるのか、全て貫通して接続出来てしまい、本題から外れるので確実に検証できたスマホからのアクセスになります。**
#### 1. SoftEther VPN/OpenVPNで韓国のVPNに接続する
[VPN Gate](https://vpngate.net/ja)にアクセスして韓国にあるVPNサーバーの設定ファイルをダウンロードして、OpenVPNのアプリに設定を読み込ませてVPNに接続します。
![IMG_20241030_194331.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896055/1f9e331a-3164-bb4c-5922-86755142499d.jpeg)

#### 2. [inonius Speedtest](https://inonius.net/speedtest)やGoogle mapの初期位置で韓国からのアクセスになっていることを確認する
赤枠の通り、韓国からのアクセスになっています。
![IMG_20241030_195155.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896055/47d93d21-2b24-bbf2-3483-4a8e303c97e3.jpeg)

#### 3. [Namu Wiki](https://en.namu.wiki/w/%EC%9C%A0%ED%95%B4%20%EC%82%AC%EC%9D%B4%ED%8A%B8/%EB%AA%A9%EB%A1%9D)に書いてあるブロックされたサイトにアクセスしてみる
当然ブロックされて規制団体の警告画面が返ってきます(これはDNSブロッキングされた時のブロック通知画面)。
![IMG_20241030_192240.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896055/82f42438-c686-2543-9086-f5d2ffd14a7e.jpeg)

# 検証: MTUを小さくするとブロッキングは回避できるのか？
ダウンロードしたOpenVPNの設定ファイルに以下の項目を追加する。
`tun-mtu`の最小値が`576`なのでそれに合わせています。
```
mssfix 576
tun-mtu 576
```
![IMG_20241030_192308.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896055/7c71e1ce-ac35-14d1-4709-ebcb13d0a28f.jpeg)

設定ファイルを保存して接続し直すと先程まで出てこなかったWomen on Webのホームページが表示されました。
![IMG_20241030_192228.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3896055/35f50718-1cb7-4694-d260-694820a352fc.jpeg)

この後韓国がブロックしている北朝鮮のニュースサイトにアクセスしてみましたが、こちらは通信が遮断(Connection Refused)されてしまいました。SNIブロッキングは既に対策されているようです。

### **検証結果：MTUをいじる回避方法は「DNSブロッキング」において有効だったが、元の対策であったSNIブロッキングにおいては無効である可能性がある**

# 結びに

DNSブロッキングに関する議論は、インターネットの自由やプライバシー保護の観点から今後も続いていくでしょう。
日本でも2011年から既に児童ポルノ掲載サイトへのDNSブロッキングが実施されており、2018年に議論になったDNSブロッキングはその対象を拡大させるだけという建て付けでした。しかし、多くの議論の末、推進派が折れるという形で見送られました。その線引きは常に徹底した議論の上で出す必要があります。