GitHubは2019年にOFAC(米国の制裁を監視する規制機関)の要求により、イランのユーザーへのアクセスをブロックしました。それ以来、イランの開発者は同じ状況に直面しています:リポジトリは利用できず、プッシュやプルが通らず、アカウントはいつでも凍結される可能性があります。それでも作業は止まらず、チームはコミットし、デプロイし、オープンソースプロジェクトに参加し続けています。本記事では、2024年から2025年にかけて実際に機能するもの、GitHubに適したプロキシ、そして速度を損なうことなく正しく設定する方法を解説します。
なぜGitHubはイランをブロックするのか:制裁と技術的実装
2019年7月、GitHubはイラン、クリミア、キューバ、シリア、北朝鮮のユーザーへのアクセスを制限し始めました。その理由は、米国の制裁法に基づくOFAC(外国資産管理局)の要求です。2018年からGitHubを所有しているMicrosoftは、米国企業としてこれらの制限を遵守する必要があります。
技術的には、ブロックは複数のレベルで機能しています:
- IPによるジオブロック: GitHubはIPアドレスから国を特定し、イランのアドレス範囲(イランのプロバイダーに属するASブロック)からのリクエストをブロックします。
- アカウントの凍結: イランのIPから登録されたアカウントや、プロフィールにイランを記載したアカウントは、読み取り専用モードに移行するか、完全に凍結される可能性があります。
- プライベートリポジトリのブロック: パブリックリポジトリは部分的に読み取り可能ですが、プライベートリポジトリは完全に閉鎖されています。
- GitHub ActionsおよびPackagesの制限: CI/CDパイプラインやパッケージレジストリも、ブロックされた地域からは利用できません。
それにもかかわらず、GitHub自体はこれらの制限に反対し、規制当局に緩和を働きかけていると繰り返し述べています。2019年、同社はイランの開発者に対してパブリックリポジトリへの無料アクセスを提供する許可を得ましたが、完全なブロック解除は実現していません。
⚠️ 重要な理解: ブロックは制裁対象の組織や政府機関に対して行われており、個々の開発者に対してではありません。ほとんどのイランのプログラマーは国際チームで働いており、個人的には制裁の対象にはなりませんが、技術的にはシステムがIPで全員をブロックします。
そのため、問題解決の鍵はIPアドレスの変更にあります。これは、技術的にジオブロックを回避する唯一の方法です。どのツールが適しているかを見ていきましょう。
実際に機能するもの:プロキシ、VPN、回避策
イランの開発者は複数のアプローチを使用しています。それぞれに利点と欠点があり、マーケティングなしで正直に解説します。
1. レジデンシャルプロキシ
レジデンシャルプロキシは、ドイツ、オランダ、アメリカ、トルコなどの他国の家庭ユーザーの実際のIPアドレスを使用します。GitHubから見ると、そのリクエストは許可された国の一般ユーザーからのものとして見えます。これは、継続的な作業に最も信頼性の高いオプションです:プロキシ自体がブロックされるリスクが最小限で、高い安定性があります。
欠点は、データセンタープロキシよりも速度が遅く、コストが高いことです。Git操作(プッシュ/プル/クローン)には通常それほど重要ではありません:リポジトリはメガバイト単位であり、ギガバイト単位ではありません。
2. データセンタープロキシ
データセンターのプロキシは、より高速で安価です。大きなリポジトリのクローン作成、アーティファクトのダウンロード、GitHub APIとの作業に適しています。ただし、データセンターのIPはプロキシとして識別されやすく、一部の範囲はすでにGitHubのブラックリストに登録されています。ヨーロッパのロケーション(DE、NL、FR)のデータセンタープロキシを使用することをお勧めします。これらはフィルターにかかることが少ないです。
3. VPN
VPNは、イランのユーザーの間で最も人気のあるツールです。オペレーティングシステム全体で機能し、各アプリケーションで個別に設定する必要がありません。欠点:多くのVPNサーバーはすでにGitHubによってブロックされており(特に人気のある無料のもの)、速度は不安定で、接続が切れた場合、トラフィックがイランのIPを通じて漏れる可能性があります。
4. Tor
Torは技術的には機能しますが、GitHubはTorの出口ノードを積極的にブロックしています。速度は非常に遅く、小さなリポジトリのクローン作成にも数時間かかることがあります。ウェブインターフェースへの一時的なアクセスには適していますが、定期的な開発には不向きです。
5. 他国のサーバーを介したSSHトンネル
ヨーロッパまたはアメリカにVPSがある場合、SSHトンネルを介してSOCKS5プロキシを立ち上げることができます。これは技術的に信頼性が高く、無料ですが(サーバーがある場合)、Linuxの基本的な知識が必要です。設定の詳細はGitに関するセクションで説明します。
ツールに関する結論:
GitHubでの日常的な作業には、レジデンシャルまたはデータセンタープロキシとGitの設定を組み合わせるのが最適です。これにより、システム全体のトラフィックに影響を与えることなく安定性が得られます。
GitHubに適したプロキシの種類:比較表
自分の状況に合った選択を簡単にするために、すべてのオプションを1つの表で見ていきましょう:
| タイプ | 速度 | 信頼性 | GitHubのブロックリスク | 最適な用途 |
|---|---|---|---|---|
| レジデンシャルプロキシ | 中程度 | 高い | 最小限 | 日常作業、プッシュ/プル、ウェブインターフェース |
| データセンタープロキシ | 高い | 中程度 | 中程度 | 大きなリポジトリのクローン、GitHub API、CI/CD |
| モバイルプロキシ | 中程度 | 非常に高い | 非常に低い | アカウントがすでに疑われている場合の作業 |
| VPN(有料) | 中程度 | 中程度 | 中程度 | インターネット全般 + GitHub |
| SSHトンネル(自分のVPS) | 高い | 高い | 低い | ヨーロッパ/アメリカにVPSを持つ開発者 |
| Tor | 非常に低い | 低い | 高い | Gitでの作業にはお勧めしません |
すでにアカウントが警告を受けたり、一時的に凍結された場合は、モバイルプロキシを検討する価値があります。これらは携帯電話のプロバイダーのIPを使用しており、GitHubがほとんどブロックすることはありません。なぜなら、1つのモバイルIPの背後には何千人ものユーザーがいるからです。
Git、ターミナル、IDEでのプロキシ設定方法:ステップバイステップガイド
Gitでプロキシを設定する主な利点は、どのトラフィックがプロキシを通るかを制御できることです。ローカルリクエストは直接のままで、GitHubトラフィックのみが外部IPを介してルーティングされます。
GitでのHTTPSプロキシの設定(グローバル)
ターミナルを開き、次のコマンドを実行します。HOSTとPORTをプロキシの情報に置き換えてください:
# HTTP/HTTPSプロキシの場合: git config --global http.proxy http://HOST:PORT # SOCKS5プロキシの場合(推奨): git config --global http.proxy socks5://HOST:PORT # 認証付きプロキシの場合(ユーザー名 + パスワード): git config --global http.proxy socks5://USERNAME:PASSWORD@HOST:PORT # github.comのみに適用(他のリポジトリには影響を与えない): git config --global http.https://github.com.proxy socks5://HOST:PORT
最後のコマンドは最も便利です:これはgithub.comへのリクエストにのみプロキシを適用し、GitLab、Bitbucket、または社内リポジトリには影響を与えません。
設定の確認
# Gitの現在のプロキシ設定を表示: git config --global --list | grep proxy # プロキシを介してGitHubへの接続をテスト: git ls-remote https://github.com/github/gitignore HEAD
ls-remoteコマンドがコミットハッシュを返した場合、プロキシは機能しています。Connection refusedまたはCould not resolve hostというエラーが表示された場合は、HOSTとPORTが正しいか確認してください。
プロキシの無効化(不要な場合)
# グローバルプロキシを削除: git config --global --unset http.proxy # github.comのプロキシを削除: git config --global --unset http.https://github.com.proxy
VS Codeでの設定
VS Codeは、組み込みターミナルと拡張機能のためにシステムのプロキシ設定を使用します。ターミナルを介してGitでプロキシを設定した場合、VS Codeの組み込みターミナルはこれらの設定を自動的に取得します。エディタ内でHTTPプロキシを設定するには、次の手順を実行します:
File → Preferences → Settings → "proxy"を検索 → プロキシのアドレスをhttp.proxyフィールドに指定します。
SSHトンネルを介した設定(自分のVPSがある場合)
ヨーロッパまたはアメリカにVPSがある場合、次のコマンドでローカルSOCKS5プロキシを立ち上げることができます:
# SSHを介してローカルポート1080でSOCKS5プロキシを作成: ssh -D 1080 -C -N user@your-vps-ip # 次に、Gitでこのローカルプロキシを指定: git config --global http.proxy socks5://127.0.0.1:1080
フラグ-D 1080はポート1080でSOCKS5プロキシを開き、-Cは圧縮を有効にし、-NはSSHにコマンドを実行しないよう指示します—トンネルを維持するだけです。
SSH vs HTTPS:GitHubのプロキシを通じてどちらがより良く機能するか
これは最もよくある質問の1つです:プロキシを介してGitHubで作業するためにどのプロトコルを使用すべきか—SSH(ポート22または443)かHTTPS(ポート443)か?
プロキシを介したHTTPS
HTTPS接続は簡単にプロキシ化できます—上記で説明したgit config http.proxyコマンドはHTTPS用です。欠点:各プッシュ/プル時にGitはログインとパスワード(またはPersonal Access Token)を要求します。解決策は、トークンをcredential storeに保存することです:
# システムのkeychainにトークンを保存するように設定: git config --global credential.helper store # 最初の成功したプッシュの後、トークンは自動的に保存されます
プロキシを介したSSH(ProxyCommand)
SSH接続は、Gitの標準のhttp.proxyを介してプロキシ化することはできません—~/.ssh/configでの別の設定が必要です。次のブロックを追加します:
Host github.com
HostName ssh.github.com
User git
Port 443
ProxyCommand nc -X 5 -x HOST:PORT %h %p
ここでssh.github.com:443は、ポート443(HTTPS)で動作するGitHubの特別なSSHエンドポイントで、ポート22でのブロックを回避するのに役立ちます。nc -X 5はSOCKS5プロキシを使用します。
SSH接続を確認するには、次のコマンドを使用します:
ssh -T [email protected] # 期待される応答:Hi username! You've successfully authenticated...
推奨事項:
ほとんどの開発者にとって、HTTPS + SOCKS5プロキシをGit configで設定する方が簡単です。ProxyCommandを介したSSHは、netcatユーティリティのインストールと少し複雑な設定が必要ですが、トークンを入力せずにSSHキーを使って作業する便利さを提供します。
アカウントのリスクとその最小化方法
GitHubでのプロキシの使用は、技術的な課題だけでなく、アカウントのセキュリティの問題でもあります。設定を誤ると、アカウントに注目が集まったり、新たな問題を引き起こす可能性があります。
リスク1:IPの頻繁な変更
回転プロキシを使用している場合(IPがリクエストごとにまたは数分ごとに変更される)、GitHubは疑わしい活動を検出する可能性があります:1つのアカウントが短時間で数十の異なるIPからアクセスしています。これはセキュリティチェックのトリガーとなり、潜在的なブロックを引き起こす可能性があります。
解決策: 固定IPの静的(スティッキー)プロキシまたは長時間のセッションを持つセッショナルプロキシを使用してください(24時間以上)。GitHubには回転が必要なく、安定性が必要です。
リスク2:ブロックされたデータセンターのIPの使用
一部の人気ホスティングのIP範囲(AWS、DigitalOcean、Vultr)はすでにブラックリストに登録されているか、注目を集めています。GitHubはそれらを直接ブロックすることはありませんが、追加の認証を要求する可能性があります。
解決策: ヨーロッパのデータセンター(DE、NL、CH)を選択してください—これらはブラックリストに載ることが少ないです。常用する前に、ipinfo.ioやscamalytics.comでIPを確認してください。
リスク3:プロフィールにイランのデータ
GitHubのプロフィールにイランが記載されている場合(Locationフィールド)、アカウントはIPに関係なく制限される可能性が高くなります。これは出自を隠す必要があるということではありませんが、追加の要因であることを理解しておくべきです。
リスク4:組織リポジトリとの作業
あなたの組織がイランの会社としてGitHubに登録されているか、イランの管理者がいる場合、制限は厳しくなる可能性があります—組織全体が凍結されることもあります。この場合、プロキシは個人アカウントに役立ちますが、組織レベルでの問題を解決することはできません。
アカウントがすでに凍結されている場合の対処法
GitHubは、個人開発者のための公式なアカウント凍結解除プロセスを提供しています。状況を説明して[email protected]に連絡してください。メールには次のことを記載してください:
- あなたが制裁対象の組織に関与していない個人開発者であること
- あなたの活動がオープンソースまたは商業ソフトウェア開発であること
- あなたの公開リポジトリと活動のリンク
コミュニティの経験によれば、GitHubはほとんどの個人開発者のアクセスを1〜4週間以内に回復します。
チェックリスト:GitHub用プロキシ設定の迅速な確認
作業を開始する前に、すべてが正しく設定されていることを確認するためにこのチェックリストを使用してください:
✅ 設定前
- プロキシの情報を取得:HOST、PORT、タイプ(HTTP/SOCKS5)、ログイン/パスワード
- プロキシのIPを
ipinfo.ioで確認—国はイランでないこと - IPがブラックリストに載っていないことを確認:
scamalytics.comで確認 - 常用するために静的IP(回転しない)を選択
✅ Gitの設定
git config --global http.proxyコマンドが実行されている- プロキシがgithub.comのみに適用されている(グローバルではない)—特定の設定が必要な場合
- トークンを保存するためにcredential.helperが設定されている(HTTPS用)
- SSH用:
~/.ssh/configにProxyCommandのブロックが追加されている
✅ 動作確認
git ls-remote https://github.com/github/gitignore HEADコマンドがハッシュを返すssh -T [email protected]コマンドが挨拶を返す(SSH用)- テストリポジトリへのプッシュが成功する
403 ForbiddenやRepository access blockedのエラーがない
✅ アカウントのセキュリティ
- 静的IP(回転しない)を使用している
- GitHubアカウントに二要素認証が有効になっている
- Personal Access Tokenが最小限の権限で設定されている(repoのみ)
- トークンに有効期限が設定されている(無期限ではない)
結論
GitHubの制裁制限はイランの開発者にとって厄介な現実ですが、行き止まりではありません。技術的な解決策は存在し、機能しています:海外IPを持つプロキシを正しいGit設定と組み合わせることで、完全な開発作業が可能になります—コミットをプッシュし、リポジトリをクローンし、GitHub Actionsを使用し、オープンソースプロジェクトに参加できます。
記事からの重要なポイント:
- 日常的な作業のためには、静的なレジデンシャルまたはデータセンタープロキシをヨーロッパから選択してください—安定したIPで回転しません。
- Git configでプロキシを設定し、システムレベルではなく、トラフィック全体に影響を与えないようにします。
- アカウントがすでに疑われている場合は、モバイルIPを使用してください。これらはほとんどブロックされることはありません。
- アカウントが凍結されている場合は、[email protected]に連絡してください。GitHubは個人開発者のアクセスを回復します。
- ポート443を介したSSHを使用(ssh.github.com)—これにより、プロバイダーのレベルでのほとんどのブロックを回避できます。
GitHubでの継続的な作業のための信頼できる解決策を探している場合は、レジデンシャルプロキシを検討することをお勧めします—これらは許可された国の家庭ユーザーの実際のIPを使用し、システム保護の注目を最小限に抑え、Git操作のための安定した接続を提供します。高負荷のタスク(大きなリポジトリのクローン作成、CI/CDパイプライン)には、データセンタープロキシが良い代替手段です—これらはデータ量が多い作業においてより速く、経済的です。
```