2 ポイント 投稿者 GN⁺ 2025-11-29 | 1件のコメント | WhatsAppで共有
  • Imgurの英国ユーザー向けブロックにより、Reddit、フォーラム、ドキュメントなど各所の画像リンクがすべて「unavailable」と表示される問題が発生
  • 個別VPNではなくネットワーク全体レベルの自動回避構造を構築し、どのデバイスでもImgurにアクセスできるように構成
  • Pi-hole、Traefik、Gluetun、Nginx、NixOSを組み合わせ、DNSブロックを回避しつつトラフィックをVPN経由で転送する構造を設計
  • TLSパススルーとDockerネットワーク共有を使って暗号化トラフィックをそのまま伝送し、速度低下を最小化
  • 結果として、全デバイスで個別設定なしにImgur画像へのアクセスが可能となり、速度ロスを抑えた透過的なネットワーク制限解除構造を実現

Imgurブロックと不便な事例

  • Imgurが英国ユーザーのアクセスを制限したことで、Reddit・フォーラム・ドキュメントなど様々なWebページの画像リンクが表示されない問題が発生した
    • Minecraftシェーダーのプレビュー画像がすべて消え、どのシェーダーかを確認できない状態になった
    • 古い投稿やREADMEファイルなどでもImgurリンクが残っているため、アクセス不能な状態が継続していた

VPNではなくネットワーク単位の解決を選択

  • 一般的な対処はVPN使用だが、2.5Gbpsの高速インターネット環境で全トラフィックをVPN経由で回避すると速度低下が発生する
  • 各デバイスごとにVPNをインストールして接続する必要があり、運用の複雑さが生じる
  • すべてのデバイスで自動的に動作するクライアント設定不要のネットワーク単位ソリューションを目指した

ネットワークレベルの構成設計

  • 既存のホームラボ環境でTraefik(リバースプロキシ)Pi-hole(DNS)、**NixOS(宣言的設定)**を既に使用中
  • DNS段階でi.imgur.comリクエストを横取りし、**VPN接続コンテナ(Gluetun)**へ転送
    • Pi-holeがTraefikのIPを返す
    • TraefikがSNIホスト名を確認してGluetunにルーティング
    • GluetunがVPNを通してリクエストを送信
    • Gluetun内のNginxが実際のImgurサーバーへプロキシ
    • 画像をトンネル経由で再度返す

NginxとGluetunの構成

  • GluetunはVPN接続のみを提供するため、VPNネットワーク内部でプロキシとして動作するNginxが必要
  • NginxはTCPストリームモードに設定され、SNIヘッダーを読み取ってi.imgur.com:443へトラフィックを転送
    • TLSハンドシェイクはエンドツーエンドで実施され、Nginxは復号されたデータを閲覧しない
  • Docker Composeで**2つのコンテナ(Gluetun、Nginx)**を実行
    • network_mode: "service:gluetun"設定により、NginxがGluetunのネットワークスタックを共有
    • すべてのNginxトラフィックが自動的にVPNトンネルを通過

TraefikおよびNixOSの統合

  • TraefikはTCPルーティングとTLSパススルーを用いてi.imgur.comリクエストをGluetunへ送る
    • TLSを終了させず、SNIヘッダーのみを検査する
  • NixOSではsystemdサービスとしてDocker Composeスタックを実行
    • Agenixを使ってVPN認証情報を暗号化保存
    • ドットファイルリポジトリ全体を公開で保ちながら、秘密情報を保護

結果とパフォーマンス

  • ネットワーク内の全デバイス(スマートフォン、ノートパソコン、ゲスト機器含む)が個別設定なしでImgur画像へアクセス可能
  • Pi-holeがDNSを傍受し、Traefikがルーティングし、GluetunがVPNトンネリングを実行
  • 画像読み込みの遅延はほぼなく、ImgurトラフィックのみがVPNを経由して一般トラフィック速度を維持
  • 保守が簡単で、ホームラボ環境での自動化された地域制限解除構造を完成
  • MinecraftシェーダーなどImgurベースのコンテンツを再び正常に確認可能

1件のコメント

 
GN⁺ 2025-11-29
Hacker Newsの意見
  • 自分のネットワークでは、ルーター1台だけがVPNを認識するように設定している
    Linuxを入れた安価なファンレスボックスに複数ポートを持たせ、systemd-networkdでWireGuardインターフェースを一度だけ設定してある
    おかげで特定のトラフィックだけをVPN経由でルーティングしたり、VPN専用のSSID/VLANを別に用意したりできる
    ただしドメインベースのルーティングは難しいことがあるので、必要ならローカルDNSオーバーライドが可能なプロキシをルーターに追加しようと思っている
    • 別ブラウザーを立ち上げなくても、FoxyProxy拡張でURLパターンごとにプロキシを指定すれば簡単に解決できる
    • 自分はRPi上にx-ray/singboxベースの中央VPNスプリッターを置き、そこにTailscaleをつないでどこからでもアクセスできるようにしている
      ルールベースの地理的分割ルーティングにも対応していて便利だ
    • そのファンレスLinuxボックスの製品名が気になる
  • タイトルの「Geo-Unblocked」を見て、英国以外のIPブロックを直接構成する話かと思ったが、単に一部のトラフィックだけをVPNに流す話だった
    • 自分でISPの役割をやれば、好きな場所のどこにでもいられる
      参考までに関連する記事はこのブログにある
    • ただ、WANアドレスを変えるのはネットワーク内のIPスキーマを変えるのに近いので、実際には動かなさそうだ
  • 「たまにImgurの画像を見るためにここまでやるのか?」とも思うが、最近資料を調べていてImgur依存がかなり高いことに気づいた
    スクリーンショットが見えなくて不便だったので、この記事が最後の後押しになりそうだ
    • 今はやりすぎに感じるかもしれないが、政府がますます多くのコンテンツへのアクセスを制限しようとしているので、前もって備えるのは賢明だと思う
    • Imgurは思った以上に多くの場所で使われている。たとえばCore Devices(Pebble後継チーム)のWebサイトの画像もImgurにある
      こうしたブロックは簡単に回避できるが、もしImgurが消えたら多くのサイトが壊れるだろう
    • 検閲はImgurで止まらないはずだ
      人々が検閲を回避してもトラフィック損失が大きくないなら、海外サーバーは権威主義的な規制に屈しなくてもよい、という点が重要だ
      EUも似た方向に進んでいるようなので、検閲を拒否できるツールが広く普及すべきだ
    • 自分も回避は思ったより難しかったが、Veepn無料版をシンガポールに設定したら遅いながらもある程度は動いた
  • こういう方法は、NetflixやSpotifyの「同一世帯」制限を回避するのにも使えそうだ
    Raspberry PiやミニPCにPiHoleと一緒に設定しておけば、家族の家のトラフィックを自分のIPへトンネリングできる
  • UniFiでも**ポリシーベースルーティング(PBR)**で簡単に実装できる
    モバイルアプリでWireGuard設定ファイルを追加し、ポリシーエンジンで特定ドメインだけVPNインターフェースへルーティングするよう指定すればよい
    • 欠点は、IPv6が有効だとVPNをバイパスしてしまうことだ
      自分はIPv6レンジをブロックする長いファイアウォールルールを作って一時的に対処したが、Cloudflareベースのサイトではブロックされた
      UniFiがIPv6 WireGuardに対応してほしい
  • Imgurの英国向け地域ブロックはCookieで持続するため、少しVPNを有効にするだけでは解決しない
    Redditはさらにひどく、NSFW投稿をしたことがあるユーザーのプロフィールすら見られない
  • 特定のドメインだけをVPNに送り、それ以外は通常トラフィックのままにする方法があるのか気になっていた
    そうすれば毎回VPNをオン・オフする手間なく自動で処理できる
    たとえば年齢認証が必要なSNS国ごとにブロックされるアプリ(Spotifyなど)ニュースサイトの検閲のような場面で役立つはずだ
    • それはドメインベースのスプリットトンネリングと呼ばれる
      一般にはHTTP/Sリクエストにだけ適用されるが、ZScalerのようなベンダーは他のプロトコルにも拡張している
      TailscaleではApp Connector機能がその役割を果たす
    • 実質的には、その記事でもすでにそうした構成を実装している
  • 自分も同様にOpenWRTルーターのPBR機能で設定した
    15分ほどで特定ドメインだけをVPNに送るよう構成でき、とてもうまく動いている
  • 自分はこうした問題をプロキシPACファイルで解決することが多い
    機内Wi-FiのようにVPNがブロックされる環境でもSSHは許可されるので、動的ポートフォワーディングとPACファイルを組み合わせて、機内エンターテインメントやトラッキングサイトは直接接続するように設定した
    かなりうまく動く