이란 개발자는 정기적으로 엄격한 제한에 직면합니다: GitHub는 계정을 차단하고, npm 패키지는 설치되지 않으며, PyPI는 연결 오류를 반환합니다. 이 모든 것은 개발 인프라에서 целые 국가를 차단하는 제재의 결과입니다. 이란에서 작업하거나 이란 전문가를 고용하는 경우, 이 기사는 물과 이론 없이 구체적인 해결책을 제공합니다.
무엇이 차단되고 왜 차단되는가
미국의 이란에 대한 제재는 금융 거래에만 국한되지 않고 기술 서비스에도 영향을 미칩니다. 미국 관할권에 속하는 회사들(사실상 현대 개발 스택의 대부분)은 제재 국가의 사용자에 대한 접근을 제한해야 합니다. 그 결과 이란 개발자는 다음과 같은 문제에 직면하게 됩니다:
- GitHub — 계정을 차단하고, 리포지토리가 접근 불가능해지며, Actions가 실행되지 않고, Copilot이 작동하지 않습니다.
- npm (npmjs.com) —
npm install을 통해 패키지를 설치하려고 할 때 연결 오류 또는 명시적인 접근 거부가 발생합니다. - PyPI (pypi.org) —
pip install이 멈추거나 403 오류를 반환합니다. - Docker Hub — 이미지 풀링이 차단됩니다.
- Cloudflare, AWS, Azure, Google Cloud — 일부 서비스가 접근 불가능하거나 불안정하게 작동합니다.
- Stack Overflow, JetBrains, VS Code Marketplace — IP 수준에서 주기적인 차단이 발생합니다.
차단은 IP 주소 수준에서 발생합니다: 이란 제공업체(AS 번호 IRANCELL, Shatel, MCI 등)의 IP가 할당된 경우 요청은 계정 확인 전에 자동으로 거부됩니다. 따라서 다른 국가의 IP를 가진 VPN이나 프록시는 우회 방법이 아니라 개발 인프라에 접근하기 위한 유일한 작동 방법입니다.
중요한 점:
프록시와 VPN은 서로 다른 수준에서 문제를 해결합니다. VPN은 시스템의 모든 트래픽을 리다이렉트합니다 — 브라우저에는 편리하지만, git, npm, pip와 같은 명령줄 도구에는 세부 설정이 필요합니다. 프록시는 특정 도구에 대해서만 제재를 우회하도록 설정할 수 있어 나머지 트래픽에 영향을 주지 않습니다.
개발에 적합한 프록시 유형
개발자의 작업 — 리포지토리 작업, 패키지 설치, CI/CD — 에는 연결의 안정성, 속도 및 IP의 청결성이 중요합니다. 세 가지 주요 프록시 유형과 특정 시나리오에 어떻게 적합한지 살펴보겠습니다.
주거용 프록시
주거용 프록시는 다양한 국가의 실제 가정 사용자 IP 주소를 사용합니다. GitHub에 있어 이는 매우 중요합니다: 플랫폼은 IP의 지리적 위치뿐만 아니라 그 평판도 분석합니다. 데이터 센터의 IP는 의심을 불러일으키지만, 미국 또는 유럽의 가정용 IP는 일반 사용자로 인식됩니다. 주거용 프록시는 GitHub 계정으로 지속적으로 작업하는 데 가장 신뢰할 수 있는 옵션입니다.
데이터 센터 프록시
데이터 센터 프록시는 빠르고 저렴합니다. npm 및 pip를 통해 패키지를 설치하는 데 적합합니다: PyPI 및 npmjs.com은 GitHub만큼 IP의 평판을 엄격하게 검토하지 않습니다. CI/CD 파이프라인에서 단순히 의존성을 다운로드해야 하는 경우, 데이터 센터 프록시가 작업을 수행하며 비용도 더 저렴합니다.
모바일 프록시
모바일 프록시는 모바일 통신사의 IP(4G/5G)를 사용합니다. 이는 사기 방지 시스템 관점에서 가장 "깨끗한" 유형의 IP입니다: 하나의 모바일 IP 뒤에는 수천 명의 실제 사용자가 있기 때문에 이를 차단하는 것은 경제적이지 않습니다. 모바일 프록시는 GitHub 계정 차단 문제를 겪었고 재차 차단 위험을 최소화하고자 하는 경우에 적합합니다.
GitHub용 프록시 설정
GitHub는 리포지토리 작업을 위해 두 가지 프로토콜을 사용합니다: HTTPS 및 SSH. 각각의 설정 방법이 다릅니다. 두 가지 옵션을 살펴보겠습니다.
HTTPS를 통한 git 프록시
이는 GitHub와 작업하는 가장 일반적인 방법입니다. 설정은 git 구성에서 수행됩니다. 터미널을 열고 다음을 실행하십시오:
# git용 HTTP 프록시 설정 (host, port, user, password를 귀하의 데이터로 교체) git config --global http.proxy http://user:password@proxy-host:port git config --global https.proxy http://user:password@proxy-host:port # 설정 확인 git config --global --get http.proxy # 인증 없는 프록시의 경우: git config --global http.proxy http://proxy-host:port
이 설정 후 모든 git clone, git push, git pull 명령은 프록스를 통해 진행됩니다. GitHub에 대해서만 프록시를 설정하고 싶다면:
# github.com에 대한 프록시만 설정 git config --global http.https://github.com.proxy http://user:password@proxy-host:port
SSH를 통한 git 프록시
GitHub와의 SSH 연결은 포트 22(또는 대안으로 443)를 통해 작동합니다. SSH 트래픽을 프록시하기 위해 nc (netcat) 또는 connect 유틸리티를 사용합니다. ~/.ssh/config 파일을 수정하십시오:
Host github.com HostName github.com User git ProxyCommand nc -X connect -x proxy-host:port %h %p # 또는 SOCKS5의 경우: # ProxyCommand nc -X 5 -x proxy-host:port %h %p
Windows를 사용하는 경우 nc 대신 connect.exe를 사용하거나 PuTTY를 통해 ProxyCommand를 설정할 수 있습니다. macOS 및 Linux에서는 netcat이 일반적으로 이미 설치되어 있습니다.
환경 변수 설정
대안적인 방법은 환경 변수를 사용하는 것입니다. 이는 git뿐만 아니라 많은 다른 명령줄 도구에서도 작동합니다:
# Linux / macOS — ~/.bashrc 또는 ~/.zshrc에 추가 export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" export NO_PROXY="localhost,127.0.0.1" # Windows (PowerShell) $env:HTTP_PROXY = "http://user:password@proxy-host:port" $env:HTTPS_PROXY = "http://user:password@proxy-host:port"
npm 및 Node.js용 프록시 설정
npm은 프록시를 기본적으로 지원합니다. 설정은 단 한 줄의 명령으로 이루어지며, 모든 패키지 설치 작업에 즉시 적용됩니다. 이는 JavaScript/TypeScript 스택에서 작업하는 이란 개발자에게 특히 중요합니다: React, Vue, Angular, Next.js — 모두 npmjs.com을 적극적으로 사용합니다.
# npm용 프록시 설정 npm config set proxy http://user:password@proxy-host:port npm config set https-proxy http://user:password@proxy-host:port # 현재 구성 확인 npm config get proxy npm config get https-proxy # 프록시 비활성화 (직접 연결로 되돌리려면) npm config delete proxy npm config delete https-proxy
설정은 ~/.npmrc 파일에 저장됩니다. 이 파일을 직접 수정할 수도 있습니다:
# ~/.npmrc 내용 proxy=http://user:password@proxy-host:port https-proxy=http://user:password@proxy-host:port strict-ssl=false
Yarn 및 pnpm
Yarn 또는 pnpm을 사용하는 경우, 설정은 유사합니다:
# Yarn v1 yarn config set proxy http://user:password@proxy-host:port yarn config set https-proxy http://user:password@proxy-host:port # Yarn v2/v3 (Berry) — .yarnrc.yml 수정 # httpProxy: "http://user:password@proxy-host:port" # httpsProxy: "http://user:password@proxy-host:port" # pnpm pnpm config set proxy http://user:password@proxy-host:port pnpm config set https-proxy http://user:password@proxy-host:port
CI/CD에 대한 팁:
GitHub Actions, GitLab CI 또는 다른 시스템을 사용하는 경우, HTTP_PROXY 및 HTTPS_PROXY 변수를 프로젝트의 비밀에 추가하십시오. 이렇게 하면 파이프라인의 모든 단계가 자동으로 프록스를 사용할 수 있습니다.
PyPI 및 pip용 프록시 설정
이란의 Python 개발자는 PyPI 차단에 특히 자주 직면합니다: pip는 패키지를 다운로드하기 위해 HTTPS를 사용하며, IP가 차단된 경우 설치가 멈추거나 오류를 발생시킵니다. pip용 프록시를 설정하는 방법은 여러 가지가 있습니다.
방법 1: 설치 시 --proxy 플래그 사용
# 프록시를 통한 일회성 설치 pip install requests --proxy http://user:password@proxy-host:port # pip3의 경우 pip3 install django --proxy http://user:password@proxy-host:port
방법 2: pip.conf 구성 파일
매번 명령어를 입력할 필요 없이 프록시를 설정하려면 pip 구성 파일에 설정을 추가하십시오:
# Linux/macOS: ~/.config/pip/pip.conf
# Windows: %APPDATA%\pip\pip.ini
[global]
proxy = http://user:password@proxy-host:port
trusted-host = pypi.org
pypi.python.org
files.pythonhosted.org
방법 3: 환경 변수 사용
# pip는 표준 환경 변수를 자동으로 인식합니다 export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # 이후 일반 pip install은 프록스를 통해 작동합니다 pip install numpy pandas scikit-learn
Poetry 및 Conda
의존성을 관리하기 위해 Poetry를 사용하는 경우, 프록시 설정은 환경 변수를 통해 수행됩니다 — Poetry는 HTTP_PROXY 및 HTTPS_PROXY를 자동으로 상속합니다. Conda의 경우 ~/.condarc 파일에 추가하십시오:
# ~/.condarc proxy_servers: http: http://user:password@proxy-host:port https: http://user:password@proxy-host:port
기타 개발 도구: Docker, Composer, Maven
차단은 GitHub, npm 및 PyPI에만 국한되지 않습니다. 이란에서 접근할 수 없는 다른 인기 있는 개발 도구에 대한 프록시 설정을 살펴보겠습니다.
Docker
Docker Hub는 이란 IP에 대해 차단됩니다. docker pull을 수행하려면 Docker daemon의 구성에서 프록시를 설정하십시오:
# Linux: /etc/docker/daemon.json을 생성하거나 수정
{
"proxies": {
"http-proxy": "http://user:password@proxy-host:port",
"https-proxy": "http://user:password@proxy-host:port",
"no-proxy": "localhost,127.0.0.1"
}
}
# Docker 재시작
sudo systemctl restart docker
macOS 및 Windows에서는 Docker Desktop의 프록시 설정이 그래픽 인터페이스를 통해 수행됩니다: Settings → Resources → Proxies.
Composer (PHP)
# Composer는 환경 변수를 사용합니다 export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # 또는 Composer 구성으로 composer config --global http-basic.repo.packagist.org user password
Maven (Java)
<!-- ~/.m2/settings.xml -->
<settings>
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy-host</host>
<port>port</port>
<username>user</username>
<password>password</password>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
</settings>
Go 모듈
# Go는 모듈을 다운로드하기 위해 GOPROXY를 사용합니다 # 미러를 지정하거나 시스템 프록시를 설정할 수 있습니다 export GOPROXY="https://goproxy.io,direct" export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port"
보안: GitHub 계정을 잃지 않는 방법
프록시 사용은 접근 문제를 해결하지만 새로운 문제를 만듭니다: 여러 IP 주소에서 GitHub에 로그인하는 경우(오늘은 이란에서, 내일은 미국 프록시를 통해, 모레는 유럽 프록시를 통해), GitHub의 보안 시스템은 계정을 의심스러운 것으로 차단할 수 있습니다. 이를 피하는 방법은 다음과 같습니다.
IP 지속성 규칙
GitHub 작업을 위해 동일한 프록시 서버를 사용하십시오. 프록시 제공업체가 매번 연결할 때마다 IP를 변경하는 경우(회전 프록시), 이는 의심을 불러일으킬 수 있습니다. GitHub에는 정적 프록시가 가장 적합합니다 — 하나의 IP가 장기간 귀하에게 고정됩니다.
- 정적 주거용 프록시 — 미국 또는 유럽의 하나의 가정용 IP가 귀하에게 고정됩니다. GitHub에 대한 최대 신뢰성.
- 회전 프록시 — npm/pip(패키지 다운로드)에 적합하지만 GitHub 계정 로그인에는 적합하지 않습니다.
- 직접 연결과 프록시 연결을 혼합하지 마십시오: 항상 프록시를 통해 또는 절대 사용하지 마십시오.
이중 인증
GitHub에서 2FA를 활성화하십시오 — 이는 누군가 귀하의 자격 증명을 가로채더라도 계정을 보호합니다. SMS 대신 인증 앱(구글 인증기, Authy)을 사용하십시오 — SMS는 이란에서 사용할 수 없거나 신뢰할 수 없을 수 있습니다.
비밀번호 대신 SSH 키 사용
GitHub와 작업할 때 비밀번호 인증 대신 SSH 키를 설정하십시오. SSH 키는 IP가 아니라 장치에 연결되어 있으므로 SSH 사용 시 IP 변경은 GitHub 보안 시스템에 덜 치명적입니다.
개발자를 위한 프록시 유형 비교
이란 개발자의 특정 작업에 가장 적합한 프록시 유형을 표 형식으로 정리해 보겠습니다.
| 작업 | 주거용 | 데이터 센터 | 모바일 |
|---|---|---|---|
| GitHub (계정, push/pull) | ✅ 훌륭함 | ⚠️ 차단 위험 | ✅ 훌륭함 |
| npm install (패키지 설치) | ✅ 좋음 | ✅ 훌륭함 | ✅ 좋음 |
| pip install (PyPI) | ✅ 좋음 | ✅ 훌륭함 | ✅ 좋음 |
| Docker Hub (이미지 풀링) | ✅ 좋음 | ✅ 좋음 | ⚠️ 비쌈 |
| CI/CD 파이프라인 (대량 요청) | ⚠️ 비쌈 | ✅ 훌륭함 | ❌ 적합하지 않음 |
| 연결 속도 | 보통 | 높음 | 보통 |
| IP 차단 위험 | 낮음 | 보통 | 매우 낮음 |
| 비용 | 보통 | 낮음 | 높음 |
권장 전략
개발자를 위한 최적의 계획:
- GitHub용 — 미국 또는 독일의 정적 주거용 프록시. 항상 동일한 하나의 IP.
- npm/pip/Docker용 — 좋은 대역폭을 가진 데이터 센터 프록시. 속도가 IP의 평판보다 중요합니다.
- 브라우저 및 웹 서비스용 — 동일한 주거용 프록시 또는 별도의 프록시.
프로토콜: HTTP vs SOCKS5
대부분의 개발 도구(git, npm, pip)는 HTTP/HTTPS 프록시를 지원합니다. SOCKS5는 더 범용적이며 TCP 수준에서 작동하므로 SSH를 포함한 모든 프로토콜에 적합합니다. 프록시 제공업체가 SOCKS5를 지원하는 경우, GitHub에 대한 SSH 연결에 사용하십시오. HTTP 트래픽(npm, pip)의 경우 거의 차이가 없습니다.
결론 및 권장 사항
제재는 이란 개발자에게 실제 장애물을 만들지만, 작업을 불가능하게 하지는 않습니다. 올바르게 설정된 프록시는 GitHub와 원활하게 작업하고, npm 및 pip를 통해 패키지를 설치하며, Docker Hub에서 이미지를 풀링할 수 있게 해줍니다 — 계정을 잃지 않고 지속적인 차단 없이.
기사의 주요 요점:
- GitHub 작업을 위해 정적 주거용 프록시를 사용하십시오 — 미국 또는 유럽의 하나의 고정 IP.
- 패키지 설치(npm, pip, Composer)를 위해 더 저렴한 데이터 센터 프록시가 좋습니다.
- 도구 수준에서 프록시를 설정하십시오 (
git config,npm config,pip.conf), 시스템 수준에서만 설정하지 마십시오. - 하나의 GitHub 계정에 대해 직접 연결과 프록시 연결을 혼합하지 마십시오.
- 최대 보안을 위해 2FA를 활성화하고 SSH 키를 사용하십시오.
GitHub 및 기타 차단된 서비스와의 지속적인 작업을 위한 신뢰할 수 있는 솔루션을 찾고 있다면, 주거용 프록시에 주목하는 것이 좋습니다 — 이는 실제 가정용 IP 주소를 통해 안정적인 접근을 제공하며, GitHub 및 기타 플랫폼의 차단에 거의 걸리지 않습니다.
```