Los desarrolladores iraníes enfrentan regularmente restricciones severas: GitHub bloquea cuentas, los paquetes de npm no se instalan, PyPI devuelve un error de conexión. Todo esto son consecuencias de las sanciones que aíslan a países enteros de la infraestructura básica de desarrollo. Si trabajas desde Irán o contratas a especialistas iraníes, este artículo te proporcionará una solución concreta, sin rodeos ni teoría.
Qué se bloquea y por qué
Las sanciones de EE. UU. contra Irán no solo se aplican a las operaciones financieras, sino que también afectan a los servicios tecnológicos. Las empresas bajo la jurisdicción de EE. UU. (casi toda la pila de desarrollo moderno) están obligadas a restringir el acceso a usuarios de países sancionados. Como resultado, los desarrolladores iraníes enfrentan los siguientes problemas:
- GitHub — bloquea cuentas, los repositorios se vuelven inaccesibles, Actions no se ejecutan, Copilot no funciona.
- npm (npmjs.com) — al intentar instalar paquetes a través de
npm install, aparecen errores de conexión o un rechazo explícito de acceso. - PyPI (pypi.org) —
pip installse queda colgado o devuelve un error 403. - Docker Hub — la descarga de imágenes está bloqueada.
- Cloudflare, AWS, Azure, Google Cloud — parte de los servicios están inaccesibles o funcionan de manera inestable.
- Stack Overflow, JetBrains, VS Code Marketplace — bloqueos periódicos a nivel de IP.
El bloqueo ocurre a nivel de dirección IP: si tu IP pertenece a un proveedor iraní (números AS de IRANCELL, Shatel, MCI y otros), la solicitud se rechaza automáticamente antes de verificar la cuenta. Por eso, un VPN o proxy con IP de otro país no es un truco, sino la única forma efectiva de acceder a la infraestructura de desarrollo.
Es importante entender:
Los proxies y VPN resuelven el problema en diferentes niveles. Un VPN redirige todo el tráfico del sistema, lo que es conveniente para el navegador, pero incómodo para las herramientas de línea de comandos (git, npm, pip), donde se necesita una configuración específica. Un proxy permite configurar la evasión de sanciones solo para una herramienta específica, sin afectar el resto del tráfico.
Qué tipo de proxy es adecuado para el desarrollo
Para las tareas del desarrollador — trabajar con repositorios, instalar paquetes, CI/CD — son importantes la estabilidad de la conexión, la velocidad y la limpieza de la IP. Analicemos tres tipos principales de proxies y cómo se adaptan a escenarios específicos.
Proxies residenciales
Los proxies residenciales utilizan direcciones IP reales de usuarios domésticos de diferentes países. Para GitHub, esto es crítico: la plataforma analiza no solo la geolocalización de la IP, sino también su reputación. Una IP de un centro de datos genera sospechas, mientras que una IP doméstica estadounidense o europea se percibe como un usuario normal. Los proxies residenciales son la opción más confiable para trabajar con cuentas de GitHub de manera constante.
Proxies de centros de datos
Los proxies de centros de datos son rápidos y baratos. Son adecuados para instalar paquetes a través de npm y pip: PyPI y npmjs.com no verifican la reputación de la IP tan estrictamente como GitHub. Si solo necesitas descargar dependencias en un pipeline de CI/CD, un proxy de centro de datos hará el trabajo y será más barato.
Proxies móviles
Los proxies móviles utilizan IP de operadores móviles (4G/5G). Este es el tipo de IP más "limpio" desde el punto de vista de los sistemas antifraude: detrás de una IP móvil hay miles de usuarios reales, por lo que bloquearla no es rentable. Los proxies móviles son relevantes si ya has tenido problemas con el bloqueo de tu cuenta de GitHub y deseas minimizar el riesgo de un bloqueo repetido.
Configuración de proxy para GitHub
GitHub utiliza dos protocolos para trabajar con repositorios: HTTPS y SSH. La configuración del proxy se realiza de manera diferente para cada uno de ellos. Veamos ambas opciones.
Proxy para git por HTTPS
Este es el método más común para trabajar con GitHub. La configuración se realiza a través de la configuración de git. Abre la terminal y ejecuta:
# Configuración de proxy HTTP para git (reemplaza host, port, user, password con tus datos) git config --global http.proxy http://user:password@proxy-host:port git config --global https.proxy http://user:password@proxy-host:port # Verificación de la configuración git config --global --get http.proxy # Si el proxy no requiere autorización: git config --global http.proxy http://proxy-host:port
Después de esta configuración, todos los comandos git clone, git push, git pull se realizarán a través del proxy. Si necesitas configurar el proxy solo para GitHub y no para todos los repositorios:
# Proxy solo para github.com git config --global http.https://github.com.proxy http://user:password@proxy-host:port
Proxy para git por SSH
La conexión SSH con GitHub funciona a través del puerto 22 (o 443 como alternativa). Para proxy de tráfico SSH se utiliza la utilidad nc (netcat) o connect. Edita el archivo ~/.ssh/config:
Host github.com HostName github.com User git ProxyCommand nc -X connect -x proxy-host:port %h %p # O para SOCKS5: # ProxyCommand nc -X 5 -x proxy-host:port %h %p
Si usas Windows, en lugar de nc puedes usar connect.exe o configurar ProxyCommand a través de PuTTY. En macOS y Linux, netcat generalmente ya está instalado.
Configuración de variables de entorno
Un método alternativo son las variables de entorno. Funcionan no solo para git, sino también para muchas otras herramientas de línea de comandos:
# Linux / macOS — añade en ~/.bashrc o ~/.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"
Configuración de proxy para npm y Node.js
npm tiene soporte integrado para proxies. La configuración toma literalmente un comando y se aplica inmediatamente a todas las operaciones de instalación de paquetes. Esto es especialmente importante para los desarrolladores iraníes que trabajan con la pila de JavaScript/TypeScript: React, Vue, Angular, Next.js — todos ellos utilizan activamente npmjs.com.
# Configuración de proxy para npm npm config set proxy http://user:password@proxy-host:port npm config set https-proxy http://user:password@proxy-host:port # Verificación de la configuración actual npm config get proxy npm config get https-proxy # Desactivar el proxy (si necesitas volver a la conexión directa) npm config delete proxy npm config delete https-proxy
Las configuraciones se guardan en el archivo ~/.npmrc. También puedes editar este archivo directamente:
# Contenido de ~/.npmrc proxy=http://user:password@proxy-host:port https-proxy=http://user:password@proxy-host:port strict-ssl=false
Yarn y pnpm
Si utilizas Yarn o pnpm, la configuración es similar:
# 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) — edita .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
Consejo para CI/CD:
Si utilizas GitHub Actions, GitLab CI u otro sistema, añade las variables HTTP_PROXY y HTTPS_PROXY a los secretos del proyecto. Esto permitirá que todos los pasos del pipeline utilicen automáticamente el proxy.
Configuración de proxy para PyPI y pip
Los desarrolladores de Python de Irán enfrentan bloqueos en PyPI con mucha frecuencia: pip utiliza HTTPS para descargar paquetes, y si la IP está bloqueada, la instalación simplemente se queda colgada o muestra un error. Hay varias formas de configurar un proxy para pip.
Método 1: Opción --proxy al instalar
# Instalación única a través de proxy pip install requests --proxy http://user:password@proxy-host:port # Para pip3 pip3 install django --proxy http://user:password@proxy-host:port
Método 2: Archivo de configuración pip.conf
Para no tener que especificar el proxy en cada comando, añade la configuración al archivo de configuración de 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
Método 3: Variables de entorno
# pip captura automáticamente las variables de entorno estándar export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # Después de esto, pip install funcionará a través del proxy pip install numpy pandas scikit-learn
Poetry y Conda
Si utilizas Poetry para gestionar dependencias, la configuración del proxy se realiza a través de variables de entorno — Poetry hereda HTTP_PROXY y HTTPS_PROXY automáticamente. Para Conda, añade al archivo ~/.condarc:
# ~/.condarc proxy_servers: http: http://user:password@proxy-host:port https: http://user:password@proxy-host:port
Otras herramientas para desarrolladores: Docker, Composer, Maven
Los bloqueos no solo afectan a GitHub, npm y PyPI. Veamos cómo configurar un proxy para otras herramientas de desarrollo populares que también pueden estar inaccesibles desde Irán.
Docker
Docker Hub está bloqueado para IP iraníes. Para ejecutar docker pull, configura el proxy en la configuración del demonio de Docker:
# Linux: crea o edita /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"
}
}
# Reinicia Docker
sudo systemctl restart docker
En macOS y Windows, la configuración del proxy para Docker Desktop se realiza a través de la interfaz gráfica: Configuración → Recursos → Proxies.
Composer (PHP)
# Composer utiliza variables de entorno export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # O a través de la configuración de 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>
Módulos de Go
# Go utiliza GOPROXY para descargar módulos # Se puede especificar un espejo o configurar un proxy del sistema export GOPROXY="https://goproxy.io,direct" export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port"
Seguridad: cómo no perder la cuenta en GitHub
El uso de proxies resuelve el problema del acceso, pero crea uno nuevo: si inicias sesión en GitHub desde diferentes direcciones IP (hoy desde Irán, mañana a través de un proxy estadounidense, pasado mañana a través de uno europeo), el sistema de seguridad de GitHub puede bloquear la cuenta como sospechosa. Aquí te mostramos cómo evitarlo.
Regla de constancia de IP
Utiliza el mismo servidor proxy para trabajar con GitHub. Si tu proveedor de proxy cambia la IP en cada conexión (proxies rotativos), esto puede generar sospechas. Para GitHub, los proxies estáticos son los más adecuados: una IP que esté asignada a ti durante un período prolongado.
- Proxy residencial estático — una IP doméstica de EE. UU. o Europa, asignada a ti. Máxima fiabilidad para GitHub.
- Proxy rotativo — adecuado para npm/pip (descarga de paquetes), pero no para iniciar sesión en la cuenta de GitHub.
- No mezcles conexiones directas y proxies: o siempre a través de un proxy, o nunca.
Autenticación de dos factores
Activa 2FA en GitHub — esto protegerá tu cuenta incluso si alguien intercepta tus credenciales. Usa una aplicación de autenticación (Google Authenticator, Authy), en lugar de SMS — los SMS pueden no estar disponibles desde Irán o funcionar de manera poco confiable.
Claves SSH en lugar de contraseñas
Configura claves SSH para trabajar con GitHub en lugar de la autorización HTTPS por contraseña. Las claves SSH están vinculadas al dispositivo, no a la IP, por lo que cambiar la IP al usar SSH es menos crítico para el sistema de seguridad de GitHub.
Comparación de tipos de proxy para desarrolladores
Resumamos en forma de tabla: qué tipo de proxy es más adecuado para tareas específicas de un desarrollador iraní.
| Tarea | Residencial | Centro de datos | Móvil |
|---|---|---|---|
| GitHub (cuenta, push/pull) | ✅ Excelente | ⚠️ Riesgo de bloqueo | ✅ Excelente |
| npm install (instalación de paquetes) | ✅ Bien | ✅ Excelente | ✅ Bien |
| pip install (PyPI) | ✅ Bien | ✅ Excelente | ✅ Bien |
| Docker Hub (descarga de imágenes) | ✅ Bien | ✅ Bien | ⚠️ Caro |
| Pipelines de CI/CD (solicitudes masivas) | ⚠️ Caro | ✅ Excelente | ❌ No adecuado |
| Velocidad de conexión | Promedio | Alta | Promedio |
| Riesgo de bloqueo de IP | Bajo | Medio | Muy bajo |
| Costo | Promedio | Bajo | Alto |
Estrategia recomendada
Esquema óptimo para el desarrollador:
- Para GitHub — un proxy residencial estático de EE. UU. o Alemania. Una IP, siempre la misma.
- Para npm/pip/Docker — un proxy de centro de datos con buena capacidad de ancho de banda. La velocidad es más importante que la reputación de la IP.
- Para el navegador y servicios web — el mismo proxy residencial o uno separado.
Protocolos: HTTP vs SOCKS5
La mayoría de las herramientas de desarrollo (git, npm, pip) admiten proxies HTTP/HTTPS. SOCKS5 es más versátil: funciona a nivel TCP y es adecuado para cualquier protocolo, incluyendo SSH. Si tu proveedor de proxy admite SOCKS5, utilízalo para conexiones SSH a GitHub. Para tráfico HTTP (npm, pip) prácticamente no hay diferencia.
Conclusión y recomendaciones
Las sanciones crean obstáculos reales para los desarrolladores iraníes, pero no hacen que el trabajo sea imposible. Un proxy bien configurado permite trabajar plenamente con GitHub, instalar paquetes a través de npm y pip, descargar imágenes de Docker Hub — sin perder cuentas y sin bloqueos constantes.
Puntos clave del artículo:
- Para trabajar con GitHub, utiliza un proxy residencial estático — una IP permanente de EE. UU. o Europa.
- Para instalar paquetes (npm, pip, Composer), son adecuados proxies de centros de datos más baratos con buena velocidad.
- Configura el proxy a nivel de herramientas (
git config,npm config,pip.conf), y no solo a nivel de sistema. - No mezcles conexiones directas y proxies para una misma cuenta de GitHub.
- Activa 2FA y utiliza claves SSH para la máxima seguridad de la cuenta.
Si buscas una solución confiable para trabajar de manera constante con GitHub y otros servicios bloqueados, te recomendamos considerar proxies residenciales — proporcionan acceso estable a través de direcciones IP domésticas reales, que rara vez son bloqueadas por GitHub y otras plataformas.
```