
جدار حماية للاتصالات الصادرة لأحمال العمل غير الموثوقة.
يمكن لمهام CI ووكلاء البرمجة بالذكاء الاصطناعي والحاويات المعزولة إجراء طلبات صادرة عشوائية. قد تؤدي تبعية مخترقة، أو حقن موجّه (prompt injection)، أو خطوة بناء خبيثة إلى تسريب الأسرار، أو الاتصال بالجهة الخارجية، أو فتح صدفة عكسية. معظم الفرق ليس لديها أي رؤية لما يخرج من أحمال العمل الخاصة بها، ناهيك عن أي وسيلة لإيقافه.
iron-proxy هو وكيل صادر MITM مزوّد بخادم DNS مدمج يقف بين حملك غير الموثوق والإنترنت. يفرض سياسة الرفض الافتراضي عند حدود الشبكة، بحيث لا يمكن لحمل العمل الوصول إلا إلى النطاقات التي تسمح بها صراحةً. لا تدخل الأسرار الحقيقية إلى البيئة المعزولة أبدًا. تستخدم أحمال العمل رموز الوكيل (proxy tokens)، ويستبدل iron-proxy هذه الرموز ببيانات اعتماد حقيقية عند الخروج، مما يعني أن حمل عمل مخترقًا يمكنه تسريب رمز لا قيمة له خارج الوكيل.
ملف تنفيذي واحد. ملف إعداد YAML واحد.
169.254.169.254، وfd00:ec2::254،
وfd20:ce::254) و loopback محظورة افتراضيًا؛ يمكن تجاوز ذلك عبر
proxy.upstream_deny_cidrs أو IRON_PROXY_UPSTREAM_DENY_CIDRS.HTTP_PROXY أو HTTPS_PROXY أو إعدادات SOCKS5.SET ROLE في جلسة المصدر الأعلى، ويرفض محاولات العميل
لتغيير الدور (SET ROLE، وset_config('role', ...)، وكتل DO، وما إلى ذلك)
عبر تحليل شجرة SQL المجردة (AST). يتكامل مع أمان مستوى الصفوف في PostgreSQL
لتوفير عزل بيانات لكل مستأجر عندما يتصل التطبيق كمستخدم حساب خدمة مشترك.
يتطلب تشغيل PgBouncer (إن استُخدم) في pool_mode = session — إذ تعيد
أوضاع تجميع المعاملات أو العبارات ربط الواجهات الخلفية بصمت بين الاستعلامات
مما يبطل السياسة. راجع docs.iron.sh للتفاصيل.مصمم لخطوط أنابيب CI، وGitHub Actions، ووكلاء الذكاء الاصطناعي (Claude Code، وCursor، وCodex)، وأي بيئة تشغّل فيها كودًا لا تثق به تمامًا.
تتوفر صور Docker على Docker Hub وملفات تنفيذية مبنية مسبقًا لـ Linux/macOS (amd64/arm64) على GitHub Releases.
أو ابنِ من المصدر:```bash go build -o iron-proxy ./cmd/iron-proxy
## البدء السريع```bash
cd examples/docker-compose
docker compose up
يبدأ هذا iron-proxy وعميل تجريبي يرسل خمسة طلبات عبر الوكيل. تحقق من السجلات لرؤية الطلبات المسموح بها والمحظورة والمُعاد كتابة أسرارها:```bash docker compose logs proxy
كل طلب ينتج إدخال تدقيق JSON منظم:```json
{
"host": "httpbin.org",
"method": "GET",
"path": "/headers",
"action": "allow",
"status_code": 200,
"duration_ms": 142,
"request_transforms": [
{ "name": "allowlist", "action": "continue" },
{
"name": "secrets",
"action": "continue",
"annotations": { "swapped": [{ "secret": "OPENAI_API_KEY", "locations": ["header:Authorization"] }] }
}
]
}
تُضمَّن الطلبات المرفوضة حقل rejected_by وتُسجَّل عند مستوى WARN. راجع
تنسيق سجل التدقيق للاطلاع على المخطط الكامل.
يُنهي iron-proxy اتصالات TLS عبر إنشاء شهادات ورقية (leaf certificates) عند الطلب، موقّعة بواسطة
CA تقدّمه أنت. يجب أن تثق حاويات العملاء بهذا CA.```bash
mkdir -p certs
openssl genrsa -out certs/ca.key 4096
openssl req -x509 -new -nodes
-key certs/ca.key
-sha256 -days 3650
-subj "/CN=iron-proxy CA"
-addext "basicConstraints=critical,CA:TRUE"
-addext "keyUsage=critical,keyCertSign"
-out certs/ca.crt
### 2. إنشاء شبكة Docker
يحتاج iron-proxy إلى عنوان IP ثابت حتى تتمكن الحاويات من توجيه DNS الخاص بها إليه:```bash
docker network create --subnet=172.20.0.0/24 iron-proxy
أنشئ ملف env يحتوي على أسرارك (احتفظ بهذا الملف خارج نظام التحكم بالإصدارات):```bash echo "OPENAI_API_KEY=sk-real-key" > .env
## المزايا الرئيسية
- **دعم بروتوكولات متعددة**: يدعم HTTP/HTTPS، SOCKS4، SOCKS5، Shadowsocks، VMess، Trojan، WireGuard، وأكثر من ذلك
- **واجهة مستخدم رسومية**: واجهة مستخدم رسومية بديهية مبنية باستخدام Wails (Go + Vue.js)
- **دعم سطر الأوامر**: واجهة سطر أوامر كاملة لعمليات الأتمتة والبرمجة النصية
- **إدارة الاشتراكات**: استيراد وتحديث الاشتراكات تلقائيًا من مصادر متعددة
- **اختبار الاتصال**: اختبار زمن الاستجابة والتوافر للخوادم
- **قواعد التوجيه**: قواعد توجيه مرنة قائمة على النطاق وعنوان IP
- **دعم متعدد المنصات**: متوفر على Windows وmacOS وLinux
- **مفتوح المصدر**: رخصة MIT مع تطوير نشط من المجتمع
## التثبيت
### المتطلبات المسبقة
- Go 1.21 أو أحدث
- Node.js 18 أو أحدث (لبناء الواجهة الأمامية)
- Wails CLI v2
### البناء من المصدر
```bash
# استنساخ المستودع
git clone https://github.com/example/proxy-manager.git
cd proxy-manager
# تثبيت Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest
# بناء التطبيق
wails build
قم بتنزيل أحدث إصدار من صفحة الإصدارات.
شغّل التطبيق وستظهر لك الواجهة الرسومية الرئيسية. من هنا يمكنك:
# تشغيل الوكيل
proxy-manager run --config config.yaml
# اختبار جميع الخوادم
proxy-manager test --all
# تحديث الاشتراكات
proxy-manager subscribe update
يستخدم التطبيق ملف تكوين YAML. فيما يلي مثال:
server:
port: 8080
host: 127.0.0.1
proxies:
- name: "example-server"
type: "vmess"
server: "example.com"
port: 443
uuid: "your-uuid-here"
alterId: 0
rules:
- type: "domain"
pattern: "*.google.com"
action: "proxy"
- type: "ip"
pattern: "192.168.0.0/16"
action: "direct"
نرحب بالمساهمات! يرجى قراءة CONTRIBUTING.md للحصول على التفاصيل.
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للتفاصيل.```bash
docker run -d --name iron-proxy
--network iron-proxy --ip 172.20.0.2
-v $(pwd)/proxy.yaml:/etc/iron-proxy/proxy.yaml:ro
-v $(pwd)/certs/ca.crt:/etc/iron-proxy/ca.crt:ro
-v $(pwd)/certs/ca.key:/etc/iron-proxy/ca.key:ro
--env-file .env
ironsh/iron-proxy:latest -config /etc/iron-proxy/proxy.yaml
### 4. توجيه الحاويات عبر الوسيط