GoProxy هو وكيل http عالي الأداء، وكيل https، وكيل sock5، وكيل ss، وكلاء websocket، وكلاء tcp، وكلاء udp، درع اللعبة، وكلاء الألعاب دعم الوكلاء الأماميين، الوكيل العكسي، الوكيل الشفاف، وكلاء الإنترنت nat، وكيل https موازنة التحميل، موازنة تحميل وكيل http، موازنة تحميل بروكسيات الجوارب 5، موازنة تحميل وكيل المقبس، موازنة تحميل وكيل ss، تعيين منفذ TCP / UDP، SSH النقل، النقل المشفر TLS، تحويل البروتوكول، وكيل DNS المضاد للتلوث، مصادقة واجهة برمجة التطبيقات (API)، الحد الأقصى للسرعة، الحد من الاتصال لمساعدتك على كشف خادم محلي خلف NAT أو جدار حماية للإنترنت حتى تتمكن أنت أو زوارك من الوصول إليه. مباشرة وبسهولة.
وProxyAdmin عبارة عن وحدة تحكم ويب قوية لـ snail007/goproxy .
ينطبق الدليل الموجود في هذه الصفحة على أحدث إصدار من goproxy. وقد لا تكون الإصدارات الأخرى قابلة للتطبيق. يرجى استخدام الأمر وفقًا لتعليماتك الخاصة.
انقر للانضمام إلى Telegram
نصيحة: تتطلب جميع العمليات امتيازات الجذر.
النسخة المجانية تؤدي هذا:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto.sh ) "
النسخة التجارية تؤدي هذا:
bash -c " $( curl -s -L https://raw.githubusercontent.com/snail007/goproxy/master/install_auto_commercial.sh ) "
اكتمل التثبيت، ودليل التكوين هو /etc/proxy. لمزيد من التفاصيل حول الاستخدام، يرجى الرجوع إلى الدليل اليدوي أعلاه لمعرفة المزيد حول الميزات التي تريد استخدامها إذا فشل التثبيت أو كان خادم vps الخاص بك ليس بنظام التشغيل linux64 بت النظام، اتبع الخطوات شبه التلقائية أدناه للتثبيت:
عنوان التنزيل: https://github.com/snail007/goproxy/releases/latest
لنأخذ الإصدار 7.9 كمثال. إذا كان لديك الإصدار الأحدث، فيرجى استخدام أحدث إصدار من الرابط. لاحظ أن رقم الإصدار الموجود في رابط التنزيل أدناه هو رقم الإصدار الأحدث.
النسخة المجانية تؤدي هذا:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64.tar.gz
النسخة التجارية تؤدي هذا:
cd /root/proxy/
wget https://github.com/snail007/goproxy/releases/download/v7.9/proxy-linux-amd64_commercial.tar.gz
النسخة المجانية تؤدي هذا:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
النسخة التجارية تؤدي هذا:
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install_commercial.sh
chmod +x install_commercial.sh
./install_commercial.sh
يستخدم تحديث الوكيل مرآة للتنزيل، إذا كان التحديث الخاص بك به خطأ في المرآة، فيمكنك تعيين متغير بيئة UPDATE_MIRROR=false
Windows: set UPDATE_MIRROR=false
ثم proxy update
Linux: export UPDATE_MIRROR=false
ثم proxy update
proxy update
تحديث القوة.
proxy update -f
على سبيل المثال، تم وضع proxy
في c:gpproxy
.
c:
cd gp
proxy update
تحديث القوة.
c:
cd gp
proxy update -f
الوكيل مرخص بموجب ترخيص GPLv3.
مجموعة Telegram الرسمية: goproxy
وجد مؤلف هذا المشروع أن عددًا كبيرًا من المطورين يعتمدون على المشروع للتطوير الثانوي أو يستخدمون عددًا كبيرًا من التعليمات البرمجية الأساسية للمشروع دون الالتزام باتفاقية GPLv3، وهو ما ينتهك بشكل خطير النية الأصلية لاستخدام اتفاقية GPLv3 مفتوحة المصدر في هذا المشروع، يتبنى المشروع الكود المصدري الذي يؤخر استراتيجية الإصدار إلى حد ما للحد من هذه السلوكيات التي لا تحترم المصادر المفتوحة ولا تحترم نتائج عمل الآخرين سيستمر في تحديث التكرارات واستمر في إصدار البرنامج الثنائي الكامل للنظام الأساسي، مما يوفر لك أدوات وكلاء قوية ومريحة إذا كنت قد قمت بتخصيص احتياجات العمل، فيرجى إرسال بريد إلكتروني إلى [email protected]
انقر فوق الحصول على تثبيت Linux
انقر فوقي للحصول على تثبيت MacOS
انقر فوق الحصول على تثبيت Windows
انقر فوق الحصول على تثبيت Windows
يصف هذا الدليل الوظائف، التي تم تضمينها جميعًا في الإصدار التجاري؛ ولم يتم تضمين الإصدار المجاني من المعلمات الوظيفية المتقدمة مثل المصادقة؛
إذا واجهت بعض الأوامر عند استخدام الإصدار المجاني لتنفيذ بعض الأوامر، فلا توجد مطالبة مشابهة للمعلمة xxx التالية، مما يشير إلى أن هذه المعلمة هي إحدى وظائف الإصدار التجاري.
err: unknown long flag '-a'
مقارنة بين مميزات النسخة المجانية والنسخة التجارية، عمليات تفصيلية حول كيفية شراء واستخدام النسخة التجارية الرجاء الضغط هنا للمشاهدة
البرنامج التعليمي اليدوي، النظام الافتراضي هو Linux، البرنامج هو الوكيل، جميع العمليات تتطلب امتيازات الجذر؛
إذا كنت تستخدم نظام التشغيل Windows، فيرجى استخدام إصدار Windows من proxy.exe.
سيقدم البرنامج التعليمي التالي طريقة الاستخدام من خلال معلمات سطر الأوامر، أو يمكنك الحصول على المعلمات من خلال قراءة ملف التكوين.
التنسيق المحدد هو تحديد ملف التكوين بواسطة الرمز @، على سبيل المثال: proxy @configfile.txt
التنسيق في configfile.txt هو أن السطر الأول هو اسم الأمر الفرعي، والسطر الثاني يبدأ بمعلمة واحدة في كل سطر.
التنسيق: parameter Parameter value
، معلمة الكتابة المباشرة بدون قيمة المعلمة، على سبيل المثال: --nolog
على سبيل المثال، محتويات الملف configfile.txt هي كما يلي:
Http
-t tcp
-p :33080
--forever
بشكل افتراضي، لا تتضمن المعلومات التي يتم إخراجها بواسطة السجل عدد أسطر الملفات. في بعض الحالات، من أجل استكشاف أخطاء البرنامج وإصلاحها، يتم تحديد المشكلة بسرعة.
يمكنك استخدام المعلمة --debug لإخراج عدد أسطر التعليمات البرمجية والميلي ثانية.
افتراضيًا، يتم عرض السجل مباشرةً في وحدة التحكم. إذا كنت تريد الحفظ في ملف، يمكنك استخدام المعلمة --log.
على سبيل المثال: --log proxy.log، سيتم إخراج السجل إلى proxy.log لتسهيل استكشاف الأخطاء وإصلاحها.
معلومات التسجيل والتحذير بشكل افتراضي، يمكنك ضبط --warn
لإخراج تسجيل التحذير فقط.
تتواصل عملية وكيل http وtcp وudp مع المنبع، ولأغراض الأمان، نستخدم الاتصال المشفر. بالطبع، يمكننا اختيار عدم تشفير الاتصال. جميع الاتصالات والاتصالات المنبعية في هذا البرنامج التعليمي مشفرة، كما يتم تشفير ملف الشهادة مطلوب.
أنشئ شهادة موقعة ذاتيًا وملف مفتاح باستخدام الأمر التالي.
proxy keygen -C proxy
سيتم إنشاء ملف الشهادة proxy.crt وملف المفتاح proxy.key ضمن دليل البرنامج الحالي.
استخدم الأمر التالي لإنشاء شهادة جديدة باستخدام الشهادة الموقعة ذاتيًا proxy.crt وملف المفتاح proxy.key: goproxy.crt وgoproxy.key.
proxy keygen -s -C proxy -c goproxy
سيتم إنشاء ملف الشهادة goproxy.crt وملف المفتاح goproxy.key ضمن دليل البرنامج الحالي.
بشكل افتراضي، يكون اسم المجال الموجود داخل الشهادة عشوائيًا ويمكن تحديده باستخدام المعلمة -n test.com
.
مزيد من الاستخدام: proxy keygen --help
.
بعد تنفيذ الوكيل افتراضيًا، لا يمكنك إغلاق سطر الأوامر إذا كنت تريد استمرار تشغيل الوكيل.
إذا كنت تريد تشغيل الوكيل في الخلفية، فيمكن إغلاق سطر الأوامر، فقط قم بإضافة المعلمة --daemon في نهاية الأمر.
على سبيل المثال:
proxy http -t tcp -p "0.0.0.0:38080" --daemon
يقوم البرنامج الخفي بتشغيل المعلمة --forever، على سبيل المثال: proxy http --forever
،
سيقوم الوكيل بتفرع العملية الفرعية، ثم مراقبة العملية الفرعية. إذا خرجت العملية الفرعية بشكل غير طبيعي، فأعد تشغيل العملية الفرعية بعد 5 ثوانٍ.
تتم مطابقة هذه المعلمة مع معلمة التشغيل في الخلفية --daemon ومعلمة السجل --log، والتي يمكن أن تضمن تنفيذ الوكيل دائمًا في الخلفية دون الخروج عن طريق الخطأ.
ويمكنك رؤية محتوى سجل الإخراج للوكيل من خلال ملف السجل.
على سبيل المثال: proxy http -p ":9090" --forever --log proxy.log --daemon
عندما يكون VPS خلف جهاز nat، يكون عنوان IP لواجهة شبكة vps هو عنوان IP للإنترانت. في هذا الوقت، يمكنك استخدام المعلمة -g لإضافة عنوان IP للشبكة الخارجية لـ vps لمنع الحلقة اللانهائية.
لنفترض أن عنوان IP لشبكة vps الخارجية لديك هو 23.23.23.23، حيث يقوم الأمر التالي بتعيين 23.23.23.23 مع المعلمة -g.
proxy http -g "23.23.23.23"
يدعم وكيل HTTP(S)SOCKS5SPS موازنة التحميل ذات المستوى الأعلى والتوفر العالي، ويمكن استخدام معلمات تكرار P متعددة.
تدعم سياسة موازنة التحميل خمسة أنواع، والتي يمكن تحديدها بواسطة المعلمة --lb-method
:
Roundrobin المستخدمة بدورها
يستخدم Leastconn الحد الأدنى لعدد الاتصالات
أقل وقت يستخدم أقل وقت اتصال
يستخدم التجزئة مصدرًا ثابتًا بناءً على عنوان العميل
الوزن حدد المنبع وفقًا لوزن وعدد الوصلات لكل منبع
اِسْتَدْعَى:
يمكن تعيين الفاصل الزمني للتحقق من موازنة التحميل بواسطة --lb-retrytime
بالمللي ثانية.
يمكن تعيين مهلة اتصال موازنة التحميل بواسطة --lb-timeout
بالمللي ثانية.
إذا كانت سياسة موازنة التحميل هي الوزن، فإن التنسيق -P هو: 2.2.2.2: 3880?w=1، حيث 1 هو الوزن وعدد صحيح أكبر من 0.
إذا كانت سياسة موازنة التحميل مجزأة، فإن الخيار الافتراضي هو تحديد المنبع بناءً على عنوان العميل. يمكنك تحديد المنبع باستخدام عنوان الوجهة للوصول --lb-hashtarget
.
لا تحتوي وكلاء TCP على معلمة --lb-hashtarget
.
الافتراضي هو موازنة التحميل + وضع التوفر العالي. إذا تم استخدام المعلمة --lb-onlyha
، فسيتم استخدام وضع التوفر العالي فقط، ثم يتم تحديد العقدة وفقًا لاستراتيجية موازنة التحميل، وسيتم استخدام هذه العقدة حتى لا يتم ذلك. على قيد الحياة، ثم سيتم اختيار عقدة أخرى لاستخدامها، وبالتالي ركوب الدراجات.
إذا لم تكن جميع العقد على قيد الحياة، فسيتم اختيار عقدة عشوائية للاستخدام.
وكيل Http (s)، وكيل SPS، اختراق الإنترانت، وكيل TCP يدعم اتصال المنبع من خلال وكلاء الطرف الثالث الوسيط،
المعلمات هي: --jumper، جميع التنسيقات هي كما يلي:
http://username:password@host:port
http://host:port
https://username:password@host:port
https://host:port
socks5://username:password@host:port
socks5://host:port
socks5s://username:password@host:port
socks5s://host:port
ss://method:password@host:port
يمثل Http,socks5 وكيل http وsocks5 العادي.
يمثل Https,socks5s وكلاء http وsocks5 المحميين بواسطة TLS.
هذا هو وكيل http عبر TLS، والجوارب عبر TLS.
يدعم وكيل الجوارب/http(s)/sps قوائم أسماء النطاقات بالأبيض والأسود.
استخدم المعلمة --stop لتحديد ملف القائمة السوداء لاسم المجال، ثم سيتم قطع الاتصال عندما يقوم المستخدم بتوصيل هذه المجالات في الملف.
حدد ملف القائمة البيضاء لاسم المجال باستخدام المعلمة --only، ثم سيتم قطع الاتصال عندما يتصل المستخدم بمجال آخر غير تلك المجالات الموجودة في الملف.
إذا تم ضبط كل من --stop و --only، فلن يعمل سوى --only.
تنسيق ملف قائمة أسماء النطاقات بالأبيض والأسود هو كما يلي:
**.baidu.com
*.taobao.com
A.com
192.168.1.1
192.168.*.*
?.qq.com
وصف:
*
و ?
، *
تمثل أي عدد من الأحرف، ?
2. **.baidu.com
يتطابق بغض النظر عن عدد المستويات، وجميع اللواحق هي ..baidu.com`.
3. *.taobao.com
اللاحقة المطابقة هي اسم مجال المستوى الثالث لـ .taobao.com
.
5. #
في بداية التعليق.
الجوارب/http(s)/sps الوكيل جميعها تدعم القائمة السوداء للمنافذ.
استخدم المعلمة --stop-port
لتحديد ملف القائمة السوداء للمنفذ، ثم عندما يتصل المستخدم بالمنافذ الموجودة في الملف، يمكن إجراء الاتصال.
تنسيق محتوى ملف القائمة السوداء للمنفذ هو كما يلي:
3306
22
ملحوظة:
#
هي تعليقات.الجوارب/http(s)/sps/tcp/udp/dns/ جسر اختراق الإنترانت/جسر اختراق الإنترانت، دعم قائمة IP بالأبيض والأسود للعميل.
استخدم المعلمة --ip-deny لتحديد ملف القائمة السوداء لعميل IP، ثم سيتم قطع الاتصال عندما يكون عنوان IP الخاص بالمستخدم في هذا الملف.
استخدم المعلمة --ip-allow لتحديد ملف القائمة البيضاء لعنوان IP للعميل، ثم سيتم قطع الاتصال عندما لا يكون عنوان IP الخاص بالمستخدم موجودًا في الملف.
إذا تم ضبط كل من --ip-deny و --ip-allow، فلن يعمل سوى --ip-allow.
تنسيق القائمة السوداء لعميل IP وملف القائمة البيضاء هو كما يلي:
192.168.1.1
192.168.*.*
192.168.1?.*
وصف:
*
و ?
، *
تمثل أي عدد من الأحرف، ?
تمثل حرفًا عشوائيًا. 2. #
في بداية التعليق.
هناك العديد من الأماكن في وظائف الوكيل المختلفة لتعيين ملف، على سبيل المثال: --blocked يحدد ملف قائمة اسم المجال الذي ينتقل مباشرة إلى المستوى العلوي. قيمة المعلمة هي مسار الملف.
إذا كانت المعلمة تدعم ملف تحميل البروتوكول، فلا يمكن أن يكون مسار الملف هو مسار الملف فحسب، بل أيضًا:
أ. يشير ترميز base64 في بداية "base64://" إلى محتويات الملف أعلاه، على سبيل المثال: base64://ajfpoajsdfa=
ب. "str://" في بداية الفاصلة الإنجليزية متعددة، مثل: str://xxx، yyy
تدعم ملفات الوكيل المحظورة، والمباشرة، والتوقف، فقط، والمضيفين، وresolve.rules، وrewriter.rules، وip.allow، وip.deny تحميل البروتوكول.
وكلاء الجوارب5spshttp، المعلمة التي تتحكم في عدد اتصالات العميل المتزامنة هي: --max-conns-rate
، الذي يتحكم في الحد الأقصى لعدد اتصالات العميل في الثانية، الافتراضي: 20، 0 غير محدود
يدعم "tcp / http / socks / sps" الاستماع إلى منافذ متعددة ومنافذ النطاق في الظروف العادية، ويكفي الاستماع إلى منفذ واحد، ولكن إذا كنت بحاجة إلى الاستماع إلى منافذ متعددة، فإن المعلمة -p مدعومة هو: -p 0.0.0.0:80,0.0.0.0:443,.0.0.0.0:8000-9000,:5000-6000
، المزيد من الروابط يمكن يتم فصلها بفواصل.
proxy http -t tcp -p "0.0.0.0:38080"
يمكن أن تكون وسيطة منفذ الاستماع -p
:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
استخدم المنفذ المحلي 8090، بافتراض أن وكيل HTTP الأساسي هو 22.22.22.22:8080
proxy http -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
يمكننا أيضًا تحديد ملف القائمة بالأبيض والأسود لاسم مجال موقع الويب، واسم مجال واحد في كل سطر، وقاعدة المطابقة هي المطابقة الموجودة في أقصى اليمين، على سبيل المثال: baidu.com، والمطابقة هي .baidu.com ، واسم مجال القائمة السوداء يذهب مباشرة إلى الوكيل الرئيسي، القائمة البيضاء لا ينتقل اسم المجال إلى الوكيل الرئيسي.
proxy http -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
ملاحظة: يجب أن يكون
proxy.crt
وproxy.key
الذي يستخدمه الوكيل الثانوي متوافقين مع الوكيل الأساسي.
وكيل HTTP من المستوى 1 (VPS، IP: 22.22.22.22)
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
وكيل HTTP الثانوي (Linux المحلي)
proxy http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى منفذ الوكيل 38080 على VPS.
وكيل HTTP الثانوي (النوافذ المحلية)
proxy.exe http -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
ثم قم بتعيين نظام windows الخاص بك، الوكيل الذي يحتاج إلى المرور عبر برنامج الإنترنت الوكيل هو وضع http، والعنوان هو: 127.0.0.1، والمنفذ هو: 8080، ويمكن للبرنامج الوصول إلى الإنترنت من خلال vps من خلال القناة المشفرة.
وكيل HTTP من المستوى 1 VPS_01، IP: 22.22.22.22
proxy http -t tls -p ":38080" -C proxy.crt -K proxy.key
وكيل HTTP الثانوي VPS_02، IP: 33.33.33.33
proxy http -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
وكيل HTTP من المستوى 3 (محلي)
proxy http -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى منفذ الوكيل 38080 على وكيل HTTP الأساسي.
بالنسبة لبروتوكول HTTP للوكيل، يمكننا إجراء المصادقة الأساسية، ويمكن تحديد اسم المستخدم وكلمة المرور المصادق عليهما في سطر الأوامر.
proxy http -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
بالنسبة لعدة مستخدمين، كرر المعلمة -a.
ويمكن أيضًا وضعه في ملف بتنسيق "اسم المستخدم: كلمة المرور" ثم تحديده بـ -F.
proxy http -t tcp -p ":33080" -F auth-file.txt
بالإضافة إلى ذلك، يدمج وكيل http(s) أيضًا مصادقة HTTP API الخارجية، ويمكننا تحديد عنوان واجهة http url باستخدام المعلمة --auth-url.
ثم عندما يكون هناك اتصال مستخدم، سيطلب الوكيل عنوان url في وضع GET، ويحضر المعلمات الأربعة التالية. إذا تم إرجاع رمز حالة HTTP 204، فإن المصادقة ناجحة.
وفي حالات أخرى، فشلت المصادقة.
على سبيل المثال:
proxy http -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
عندما يتصل المستخدم، سيطلب الوكيل عنوان url ("http://test.com/auth.php") في وضع GET.
خذ خمس معلمات: المستخدم، المرور، IP، local_ip، الهدف:
Http://test.com/auth.php?user={USER}&pass={PASS}&ip={IP}&local_ip={LOCAL_IP}&target={TARGET}
المستخدم: اسم المستخدم
تمرير: كلمة المرور
IP: عنوان IP الخاص بالمستخدم، على سبيل المثال: 192.168.1.200
Local_ip: IP الخاص بالخادم الذي يصل إليه المستخدم، على سبيل المثال: 3.3.3.3
الهدف: عنوان URL الذي تم الوصول إليه بواسطة المستخدم، على سبيل المثال: http://demo.com:80/1.html أو https://www.baidu.com:80
إذا لم يكن هناك معلمة -a أو -F أو --auth-url، فسيتم إيقاف تشغيل المصادقة الأساسية.
افتراضيًا، سيحدد الوكيل بذكاء ما إذا كان اسم مجال موقع الويب غير قابل للوصول أم لا، وإذا لم يكن من الممكن الوصول إليه، فسوف ينتقل إلى وكيل HTTP ذو المستوى الأعلى. مع --always، يمكن إجبار كل حركة مرور وكيل HTTP على الانتقال إلى HTTP العلوي الوكيل.
proxy http --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
الوصف: مبدأ نقل ssh هو استخدام وظيفة إعادة التوجيه لـ ssh، أي أنه بعد الاتصال بـ ssh، يمكنك الوصول إلى العنوان الهدف من خلال وكيل ssh.
لنفترض أن هناك: vps
منفذ وكيل HTTP(S) المحلي 28080، ينفذ:
proxy http -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
منفذ وكيل HTTP(S) المحلي 28080، ينفذ:
proxy http -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
يتطلب بروتوكول KCP المعلمة --kcp-key لتعيين كلمة مرور لتشفير البيانات وفك تشفيرها.
وكيل HTTP من المستوى 1 (VPS، IP: 22.22.22.22)
proxy http -t kcp -p ":38080" --kcp-key mypassword
وكيل HTTP الثانوي (Linux المحلي)
proxy http -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى منفذ الوكيل 38080 على VPS، ويتم إرسال البيانات من خلال بروتوكول kcp، لاحظ أن kcp هو بروتوكول udp، لذلك يحتاج جدار الحماية إلى تحرير بروتوكول udp 380p.
لا يدعم الوكيل إعداد الوكيل في البرامج الأخرى فحسب، بل يوفر أيضًا خدمات الوكيل للبرامج الأخرى، كما يدعم التحليل المباشر لاسم مجال موقع الويب المطلوب إلى عنوان IP الذي يستمع إليه الوكيل، ثم يستمع الوكيل إلى المنفذين 80 و443، ثم. سيقوم الوكيل تلقائيًا بتفويض الوصول إلى موقع ويب HTTP(S) الذي تحتاج إلى الوصول إليه.
كيفية الاستخدام:
على جهاز "وكيل الوكيل من المستوى الأخير"، نظرًا لأن الوكيل سيتم إخفاءه كجميع مواقع الويب، يكون منفذ HTTP الافتراضي لموقع الويب هو 80، وHTTPS هو 443، ويمكن للوكيل الاستماع إلى المنفذين 80 و443. المعلمات -p متعددة عناوين مع تجزئة الفواصل.
proxy http -t tcp -p :80,:443
يقوم هذا الأمر بتشغيل وكيل وكيل على الجهاز، والاستماع إلى المنفذين 80 و443 في نفس الوقت، ويمكن استخدامه كوكيل عادي، أو حل اسم المجال الذي يحتاج إلى وكيل مباشرة لهذا الجهاز.
إذا كان هناك وكيل المنبع، فارجع إلى البرنامج التعليمي أعلاه لتعيين المنبع، والاستخدام هو نفسه تمامًا.
proxy http -t tcp -p :80,:443 -T tls -P "2.2.2.2:33080" -C proxy.crt -K proxy.key
ملحوظة:
لا يمكن أن تتأثر نتيجة تحليل DNS للخادم الذي يوجد به الوكيل بالدقة المخصصة، وإلا فستكون حلقة لا نهائية. يجب أن يحدد الوكيل المعلمة --dns-address 8.8.8.8
.
يحتاج هذا الوضع إلى أساس شبكة معين. إذا لم يتم فهم المفاهيم ذات الصلة، يرجى البحث عنها بنفسك.
بافتراض أن الوكيل يعمل الآن على جهاز التوجيه، يكون أمر بدء التشغيل كما يلي:
proxy http -t tcp -p :33080 -T tls -P "2.2.2.2:33090" -C proxy.crt -K proxy.key
ثم قم بإضافة قاعدة iptables، وإليك القواعد المرجعية:
# Upper proxy server IP address:
Proxy_server_ip=2.2.2.2
#路由器Running port for proxy listening:
Proxy_local_port=33080
# The following does not need to be modified
# create a new chain named PROXY
Iptables -t nat -N PROXY
# Ignore your PROXY server's addresses
# It's very IMPORTANT, just be careful.
Iptables -t nat -A PROXY -d $proxy_server_ip -j RETURN
# Ignore LANs IP address
Iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
Iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
Iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
Iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
Iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
Iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# Anything to port 80 443 should be redirected to PROXY's local port
Iptables -t nat -A PROXY -p tcp --dport 80 -j REDIRECT --to-ports $proxy_local_port
Iptables -t nat -A PROXY -p tcp --dport 443 -j REDIRECT --to-ports $proxy_local_port
# Apply the rules to nat client
Iptables -t nat -A PREROUTING -p tcp -j PROXY
# Apply the rules to localhost
Iptables -t nat -A OUTPUT -p tcp -j PROXY
- معلمات --dns-address و --dns-ttl، المستخدمة لتحديد نظام أسماء النطاقات (--dns-address) الذي يستخدمه الوكيل للوصول إلى اسم المجال.
ووقت ذاكرة التخزين المؤقت لنتائج التحليل (-dns-ttl) بالثواني، لتجنب تداخل نظام أسماء النطاقات مع الوكيل، بالإضافة إلى وظيفة ذاكرة التخزين المؤقت، يمكن أيضًا تقليل وقت تحليل نظام أسماء النطاقات لتحسين سرعة الوصول.
على سبيل المثال:
proxy http -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
--dns-address
يدعم عناوين DNS المتعددة، وموازنة التحميل، مفصولة بفاصلة على سبيل المثال: --dns-address "1.1.1.1:53,8.8.8.8:53"
يمكنك أيضًا استخدام المعلمة --dns-interface
لتحديد النطاق الترددي المستخدم لتحليل نظام أسماء النطاقات، على سبيل المثال: --dns-interface eth0
، سيستخدم تحليل نظام أسماء النطاقات عرض النطاق الترددي eth0، ويجب تعيين هذه المعلمة على --dns-address
إلى تكون فعالة.
يمكن لوكيل http(s) الخاص بالوكيل تشفير بيانات TCP عبر تشفير TLS القياسي وبروتوكول KCP أعلى TCP، بالإضافة إلى دعم التخصيص بعد TLS وKCP.
التشفير، أي يمكن استخدام التشفير المخصص وtls|kcp معًا. الاستخدام الداخلي لتشفير AES256، ما عليك سوى تحديد كلمة مرور عند استخدامه.
ينقسم التشفير إلى قسمين، الأول هو ما إذا كان التشفير وفك التشفير المحلي (-z)، والآخر هو ما إذا كان الإرسال مع المنبع (-Z) مشفرًا أو مفكك التشفير.
يتطلب التشفير المخصص أن يكون كلا الطرفين وكيلاً، ويتم استخدام المستويين والمستويات الثلاثة التالية كأمثلة:
مثيل ثانوي
التنفيذ على المستوى 1 vps (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
التنفيذ الثانوي المحلي:
proxy http -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
وبهذه الطريقة، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080، يتم الوصول إلى موقع الويب المستهدف من خلال الإرسال المشفر مع المنبع.
حالات من ثلاثة مستويات
التنفيذ على المستوى 1 vps (ip: 2.2.2.2):
proxy http -t tcp -z demo_password -p :7777
التنفيذ على الخادم الافتراضي الخاص الثانوي (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
التنفيذ المحلي على ثلاثة مستويات:
proxy http -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
وبهذه الطريقة، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080، يتم الوصول إلى موقع الويب المستهدف من خلال الإرسال المشفر مع المنبع.
يمكن للوكيل http(s) الوكيل تشفير بيانات TCP من خلال تشفير TLS القياسي وبروتوكول KCP أعلى TCP، ويمكنه أيضًا ضغط البيانات قبل التشفير المخصص.
وهذا يعني أنه يمكن استخدام الضغط والتشفير المخصص وtls|kcp معًا. وينقسم الضغط إلى جزأين، جزء واحد هو نقل الضغط المحلي (-m).
يتم ضغط جزء منه بواسطة ناقل الحركة المنبع (-M).
يتطلب الضغط أن يكون كلا الجانبين وكيلاً، كما يحمي الضغط البيانات (المشفرة) إلى حد ما، ويستخدم ما يلي المستوى 2 والمستوى 3 كأمثلة:
مثيل ثانوي
التنفيذ على المستوى 1 vps (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
التنفيذ الثانوي المحلي:
proxy http -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
بهذه الطريقة، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080، يتم الوصول إلى موقع الويب المستهدف من خلال الضغط مع المنبع.
حالات من ثلاثة مستويات
التنفيذ على المستوى 1 vps (ip: 2.2.2.2):
proxy http -t tcp -m -p :7777
التنفيذ على الخادم الافتراضي الخاص الثانوي (ip: 3.3.3.3):
proxy http -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
التنفيذ المحلي على ثلاثة مستويات:
proxy http -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
بهذه الطريقة، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080، يتم الوصول إلى موقع الويب المستهدف من خلال الضغط مع المنبع.
يدعم وكيل HTTP(S) موازنة التحميل ذات المستوى الأعلى، ويمكن استخدام معلمات تكرار P المنبع المتعددة.
proxy http --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080
proxy http --lb-method=leastconn --lb-retrytime 300 --lb-timeout 300 -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -t tcp - p :33080
proxy http --lb-method=weight -T tcp -P 1.1.1.1:33080?w=1 -P 2.1.1.1:33080?w=2 -P 3.1.1.1:33080?w=1 -t tcp - p :33080
proxy http --lb-hashtarget --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -t tcp -p :33080
الحد الأقصى للسرعة هو 100 كيلو، والذي يمكن تحديده بواسطة المعلمة -l
، على سبيل المثال: 100K 2000K 1M 0 يعني عدم وجود حد.
proxy http -t tcp -p 2.2.2.2:33080 -l 100K
يمكن استخدام المعلمة --bind-listen
لفتح اتصال العميل بعنوان IP الخاص بالبوابة، واستخدام عنوان IP الخاص بالبوابة باعتباره عنوان IP الصادر للوصول إلى موقع الويب الهدف نقطة، سيحاول الوكيل ربط الهدف دون ربط IP، وسيطالبك السجل.
proxy http -t tcp -p 2.2.2.2:33080 --bind-listen
على الرغم من أن المعلمة --bind-listen
المذكورة أعلاه يمكنها تحديد عنوان IP الصادر، إلا أنه لا يمكن الرجوع إلى عنوان entry IP
وعنوان outgoing IP
بشكل مصطنع. إذا كنت تريد أن يكون عنوان IP للدخول وIP للخروج مختلفين، فيمكنك استخدام --bind-ip
المعلمة، التنسيق: IP:port
، على سبيل المثال: 1.1.1.1:8080
، [2000:0:0:0:0 :0:0:1]:8080
لمتطلبات الربط المتعددة --bind-ip
يمكن تكرار المعلمة.
على سبيل المثال، هذا الجهاز لديه IP 5.5.5.5
، 6.6.6.6
، ويراقب منفذين 8888
و 7777
، الأمر كما يلي:
Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322
ثم منفذ وصول العميل 7777
، عنوان IP الصادر هو 5.5.5.5
، منفذ الوصول 8888
، عنوان IP الصادر هو 6.6.6.6
، إذا تم تعيين كل من --bind-ip
و --bind- are set at the same time listen
، --bind-ip
له أولوية أعلى بالإضافة إلى ذلك، جزء IP
من المعلمة --bind-ip
يدعم تحديد network interface name
، wildcards
، ويمكن تحديد أكثر من واحد. الوصف التفصيلي هو كما يلي:
--bind-ip eth0:7777
، ثم يصل العميل إلى منفذ 7777
، وعنوان IP الخاص بالخروج هو IP الخاص بواجهة شبكة eth0.--bind-ip eth0.*:7777
، ثم يصل العميل إلى المنفذ 7777
، ويتم تحديد عنوان IP للخروج بشكل عشوائي من IP لواجهة الشبكة بدءًا من eth0.
--bind-ip 192.168.?.*:777
، ثم يصل العميل إلى منفذ 7777
، وعنوان IP الصادر هو كافة عناوين IP الخاصة بالجهاز، ويطابق IP الخاص بـ 192.168.?.*
A تم اختيارها عشوائيا.-bind-ip pppoe??,192.168.?.*:7777
، ثم يصل العميل إلى منفذ 7777
، عنوان IP الصادر هو اسم واجهة الشبكة الخاص بالجهاز المطابق pppoe??
ويتم اختياره عشوائيًا من عنوان IP المطابق 192.168.?.*
في عنوان IP الخاص بالجهاز.*
0 لأي حرف، ?
حرفًا واحدًا.--bind-refresh
لتحديد الفاصل الزمني لتحديث معلومات واجهة الشبكة المحلية، والافتراضي هو 5
، والوحدة هي الثانية.بشكل افتراضي، المعلمة -C، -K هي المسار إلى شهادة crt وملف المفتاح.
إذا كانت بداية base64://، فإن البيانات الأخيرة تعتبر مشفرة بـ base64 وسيتم استخدامها بعد فك التشفير.
يمكن أن يكون إعداد الوضع الذكي واحدًا من الوالدين الذكيين|المباشرين.
الافتراضي هو: الوالدين.
معنى كل قيمة هو كما يلي:
--intelligent=direct
، الأهداف المحظورة ليست متصلة بشكل مباشر.
--intelligent=parent
، الهدف غير المباشر سينتقل إلى المستوى الأعلى.
--intelligent=intelligent
والمحظور والمباشر ليس له أهداف، ويحدد بذكاء ما إذا كان سيتم استخدام هدف الوصول إلى المنبع.
proxy help http
التنفيذ المحلي:
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22"
ثم الوصول إلى المنفذ المحلي 33080 هو الوصول إلى المنفذ 22 من 192.168.22.33.
تدعم المعلمة -p
:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000, 9001 to 9999 for a total of 1002 ports
إذا كان عدد منافذ الاستماع المحلية أكبر من 1، فسيتم توصيل المنفذ العلوي المقابل للمنفذ المحلي، وسيتم تجاهل المنفذ الموجود في -P
.
إذا كنت بحاجة إلى اتصال من جميع المنافذ، فاتصل بالمنفذ العلوي المحدد، يمكنك إضافة المعلمة --lock-port
.
مثل:
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:0"
ثم سيتم الاتصال بمنفذ 33080
بمنفذ 33080
من 0
-P
والمنافذ الأخرى متشابهة.
إذا كنت ترغب في توصيل المنافذ 33080
، 33081
، وما إلى ذلك بمنفذ 22
من 192.168.22.33 ، يمكنك إضافة المعلمة --lock-port
.
proxy tcp -p ":33080-33085" -T tcp -P "192.168.22.33:22" --lock-port
يتم تنفيذ VPS (IP: 22.22.2.33):
proxy tcp -p ":33080" -T tcp -P "127.0.0.1:8080"
التنفيذ المحلي:
proxy tcp -p ":23080" -T tcp -P "22.22.22.33:33080"
ثم الوصول إلى المنفذ المحلي 23080 هو الوصول إلى المنفذ 8020 من 22.22.22.33.
وكيل TCP الأساسي VPS_01 ، IP: 22.22.22.22
proxy tcp -p ":38080" -T tcp -P "66.66.66.66:8080"
ثانوي TCP Proxy VPS_02 ، IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
المستوى 3 وكيل TCP (محلي)
proxy tcp -p ":8080" -T tcp -P "33.33.33.33:28080"
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى المنفذ 8080 من 66.66.66.66 من خلال نفق TCP المشفر.
يتم تنفيذ VPS (IP: 22.22.2.33):
proxy tcp -t tls -p ":33080" -T tcp -P "127.0.0.1:8080" -C proxy.crt -K proxy.key
التنفيذ المحلي:
proxy tcp -p ":23080" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
ثم الوصول إلى المنفذ المحلي 23080 هو الوصول إلى المنفذ 8080 من 22.22.22.33 من خلال نفق TCP المشفر.
وكيل TCP الأساسي VPS_01 ، IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T tcp -P "66.66.66.66:8080" -C proxy.crt -K proxy.key
ثانوي TCP Proxy VPS_02 ، IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
المستوى 3 وكيل TCP (محلي)
proxy tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى المنفذ 8080 من 66.66.66.66 من خلال نفق TCP المشفر.
في بعض الأحيان ، لا يمكن للوكالة الوصول إلى الشبكة الخارجية مباشرة
يمكن أن تساعدك المعلمة -J في توصيل الوكيل بالبروكسي من خلال وكيل HTTPS أو Socks5 عند رسم خرائط منفذ TCP الوكيل ، ورسم الخرائط للمنفذ الخارجي إلى المحلي.
تنسيق المعلمة -J كما يلي:
كتابة الوكيل HTTPS:
يحتاج الوكيل إلى مصادقة ، اسم المستخدم: اسم المستخدم كلمة المرور: كلمة المرور
https: // username: password@host: port
الوكيل لا يتطلب المصادقة
https: // المضيف: منفذ
كتابة البروكسي Socks5:
يحتاج الوكيل إلى مصادقة ، اسم المستخدم: اسم المستخدم كلمة المرور: كلمة المرور
Socks5: // اسم المستخدم: Password@Host: Port
الوكيل لا يتطلب المصادقة
Socks5: // Host: Port
المضيف: اسم IP أو مجال الوكيل
المنفذ: منفذ الوكيل
عندما يكون وكيل TCP هو نوع متفوق (المعلمة: -T) TCP ، فإنه يدعم --bind-listen
الصادر المحدد. نظرًا لأن عنوان IP الصادر للوصول إلى موقع الويب المستهدف.
proxy tcp -p ":33080" -T tcp -P" 192.168.22.33:22" -B
على الرغم من أن المعلمة --bind-listen
أعلاه يمكنها تحديد --bind-ip
الصادر ، لا يمكن الرجوع إلى outgoing IP
entry IP
مصطنع. المعلمة ، التنسيق: IP:port
: على سبيل المثال: 1.1.1.1:8080
، [2000:0:0:0:0:0:0:1]:8080
. يمكن تكرار تحديد --bind-ip
.
على سبيل المثال ، يحتوي هذا الجهاز على IP 5.5.5.5
و 6.6.6.6
ومراقبة منفذين 8888
و 7777
، كما يلي:
Proxy tcp -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888 -T tcp -P 2.2.2.2:3322
ثم منفذ وصول العميل 7777
، IP الصادر هو 5.5.5.5
، منفذ الوصول 8888
، IP الصادر هو 6.6.6.6
، إذا تم تعيين كلاهما- --bind-ip
و-- --bind- are set at the same time listen
، --bind-ip
له أولوية أعلى.
بالإضافة إلى ذلك ، يدعم جزء IP
من --bind-ip
تحديد network interface name
، wildcards
، وأكثر من واحد يمكن تحديده.
--bind-ip eth0:7777
، ثم يقوم العميل بالوصول إلى منفذ 7777
، و IP Fegress هو IP لواجهة شبكة eth0.--bind-ip eth0.*:7777
، ثم يقوم العميل بالوصول إلى منفذ 7777
، ويكون IP Fegress أحد IPS من واجهة الشبكة التي تبدأ بـ eth0.
--bind-ip 192.168.?.*:7777
، ثم يقوم العميل بالوصول إلى منفذ 7777
، و IP الصادر هو كل IPs للجهاز ، ومطابقة IP لعام 192.168.?.*
تم اختياره بشكل عشوائي.--bind-ip pppoe??,192.168.?.*:7777
، ثم يقوم العميل بالوصول إلى المنفذ 7777
، المنصة IP هو اسم واجهة شبكة الجهاز مطابقة 192.168.?.*
pppoe??
*
WildCard 0 إلى أي عدد من الأحرف ، و ?
--bind-refresh
لتحديد الفاصل الزمني لتحديث معلومات واجهة الشبكة المحلية ، الافتراضي هو 5
، الوحدة هي الثانية.proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
--max-conns
الحد من الحد الأقصى للاتصالات لكل منفذ. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --max-conns 1000
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
يحد المعلمة --rate-limit
كل اتصال TCP. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --rate-limit 100k
--ip-rate
الأقصى للمعلمة الإجمالية لكل proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
عميل. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --ip-rate 1M
--port-rate
proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
الإجمالي لكل منفذ خدمة. proxy tcp -p ":33080" -T tcp -P "192.168.22.33:22" --port-rate 10M
--rate-limit
لث ( --ip-rate
أو --port-rate
) يمكن استخدامه معًا. --c
يتحكم في ضغط الإرسال بين العميل المحلي --C
والخطأ الافتراضي ؛
أمثلة:
VPS (IP: 22.22.22.33) التنفيذ: proxy tcp -t tcp --c -p ":33080" -T tcp -P "127.0.0.1:8080"
proxy tcp -t tcp -p ":23080" -T tcp -P "22.22.22.33:33080" --C
proxy help tcp
التنفيذ المحلي:
proxy udp -p ":5353" -T udp -P "8.8.8.8:53"
ثم الوصول إلى منفذ UDP المحلي: 5353 هو الوصول إلى 8.8.8.8 UDP: 53 منفذ.
تدعم المعلمة -p
:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000, 9001 to 9999 for a total of 1002 ports
إذا كان عدد منافذ الاستماع المحلية أكبر من 1 ، فسيتم توصيل المنفذ العلوي المقابل للمنفذ المحلي ، وسيتم تجاهل المنفذ في -P
.
إذا كنت بحاجة إلى اتصال من جميع المنافذ ، فقم بالتواصل مع المنفذ العلوي المحدد ، فيمكنك إضافة المعلمة --lock-port
.
مثل:
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:0"
ثم سيتم الاتصال بمنفذ 33080
بمنفذ 33080
من 0
-P
والمنافذ الأخرى متشابهة.
إذا كنت ترغب في توصيل المنافذ 33080
، 33081
، إلخ. بمنفذ 2222
من 192.168.22.33 ، يمكنك إضافة المعلمة --lock-port
.
proxy udp -p ":33080-33085" -T udp -P "192.168.22.33:2222" --lock-port
يتم تنفيذ VPS (IP: 22.22.2.33):
proxy tcp -p ":33080" -T udp -P "8.8.8.8:53"
التنفيذ المحلي:
proxy udp -p ":5353" -T tcp -P "22.22.22.33:33080"
ثم الوصول إلى منفذ UDP: 5353 هو من خلال نفق TCP ، من خلال VPS Access 8.8.8.8 UDP: 53 Port.
وكيل TCP الأساسي VPS_01 ، IP: 22.22.22.22
proxy tcp -p ":38080" -T udp -P "8.8.8.8:53"
ثانوي TCP Proxy VPS_02 ، IP: 33.33.33.33
proxy tcp -p ":28080" -T tcp -P "22.22.22.22:38080"
المستوى 3 وكيل TCP (محلي)
proxy udp -p ":5353" -T tcp -P "33.33.33.33:28080"
ثم الوصول إلى منفذ 5353 المحلي من خلال نفق TCP ، من خلال VPS للوصول إلى المنفذ 8.8.8.8.
يتم تنفيذ VPS (IP: 22.22.2.33):
proxy tcp -t tls -p ":33080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
التنفيذ المحلي:
proxy udp -p ":5353" -T tls -P "22.22.22.33:33080" -C proxy.crt -K proxy.key
ثم الوصول إلى منفذ UDP: 5353 هو من خلال نفق TCP المشفر ، من خلال VPS Access 8.8.8.8 UDP: 53 Port.
وكيل TCP الأساسي VPS_01 ، IP: 22.22.22.22
proxy tcp -t tls -p ":38080" -T udp -P "8.8.8.8:53" -C proxy.crt -K proxy.key
ثانوي TCP Proxy VPS_02 ، IP: 33.33.33.33
proxy tcp -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
المستوى 3 وكيل TCP (محلي)
proxy udp -p ":5353" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
ثم الوصول إلى منفذ 5353 المحلي هو الوصول إلى المنفذ 8.8.8.8 من خلال VPS_01 من خلال نفق TCP المشفر.
عندما يكون UDP Opstream Prexies --bind-listen
المعلمة: -T) UDP ، فإنه يدعم IP الصادر المحدد. IP للوصول إلى الهدف.
proxy udp -p ":33080" -T udp -P "192.168.22.33:2222" -B
proxy help udp
تغلغل إنترانت ، مقسومًا إلى نسختين ، "الإصدار متعدد الوصلات" و "الإصدار المتعدد" ، بشكل عام مثل خدمة الويب ، هذه الخدمة ليست اتصالًا طويل الأجل ، يوصى باستخدام "إصدار متعدد الارتباط" ، إذا هو للحفاظ على التوصيل الوقت الطويل يقترح استخدام "نسخة مضاعفة".
يستخدم البرنامج التعليمي التالي "الإصدار المتعدد" كمثال لتوضيح كيفية استخدامه.
يتكون اختراق Intranet من ثلاثة أجزاء: العميل والخادم والجسر ؛
خلفية:
يطلب:
في المنزل ، يمكنك الوصول إلى المنفذ 80 من آلة الشركة A عن طريق الوصول إلى المنفذ 28080 من VPS.
خطوات:
تنفيذ على VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
مكتمل
خلفية:
يطلب:
املأ العنوان الموجود في واجهة رد اتصال صفحة الويب الخاصة بحساب تطوير WeChat: http://22.22.222/calback.php
بعد ذلك ، يمكنك الوصول إلى Calback.php تحت منفذ الكمبيوتر المحمول 80.
على سبيل المثال: يحل wx-dev.xxx.com إلى 22.22.22.22 ، ثم في دفتر الملاحظات الخاص بك nginx
قم بتكوين اسم المجال WX-dev.xxx.com إلى الدليل المحدد.
خطوات:
تنفيذ على VPS للتأكد من أن المنفذ 80 من VPs لا تشغله برامج أخرى.
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":80@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
تنفذ على الكمبيوتر المحمول الخاص بك
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
مكتمل
خلفية:
يطلب:
في المنزل ، يمكنك استخدام آلة الشركة A لتنفيذ خدمات دقة اسم المجال عن طريق تعيين DNS المحلية إلى 22.22.22.22.
خطوات:
تنفيذ على VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server --udp -r ":53@:53" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
مكتمل
خلفية:
يطلب:
لكي أكون آمنًا ، لا أريد الوصول إلى جهاز الشركة A على VPS ، ويمكنني الوصول إلى المنفذ 28080 من الجهاز في المنزل.
الوصول إلى المنفذ 80 من آلة الشركة A عبر نفق مشفر.
خطوات:
تنفيذ على VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
تنفيذ على آلة الشركة أ
proxy client -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
تنفذ على الكمبيوتر المنزلي الخاص بك
proxy server -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
مكتمل
نصيحة:
إذا تم توصيل العديد من العملاء بنفس الجسر في نفس الوقت ، فأنت بحاجة إلى تحديد مفتاح مختلف ، يمكن تعيينه بواسطة المعلمة -K ، و -K أن يكون أي سلسلة فريدة.
فقط كن الوحيد على نفس الجسر.
عندما يكون الخادم متصلاً بالجسر ، إذا كان هناك العديد من العملاء الذين يتصلون بنفس الجسر في نفس الوقت ، فأنت بحاجة إلى استخدام المعلمة -K لتحديد العميل.
فضح منافذ متعددة عن طريق تكرار المعلمة -r.
خلفية:
يطلب:
في المنزل ، يمكنك الوصول إلى المنفذ 80 من آلة الشركة A عن طريق الوصول إلى المنفذ 28080 من VPS.
في المنزل ، يمكنني الوصول إلى 21 منفذ شركة Company A عن طريق الوصول إلى المنفذ 29090 من VPS.
خطوات:
تنفيذ على VPS
proxy bridge -p ":33080" -C proxy.crt -K proxy.key
proxy server -r ":28080@:80" -r ":29090@:21" --k test -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
proxy client --k test -P "22.22.22.22:33080" -C proxy.crt -K proxy.key
مكتمل
التنسيق الكامل لـ -R هو: PROTOCOL://LOCAL_IP:LOCAL_PORT@[CLIENT_KEY]CLIENT_LOCAL_HOST:CLIENT_LOCAL_PORT
4.7.1 بروتوكول: TCP أو UDP.
على سبيل المثال: -r "udp://:10053@:53" -r "tcp://:10800@:1080" -r ":8080@:80"
إذا تم تحديد المعلمة -udp ، فإن البروتوكول الافتراضي إلى UDP ، ثم: -r ":8080@:80"
الافتراضيات إلى UDP ؛
إذا لم يتم تحديد المعلمة -OUDP ، فإن البروتوكول الافتراضي لـ TCP ، ثم: -r ":8080@:80"
الإعدادات الافتراضية إلى TCP ؛
4.7.2.
على سبيل المثال: -r "udp: //: 10053@[test1]: 53" -r "tcp: //: 10800@[test2]: 1080" -r ": 8080@: 80"
إذا تم تحديد المعلمة -K ، مثل -اختبار K ، ثم: -r ":8080@:80"
client_key الافتراضية للاختبار ؛
إذا لم يتم تحديد المعلمة -K ، ثم: -r ":8080@:80"
client_key الافتراضية إلى الافتراضي ؛
0.0.0.0
127.0.0.1
في بعض الأحيان ، لا يمكن للخادم أو العميل الوصول إلى الشبكة الخارجية مباشرة
يمكن أن تساعدك المعلمة -J في توصيل الخادم أو العميل بالجسر عبر HTTPS أو Socks5.
تنسيق المعلمة -J كما يلي:
كتابة الوكيل HTTPS:
يحتاج الوكيل إلى مصادقة ، اسم المستخدم: اسم المستخدم كلمة المرور: كلمة المرور
https: // username: password@host: port
الوكيل لا يتطلب المصادقة
https: // المضيف: منفذ
كتابة البروكسي Socks5:
يحتاج الوكيل إلى مصادقة ، اسم المستخدم: اسم المستخدم كلمة المرور: كلمة المرور
Socks5: // اسم المستخدم: Password@Host: Port
الوكيل لا يتطلب المصادقة
Socks5: // Host: Port
المضيف: اسم IP أو مجال الوكيل
المنفذ: منفذ الوكيل
عادةً ما سيستخدم عميل طلب HTTP IP ومنفذ الخادم لتعيين حقل المضيف ، ولكنه ليس هو نفسه المضيف الفعلي للواجهة الخلفية المتوقعة ، والذي يؤدي إلى تمرير TCP. ومع ذلك ، فإن الخلفية تعتمد على حقل المضيف لتحديد موقع --http-host
الافتراضي ولن يعمل --http-host
. معلمة --http-host
، ستتم X-Forwarded-For
رؤوس إلى رأس كل طلب X-Real-IP
.
تنسيق معلمة server
-HTTP -Host هو كما يلي:
--http-host www.test.com:80@2200
، إذا استمع الخادم إلى منافذ متعددة ، فما عليك سوى كرر المعلمة- --http-host
لتعيين المضيف لكل منفذ.
مثال:
على سبيل المثال ، يوفر العميل المحلي nginx ، 127.0.0.1:80 خدمة ويب ، والتي ترتبط باسم مجال local.com
.
ثم يمكن أن تكون معلمات بدء تشغيل الخادم كما يلي:
proxy server -P :30000 -r :[email protected]:80 --http-host local.com@2500
توضيح:
-r :[email protected]:80
و-- --http-host local.com:80@2500
المنفذ 2500 هو المنفذ الذي يستمع إليه الخادم محليًا.
عند استخدام بروتوكول HTTP لطلب IP: منفذ 2500 من الخادم ، سيتم تعيين حقل مضيف الرأس في HTTP على local.com
.
إذا قمت بتشغيل نظير لرسو الخادم بشكل منفصل ، فستكون لوحة التحكم في إدارة الوكيل.
ثم ابدأ الخادم وأضف المعلمة-خادم المعرف = معرف قاعدة التعيين لحساب حركة المرور.
دعم اختراق الإنترانت عند استيفاء شروط شبكة الخادم وشبكة العميل ، يتم توصيل الخادم والعميل مباشرة من خلال P2P.
عند بدء تشغيل الجسر ، يمكن استخدام المعلمة --p2p
.
إذا فشل ثقب P2P بين الخادم والعميل ، يتم تبديل بيانات نقل الجسر تلقائيًا.
يمكن أن يكون جسر Intranet Hearrate Bridge هو القائمة البيضاء.
A File Content ، يمكن أن يحتوي مفتاح File One Conduction فقط على القيمة السفلية الأبجدية ، وهو أمر لا يمكنه الاتصال بالعميل.
ب.
ج.
الافتراضي فارغ ، مما يسمح لجميع المفاتيح.
حكم من نوع SENAT ، من السهل التحقق مما إذا كانت الشبكة تدعم P2P ، يمكنك تنفيذ: proxy tools -a nattype
proxy help bridge
proxy help server
proxy help client
اِسْتَدْعَى:
Proxy Socks5 ، يدعم Connect ، بروتوكول UDP ، لا يدعم الربط ، ويدعم مصادقة اسم المستخدم وكلمة المرور.
*** يتم إيقاف تشغيل وظيفة UDP لـ Socks5 بشكل افتراضي --udp-port 0
ويمكن تشغيلها بواسطة- --udp
. يمثل --udp-port 0
0
يتم اختيار منفذ مجاني بشكل عشوائي ، أو يمكنك تحديد منفذ معين يدويًا.
proxy socks -t tcp -p "0.0.0.0:38080"
استمع إلى حجة المنفذ -p
يمكن أن يكون:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
استخدم المنفذ المحلي 8090 ، على افتراض أن وكيل Socks5 المنبع هو 22.22.22.22:8080
proxy socks -t tcp -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080"
يمكننا أيضًا تحديد ملف القائمة بالأبيض والأسود لاسم مجال موقع الويب ، واسم نطاق واحد واسم نطاق واحد ، هي القاعدة المطابقة هي أقصى المباراة ، على سبيل المثال: Baidu.com ، المباراة ينتقل اسم المجال مباشرة إلى وكيل المنبع ، لا يذهب اسم المجال للقائمة إلى وكيل المنبع ؛
proxy socks -p "0.0.0.0:8090" -T tcp -P "22.22.22.22:8080" -b blocked.txt -d direct.txt
الوكيل من المستوى 1 Socks (VPS ، IP: 22.22.22.22)
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
وكيل الجوارب الثانوية (لينكس المحلي)
proxy socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى منفذ الوكيل 38080 على VPS.
وكيل الجوارب الثانوية (النوافذ المحلية)
proxy.exe socks -t tcp -p ":8080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
ثم قم بتعيين نظام Windos الخاص بك ، الوكيل الذي يحتاج إلى الذهاب عبر برنامج الإنترنت الوكيل هو وضع Socks5 ، والعنوان هو: 127.0.0.1 ، المنفذ هو: 8080 ، يمكن للبرنامج الوصول إلى الإنترنت من خلال VPS من خلال القناة المشفرة.
المستوى 1 Socks Proxy VPS_01 ، IP: 22.22.22.22
proxy socks -t tls -p ":38080" -C proxy.crt -K proxy.key
الوكيل الجوارب الثانوية VPS_02 ، IP: 33.33.33.33
proxy socks -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
الوكيل 3 الجوارب (محلي)
proxy socks -t tcp -p ":8080" -T tls -P "33.33.33.33:28080" -C proxy.crt -K proxy.key
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى منفذ الوكيل 38080 على وكيل الجوارب من المستوى الأول.
بشكل افتراضي ، سيحدد الوكيل بذكاء ما إذا كان اسم مجال موقعه غير ممكن. .
proxy socks --always -t tls -p ":28080" -T tls -P "22.22.22.22:38080" -C proxy.crt -K proxy.key
الوصف: يتمثل مبدأ نقل SSH في استخدام وظيفة إعادة التوجيه لـ SSH ، أي بعد الاتصال بـ SSH ، يمكنك الوصول إلى العنوان الهدف من خلال وكيل SSH.
افترض أن هناك: VPS
منفذ الوكيل المحلي Socks5 28080 ، Execute:
proxy socks -T ssh -P "2.2.2.2:22" -u user -D demo -t tcp -p ":28080"
منفذ الوكيل المحلي Socks5 28080 ، Execute:
proxy socks -T ssh -P "2.2.2.2:22" -u user -S user.key -t tcp -p ":28080"
ثم الوصول إلى المنفذ المحلي 28080 هو الوصول إلى العنوان الهدف من خلال VPS.
بالنسبة لبروتوكول الوكيل Socks5 ، يمكننا إجراء مصادقة اسم المستخدم وكلمة المرور.
proxy socks -t tcp -p ":33080" -a "user1:pass1" -a "user2:pass2"
لعدة مستخدمين ، كرر المعلمة -a.
يمكن أيضًا وضعه في ملف بتنسيق "اسم المستخدم: كلمة المرور" ثم تحديده مع -F.
proxy socks -t tcp -p ":33080" -F auth-file.txt
بالإضافة إلى ذلك ، يدمج وكيل Socks5 أيضًا مصادقة API HTTP الخارجية.
ثم عندما يكون هناك اتصال مستخدم ، سيطلب الوكيل عنوان URL في وضع GET ، مع المعلمات الثلاثة التالية.
في حالات أخرى ، فشلت المصادقة.
على سبيل المثال:
proxy socks -t tcp -p ":33080" --auth-url "http://test.com/auth.php"
عندما يتصل المستخدم ، سيطلب الوكيل عنوان URL ("http://test.com/auth.php") في وضع GET.
أحضر أربع معلمات: المستخدم ، تمرير ، IP ، local_ip:
http://test.com/auth.php؟user= {user )&pass= {Pass)
المستخدم: اسم المستخدم
تمرير: كلمة المرور
IP: IP الخاص بالمستخدم ، على سبيل المثال: 192.168.1.200
local_ip: IP للخادم الذي يمكن الوصول إليه من قبل المستخدم ، على سبيل المثال: 3.3.3.3
إذا لم يكن هناك معلمة -A أو -f أو -Auth -url ، يتم إيقاف المصادقة.
يتطلب بروتوكول KCP المعلمة-KCP-Key لتعيين كلمة مرور لتشفير البيانات وفك تشفيرها.
المستوى 1 وكيل HTTP (VPS ، IP: 22.22.22.22)
proxy socks -t kcp -p ":38080" --kcp-key mypassword
وكيل HTTP الثانوي (Linux المحلي)
proxy socks -t tcp -p ":8080" -T kcp -P "22.22.22.22:38080" --kcp-key mypassword
ثم الوصول إلى المنفذ المحلي 8080 هو الوصول إلى منفذ الوكيل 38080 على VPS ، يتم إرسال البيانات من خلال بروتوكول KCP.
-معلمات DNS-Address و--DNS-TTL ، وتستخدم لتحديد DNS (-DNS-Address) المستخدمة من قبل الوكيل للوصول إلى اسم المجال.
والثواني التي تتميز بتذاكر ذاكرة التخزين المؤقت (--DNS-TTL) ، لتجنب تداخل DNS للنظام في الوكيل ، بالإضافة إلى وظيفة ذاكرة التخزين المؤقت يمكن أن تقلل أيضًا من وقت دقة DNS لتحسين سرعة الوصول.
على سبيل المثال:
proxy socks -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
يمكنك أيضًا استخدام --dns-interface
لتحديد عرض النطاق الترددي المستخدم لدقة DNS ، على سبيل المثال: --dns-interface eth0
، سوف يستخدم دقة DNS عرض النطاق الترددي ETH0 ، يجب ضبط هذه المعلمة على- --dns-address
تكون فعالة.
يمكن لوكيل الجوارب الوكيل تشفير بيانات TCP من خلال تشفير TLS وبروتوكول KCP على رأس TCP. تشفير AES256 ، تحتاج فقط إلى تحديد كلمة المرور عند استخدامها.
ينقسم التشفير إلى جزأين ، أحدهما هو ما إذا كان التشفير المحلي (-Z) وفك التشفير ، والآخر هو ما إذا كان الإرسال مع المنبع (-Z) مشفر أو فك تشفيره.
يتطلب التشفير المخصص أن يكون كلا الجانبين وكيلًا.
المستويين التاليين ، ثلاثة مستويات على سبيل المثال:
مثال ثانوي
تنفيذ على المستوى 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
التنفيذ الثانوي المحلي:
proxy socks -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
وبهذه الطريقة ، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080 ، يتم الوصول إلى موقع الويب الهدف من خلال الإرسال المشفر مع المنبع.
مثيلات ثلاثية
تنفيذ على المستوى 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -z demo_password -p :7777
تنفيذ على VPS الثانوية (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
التنفيذ المحلي من ثلاثة مستويات:
proxy socks -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
وبهذه الطريقة ، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080 ، يتم الوصول إلى موقع الويب الهدف من خلال الإرسال المشفر مع المنبع.
يمكن لوكيل الجوارب الوكيل تشفير بيانات TCP من خلال التشفير المخصص وبروتوكول TLS القياسي وبروتوكول KCP على رأس TCP.
ضغط البيانات ، أي وظيفة الضغط والتشفير المخصص و TLS | KCP يمكن استخدامها في تركيبة ، ويتم تقسيم الضغط إلى جزأين.
جزء منه هو انتقال الضغط المحلي (-M) ، والجزء هو ما إذا كان الإرسال مع المنبع (-M) مضغوط.
يتطلب الضغط أن يكون كلا الجانبين وكيلًا ، ويحمي الضغط أيضًا بيانات (تشفير) إلى حد ما.
المستويين التاليين ، ثلاثة مستويات على سبيل المثال:
مثال ثانوي
تنفيذ على المستوى 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
التنفيذ الثانوي المحلي:
proxy socks -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
وبهذه الطريقة ، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080 ، يتم الوصول إلى موقع الويب الهدف من خلال الضغط مع المنبع.
مثيلات ثلاثية
تنفيذ على المستوى 1 VPS (IP: 2.2.2.2):
proxy socks -t tcp -m -p :7777
تنفيذ على VPS الثانوية (IP: 3.3.3.3):
proxy socks -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
التنفيذ المحلي من ثلاثة مستويات:
proxy socks -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
وبهذه الطريقة ، عندما يتم الوصول إلى موقع الويب من خلال الوكيل المحلي 8080 ، يتم الوصول إلى موقع الويب الهدف من خلال الضغط مع المنبع.
يدعم وكيل Socks موازنة التحميل على المستوى العلوي ، ويمكن استخدام معلمات التكرار المتعددة في المنبع.
proxy socks --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
proxy socks --lb-method=leastconn --lb-retrytime 300 --lb-timeout 300 -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
proxy socks --lb-method=weight -T tcp -P 1.1.1.1:33080?w=1 -P 2.1.1.1:33080?w=2 -P 3.1.1.1:33080?w=1 -p :33080 -t tcp
proxy socks --lb-hashtarget --lb-method=hash -T tcp -P 1.1.1.1:33080 -P 2.1.1.1:33080 -P 3.1.1.1:33080 -p :33080 -t tcp
الحد الأقصى للسرعة هو 100 كيلو ، والذي يمكن تحديده بواسطة المعلمة -l
، على سبيل المثال: 100k 2000k 1m.
proxy socks -t tcp -p 2.2.2.2:33080 -l 100K
يمكن استخدام المعلمة --bind-listen
لفتح اتصال العميل مع IP البوابة ، واستخدام IP البوابة كـ IP الصادر للوصول إلى موقع الويب الهدف. IP Ingress.
proxy socks -t tcp -p 2.2.2.2:33080 --bind-listen
على الرغم من أن المعلمة المذكورة أعلاه --bind-listen
يمكن أن تحدد IP الصادر ، لا يمكن التدخل في entry IP
و --bind-ip
outgoing IP
من قبل البشر. المعلمة ، التنسيق: IP:port
على سبيل المثال: 1.1.1.1:8080
، [2000:0:0:0:0:0:0:1]:8080
. كرر المعلمة-- --bind-ip
.
على سبيل المثال ، يحتوي الجهاز على IP 5.5.5.5
و 6.6.6.6
ومراقبة منفذين 8888
و 7777
، والسيطرة كما يلي:
proxy socks -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
ثم منفذ وصول العميل 7777
، IP الصادر هو 5.5.5.5
، منفذ الوصول 8888
، IP الصادر هو 6.6.6.6
، إذا تم تعيين كلاهما- --bind-ip
و-- --bind- are set at the same time listen
، --bind-ip
له أولوية أعلى.
بالإضافة إلى ذلك ، يدعم جزء IP
من المعلمة --bind-ip
تحديد network interface name
، wildcards
، وأكثر من واحد.
--bind-ip eth0:7777
، ثم يقوم العميل بالوصول إلى منفذ 7777
، و IP Fegress هو IP لواجهة شبكة eth0.--bind-ip eth0.*:7777
، ثم يقوم العميل بالوصول إلى منفذ 7777
، ويكون IP Fegress أحد IPS من واجهة الشبكة التي تبدأ بـ eth0.
--bind-ip 192.168.?.*:7777
، ثم يقوم العميل بالوصول إلى منفذ 7777
، و IP الصادر هو كل IPs للجهاز ، ومطابقة IP لعام 192.168.?.*
تم اختياره بشكل عشوائي.--bind-ip pppoe??,192.168.?.*:7777
، ثم يقوم العميل بالوصول إلى المنفذ 7777
، المنصة IP هو اسم واجهة شبكة الجهاز مطابقة 192.168.?.*
pppoe??
*
WildCard 0 إلى أي عدد من الأحرف ، و ?
--bind-refresh
لتحديد الفاصل الزمني لتحديث معلومات واجهة الشبكة المحلية ، الافتراضي هو 5
، الوحدة هي الثانية.يدعم Socks5 مصادقة متتالية ، ويمكن -A تعيين معلومات المصادقة المنبع.
المنبع:
proxy socks -t tcp -p 2.2.2.2:33080 -a user:pass
محلي:
proxy socks -T tcp -P 2.2.2.2:33080 -A user:pass -t tcp -p :33080
بشكل افتراضي ، فإن المعلمة -C ، -K هي المسار إلى شهادة CRT وملف المفتاح.
إذا كانت بداية BASE64: // ، فإن البيانات الأخيرة تعتبر BASE64 مشفرة وسيتم استخدامها بعد فك التشفير.
إعداد الوضع الذكي ، يمكن أن يكون ذكي | الوالد | الوالد.
الافتراضي هو: الوالد.
معنى كل قيمة كما يلي:
--intelligent=direct
، لا يتم توصيل الأهداف في الحظر مباشرة.
--intelligent=parent
، فإن الهدف غير الموجود في المباشر يذهب إلى المستوى الأعلى.
--intelligent=intelligent
، محظور ومباشر ليس له أهداف ، حدد بذكاء ما إذا كان سيتم استخدام هدف الوصول إلى المنبع.
بشكل افتراضي ، رقم منفذ وظيفة UDP لـ Socks5 ، يتم تثبيت الوكيل في طلب rfc1982 draft
، والذي يتم تحديده بشكل عشوائي أثناء عملية مصافحة البروتوكول ولا يلزم تحديده مسبقًا.
ومع ذلك ، في بعض الحالات ، يمكنك إصلاح --udp-port port number
وظيفة UDP.
proxy socks -t tcp -p "0.0.0.0:38080" --udp-port 38080
بشكل افتراضي ، تعمل وظيفة UDP في وكيل Socks5 وفقًا لمواصفات Socks5 RFC 1928 --udp-compat
يمكن إضافة المعلمة --udp-compat
لتنشيط وضع التوافق لوظيفة Socks5 UDP.
بالإضافة إلى ذلك ، يمكن استخدام المعلمة -udp-gc
لتعيين الحد الأقصى لوقت الخمول لـ UDP.
proxy help socks
يستخدم تحويل بروتوكول الوكيل المفوض الفرعي SPS ضع وكيل HTTP (S) الحالي أو الوكيل Socks5 أو SS Proxy يتم تحويله إلى منفذ يدعم كل من الوكلاء HTTP (S) و Socks5 و SS ، ويدعم الوكيل HTTP (S) الوكيل إلى الأمام والوكالة العكسية العكسية (SNI) ، وكيل Socks5 المحول ، لا تزال وظيفة UDP مدعومة عندما يكون المستوى العلوي هو Socks5 أو SS ؛ يتم دعم اتصال السلسلة ، أي يمكن دعم مستويات عقدة SPS المتعددة.
أساليب التشفير التي تدعمها وظيفة ss
هي: AES-128-CFB ، AES-128-CTR ، AES-128-GCM ، AES-192-CFB ، AES-192-CTR ، AES-192-GCM ، AES-256- CFB ، AES-256-CTR ، AES-256-GCM ، BF-CFB ، Cast5-CFB ، Chacha20 ، Chacha20-IETF ، Chacha20-IETF-POLY1305 ، DES-CFB ، RC4-MD5 ، RC4-MD5-6 ، SALSA20 ، XCHACHA20
استمع إلى حجة المنفذ -p
يمكن أن يكون:
-p ":8081" listen on 8081
-p ":8081,:8082" listen on 8081 and 8082
-p ":8081,:8082,:9000-9999" listen on 8081 and 8082 and 9000 and 9001 to 9999, 1002 total ports
يتم إيقاف تشغيل وظيفة UDP --udp
SS بشكل افتراضي ويمكن تشغيلها بواسطة --ssudp
. يمكن تحسين الأداء عن 0
إصلاح --udp-port 0
.
لنفترض أن هناك بالفعل وكيلًا طبيعيًا لـ HTTP: 127.0.1:8080. 192-CFB ، SS Password: Pass.
الأمر كما يلي:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
لنفترض أن هناك بالفعل وكيل TLS HTTP: 127.0.0.1:8080. File. ، SS Encryption: AES-192-CFB ، SS Password: Pass.
الأمر كما يلي:
proxy sps -S http -T tls -P 127.0.0.1:8080 -t tcp -p :18080 -C proxy.crt -K proxy.key -h aes-192-cfb -j pass
لنفترض أن هناك بالفعل وكيل KCP HTTP (كلمة المرور هي: DEMO123): 127.0.0.1:8080 ، الآن نقوم بتحويله إلى وكيل عادي يدعم كل من HTTP (S) و Socks5 و SS. ، تشفير SS: AES-192-CFB ، SS Password: Pass.
الأمر كما يلي:
proxy sps -S http -T kcp -P 127.0.0.1:8080 -t tcp -p :18080 --kcp-key demo123 -h aes-192-cfb -j pass
لنفترض أن هناك بالفعل وكيل Socks5 العادي: 127.0.0.1:8080 ، الآن نقوم بتحويله إلى وكيل مشترك يدعم كل من HTTP (S) و SS. ، كلمة مرور SS: تمرير.
الأمر كما يلي:
proxy sps -S socks -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
لنفترض أن هناك بالفعل وكيل TLS Socks5: 127.0.0.1:8080 ، والآن نقوم بتحويله إلى وكيل مشترك يدعم كل من HTTP (S) و Socs5 و SS. : AES-192-CFB ، SS Password: Pass.
الأمر كما يلي:
proxy sps -S socks -T tls -P 127.0.0.1:8080 -t tcp -p :18080 -C proxy.crt -K proxy.key -h aes-192-cfb -j pass
Suppose there is already a kcp socks5 proxy (password: demo123): 127.0.0.1:8080, now we turn it into a common proxy that supports both http(s) and socks5 and ss. The converted local port is 18080, ss Encryption method: aes-192-cfb, ss password: pass.
The command is as follows:
proxy sps -S socks -T kcp -P 127.0.0.1:8080 -t tcp -p :18080 --kcp-key demo123 -h aes-192-cfb -j pass
SPS upstream and local support ss protocol, the upstream can be SPS or standard ss service.
SPS locally provides HTTP(S)SOCKS5SPS three defaults. When the upstream is SOCKS5, the converted SOCKS5 and SS support UDP.
Suppose there is already a normal SS or SPS proxy (ss is enabled, encryption: aes-256-cfb, password: demo): 127.0.0.1:8080, now we turn it to support both http(s) and socks5 and The ordinary proxy of ss, the converted local port is 18080, the converted ss encryption mode: aes-192-cfb, ss password: pass.
The command is as follows:
proxy sps -S ss -H aes-256-cfb -J pass -T tcp -P 127.0.0.1:8080 -t tcp -p :18080 -h aes-192-cfb -j pass
.
The above mentioned multiple sps nodes can be connected to build encrypted channels in a hierarchical connection, assuming the following vps and the home PC.
Vps01:2.2.2.2
Vps02:3.3.3.3
Now we want to use pc and vps01 and vps02 to build an encrypted channel. This example uses tls encryption or kcp. Accessing local 18080 port on the PC is to access the local 8080 port of vps01.
First on vps01 (2.2.2.2) we run a locally accessible http(s) proxy and execute:
proxy http -t tcp -p 127.0.0.1:8080
Then run a sps node on vps01 (2.2.2.2) and execute:
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tls -p :8081 -C proxy.crt -K proxy.key
Then run a sps node on vps02 (3.3.3.3) and execute:
proxy sps -S http -T tls -P 2.2.2.2:8081 -t tls -p :8082 -C proxy.crt -K proxy.key
Then run a sps node on the pc and execute:
proxy sps -S http -T tls -P 3.3.3.3:8082 -t tcp -p :18080 -C proxy.crt -K proxy.key
تنفيذ.
Sps supports http(s)socks5 proxy authentication, which can be cascaded and has four important pieces of information:
1: The user sends the authentication information user-auth
.
2: Set the local authentication information local-auth
.
3: Set the connection authentication information 'parent-auth used by the upstream. 4: The authentication information
auth-info-to-parent` that is finally sent to the upstream.
Their situation is as follows:
User-auth | local-auth | parent-auth | auth-info-to-paren |
---|---|---|---|
نعم/لا | نعم | نعم | From parent-auth |
نعم/لا | لا | نعم | From parent-auth |
نعم/لا | نعم | لا | لا |
لا | لا | لا | لا |
نعم | لا | لا | From user-auth |
For the sps proxy we can perform username and password authentication. The authenticated username and password can be specified on the command line.
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -a "user1:pass1:0:0:" -a "user2:pass2:0:0: "
For multiple users, repeat the -a parameter.
Can also be placed in a file, the format is one line a username: password: number of connections: rate: upstream
, and then specified with -F.
proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -F auth-file.txt
If the upstream has authentication, the lower level can set the authentication information with the -A parameter, for example:
upstream: proxy sps -S http -T tcp -P 127.0.0.1:8080 -t tcp -p ":33080" -a "user1:pass1:0:0:" -a "user2:pass2:0: 0:"
Subordinate: proxy sps -S http -T tcp -P 127.0.0.1:8080 -A "user1:pass1" -t tcp -p ":33080"
For more details on certification, please refer to 9.API Certification
and 10.Local Certification
If there are multiple upstreams, they can be specified by multiple -Ps.
مثل:
proxy sps -P http://127.0.0.1:3100 -P socks5://127.0.0.1:3200
The complete format of -P
is as follows:
protocol://a:[email protected]:33080#1
Each section is explained below:
protocol://
is the protocol type, possible types and contains the following:
Http is equivalent to -S http -T tcp
Https is equivalent to -S http -T tls --parent-tls-single , which is http(s) proxy over TLS
Https2 is equivalent to -S http -T tls
Socks5 is equivalent to -S socks -T tcp
Socks5s is equivalent to -S socks -T tls --parent-tls-single , which is socks over TLS
Socks5s2 is equivalent to -S socks -T tls
Ss is equivalent to -S ss -T tcp
Httpws is equivalent to -S http -T ws
Httpwss is equivalent to -S http -T wss
Socks5ws is equivalent to -S socks -T ws
Socks5wss is equivalent to -S socks -T wss
a:b
is the username and password of the proxy authentication. If it is ss, a
is the encryption method, b
is the password, and no username password can be left blank, for example: http://2.2.2.2:33080
If the username and password are protected, special symbols can be encoded using urlencode.
2.2.2.2:33080
is the upstream address, the format is: IP (or domain name): port
, if the underlying is ws/wss protocol can also bring the path, such as: 2.2.2.2: 33080/ws
;
You can also set the encryption method
and password
of wswss
by appending the query parameters m
and k
, for example: 2.2.2.2:33080/ws?m=aes-192-cfb&k=password
#1
When multiple upper-level load balancing is a weighting strategy, the weights are rarely used.
The proxy sps proxy can encrypt tcp data through tls standard encryption and kcp protocol on top of tcp, in addition to support after tls and kcp
Custom encryption, that is, custom encryption and tls|kcp can be used in combination, internally using AES256 encryption, only need to define it when using
A password can be used, the encryption is divided into two parts, one part is whether the local (-z) encryption and decryption, and the part is the encryption and decryption with the upstream (-Z) transmission.
Custom encryption requires both sides to be proxy.
The following two levels, three levels for example:
Suppose there is already an http(s) proxy: 6.6.6.6:6666
Secondary instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -S http -T tcp -P 6.6.6.6:6666 -t tcp -z demo_password -p :7777
Local secondary execution:
proxy sps -T tcp -P 2.2.2.2:777 -Z demo_password -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through encrypted transmission with the upstream.
Three-level instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -S http -T tcp -P 6.6.6.6:6666 -t tcp -z demo_password -p :7777
Execute on the secondary vps (ip: 3.3.3.3):
proxy sps -T tcp -P 2.2.2.2:7777 -Z demo_password -t tcp -z other_password -p :8888
Local three-level execution:
proxy sps -T tcp -P 3.3.3.3:8888 -Z other_password -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through encrypted transmission with the upstream.
The proxy sps proxy can encrypt tcp data through custom encryption and tls standard encryption and kcp protocol on top of tcp. It can also be used before custom encryption.
Compress the data, that is, the compression function and the custom encryption and tls|kcp can be used in combination, and the compression is divided into two parts.
Part of it is local (-m) compression transmission, and part is whether the transmission with the upstream (-M) is compressed.
Compression requires both sides to be proxy, and compression also protects (encrypts) data to some extent.
The following two levels, three levels for example:
Secondary instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -t tcp -m -p :7777
Local secondary execution:
proxy sps -T tcp -P 2.2.2.2:777 -M -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through compression with the upstream.
Three-level instance
Execute on level 1 vps (ip: 2.2.2.2):
proxy sps -t tcp -m -p :7777
Execute on the secondary vps (ip: 3.3.3.3):
proxy sps -T tcp -P 2.2.2.2:7777 -M -t tcp -m -p :8888
Local three-level execution:
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080
In this way, when the website is accessed through the local agent 8080, the target website is accessed through compression with the upstream.
By default, SPS supports http(s) and socks5 two proxy protocols. We can disable a protocol by parameter.
على سبيل المثال:
Disable the HTTP(S) proxy function to retain only the SOCKS5 proxy function, parameter: --disable-http
.
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080 --disable-http
Disable the SOCKS5 proxy function to retain only the HTTP(S) proxy function, parameter: --disable-socks
.
proxy sps -T tcp -P 3.3.3.3:8888 -M -t tcp -p :8080 --disable-socks
Suppose there is a SOCKS5 upstream:
proxy socks -p 2.2.2.2:33080 -z password -t tcp
SPS lower level, speed limit 100K
proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp -p :33080
It can be specified by the -l
parameter, for example: 100K 2000K 1M . 0 means no limit.
The --bind-listen
parameter can be used to open the client connection with the portal IP, and use the portal IP as the outgoing IP to access the target website. If the ingress IP is an intranet IP, the egress IP does not use the ingress IP.
proxy sps -S socks -P 2.2.2.2:33080 -T tcp -Z password -l 100K -t tcp --bind-listen -p :33080
Although the above --bind-listen
parameter can specify the outgoing IP, the entry IP
and outgoing IP
cannot be interfered by humans. If you want the ingress IP to be different from the egress IP, you can use the --bind-ip
parameter, format: IP:port
, for example: 1.1.1.1:8080
, [2000:0:0:0:0:0:0:1]:8080
. For multiple binding requirements, you can repeat the --bind-ip
parameter.
For example, the machine has IP 5.5.5.5
, 6.6.6.6
, and monitors two ports 8888
and 7777
, the command is as follows:
proxy sps -t tcp -p :8888,:7777 --bind-ip 5.5.5.5:7777 --bind-ip 6.6.6.6:8888
Then the client access port 7777
, the outgoing IP is 5.5.5.5
, access port 8888
, the outgoing IP is 6.6.6.6
, if both --bind-ip
and --bind- are set at the same time listen
, --bind-ip
has higher priority.
In addition, the IP
part of the --bind-ip
parameter supports specifying the network interface name
, wildcards
, and more than one. The details are as follows:
--bind-ip eth0:7777
, then the client accesses the 7777
port, and the egress IP is the IP of the eth0 network interface.--bind-ip eth0.*:7777
, then the client accesses the 7777
port, and the egress IP is a randomly selected one of the network interface IPs starting with eth0.
.--bind-ip 192.168.?.*:7777
, then the client accesses the 7777
port, and the outgoing IP is all the IPs of the machine, matching the IP of 192.168.?.*
A randomly selected one.--bind-ip pppoe??,192.168.?.*:7777
, then the client accesses the port 7777
, The outgoing IP is the machine's network interface name matching pppoe??
It is a randomly selected one among all IPs of the machine that matches 192.168.?.*
.*
represents 0 to any number of characters, and ?
represents 1 character.--bind-refresh
parameter to specify the interval to refresh the local network interface information, the default is 5
, the unit is second.By default, the -C, -K parameter is the path to the crt certificate and the key file.
If it is the beginning of base64://, then the latter data is considered to be base64 encoded and will be used after decoding.
A sps port can complete the full-featured proxy httpsocksss
function.
The following command is to open the http(s)sssocks service with one click, and enable the udp of socks5 and the udp of ss at the same time.
proxy sps -p: 33080 --ssudp --udp --udp-port 0
The https(s)socks5ss proxy function provided by the sps function, the client connects to the specified "target" through the sps proxy. This "target" is generally a website or an arbitrary tcp address.
The website "target" is generally foo.com: 80, foo.com: 443, sps supports the use of the --rewrite parameter to specify a "target" redirection rule file, redirect the target, the client is non-perceived,
For example, if you redirect to "target": demo.com:80 to 192.168.0.12:80, then the client visits the website demo.com, in fact, the website service provided by 192.168.0.12.
Example of a "target" redirection rule file:
# example
Www.a.com:80 10.0.0.2:8080
**.b.com:80 10.0.0.2:80
192.168.0.11:80 10.0.0.2:8080
When sps is an independent service, an additional local socks5 service will be opened to occupy a random port. Now the parameter --self-port
can be manually specified when needed. The default is 0 to use random.
By default, the port number of the UDP function of ss's socks5 is specified by the rfc1982 draft
. It is randomly specified during the protocol handshake process and does not need to be specified in advance.
However, in some cases, you need to fix the UDP function port. You can fix the port number of the UDP function by the parameter --udp-port port_number
, for example:
proxy sps -t tcp -p "0.0.0.0:38080" --udp-port 38081
It should be noted that the ss function of sps also has UDP function, and the UDP port of ss is the same as the tcp port, so avoid the conflict between the UDP port of socks5 and the UDP port of ss.
To specify a port that is different from the tcp port.
The sps mode supports the iptables transparent forwarding support of the Linux system, which is commonly referred to as the iptables transparent proxy. If a iptables transparent proxy is performed on the gateway device, the device that is connected through the gateway can realize a non-aware proxy.
Example start command:
proxy sps --redir -p :8888 -P httpws: //1.1.1.1:33080
Here it is assumed that there is an http superior proxy 1.1.1.1:33080, which uses ws to transmit data.
Then add iptables rules, here are the reference rules:
# upstream proxy server IP address:
proxy_server_ip = 1.1.1.1
# Router running proxy listening port:
proxy_local_port = 33080
# There is no need to modify the following
# create a new chain named PROXY
iptables -t nat -N PROXY
# Ignore your PROXY server's addresses
# It's very IMPORTANT, just be careful。
iptables -t nat -A PROXY -d $proxy_server_ip -j RETURN
# Ignore LANs IP address
iptables -t nat -A PROXY -d 0.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A PROXY -d 169.254.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A PROXY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A PROXY -d 224.0.0.0/4 -j RETURN
iptables -t nat -A PROXY -d 240.0.0.0/4 -j RETURN
# Anything to port 80 443 should be redirected to PROXY's local port
iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports $proxy_local_port
# Apply the rules to nat client
iptables -t nat -A PREROUTING -p tcp -j PROXY
# Apply the rules to localhost
iptables -t nat -A OUTPUT -p tcp -j PROXY
By default, the UDP functionality of the SOCKS5 proxy in the proxy operates in accordance with the SOCKS5 RFC 1928 specification. However, there are certain SOCKS5 clients that do not adhere to the specified rules. To ensure compatibility with such clients, the --udp-compat
parameter can be added to activate the compatibility mode for SOCKS5 UDP functionality.
Additionally, the -udp-gc
parameter can be utilized to set the maximum idle time for UDP. When this time threshold is exceeded, UDP connections will be released.
The --dns-address
and --dns-ttl
parameters are used to specify the dns used by the proxy to access the domain name ( --dns-address
) As well as the number of seconds for caching the parsing results (--dns-ttl) to avoid the interference of the system dns on the proxy. The additional caching function can also reduce the dns parsing time and improve the access speed. Translation: Agent sps -p ":33080" --dns-address "8.8.8.8:53" --dns-ttl 300
You can also use the parameter --dns-interface
to specify the bandwidth used for dns resolution, for example: --dns-interface eth0
, dns resolution will use the eth0 bandwidth, this parameter must be set to --dns-address
to تكون فعالة.
proxy help sps
Many functions of the proxy support the kcp protocol. Any function that uses the kcp protocol supports the configuration parameters described here.
Therefore, the KCP configuration parameters are introduced here.
There are a total of 17 KCP configuration parameters, you can not set them, they have default values, if for the best effect,
You need to configure the parameters according to your own network conditions. Because the kcp configuration is complex, it requires a certain network basics.
If you want to get more detailed configuration and explanation of kcp parameters, please search for yourself. The command line name for each parameter, along with the default values and simple function descriptions are as follows:
--kcp-key="secrect" pre-shared secret between client and server
--kcp-method="aes" encrypt/decrypt method, can be: aes, aes-128, aes-192, salsa20, blowfish,
Twofish, cast5, 3des, tea, xtea, xor, sm4, none
--kcp-mode="fast" profiles: fast3, fast2, fast, normal, manual
--kcp-mtu=1350 set maximum transmission unit for UDP packets
--kcp-sndwnd=1024 set send window size(num of packets)
--kcp-rcvwnd=1024 set receive window size(num of packets)
--kcp-ds=10 set reed-solomon erasure coding - datashard
--kcp-ps=3 set reed-solomon erasure coding - parityshard
--kcp-dscp=0 set DSCP(6bit)
--kcp-nocomp disable compression
--kcp-acknodelay be carefull! flush ack immediately when a packet is received
--kcp-nodelay=0 be carefull!
--kcp-interval=50 be carefull!
--kcp-resend=0 be carefull!
--kcp-nc=0 be carefull! no congestion
--kcp-sockbuf=4194304 be carefull!
--kcp-keepalive=10 be carefull!
نصيحة:
Parameters: -- four fast3, fast2, fast, normal modes in kcp-mode,
Equivalent to setting the following four parameters:
Normal: --nodelay=0 --interval=40 --resend=2 --nc=1
Fast : --nodelay=0 --interval=30 --resend=2 --nc=1
Fast2: --nodelay=1 --interval=20 --resend=2 --nc=1
Fast3: --nodelay=1 --interval=10 --resend=2 --nc=1
DNS is known as the service provided by UDP port 53, but with the development of the network, some well-known DNS servers also support TCP mode dns query, such as Google's 8.8.8.8, the DNS anti-pollution server principle of the proxy is to start a proxy DNS proxy locally. Server, which uses TCP to perform dns query through the upstream agent. If it communicates with the upstream agent, it can perform secure and pollution-free DNS resolution. It also supports independent services, concurrent parsing, and enhanced enhanced hosts file function to support flexible concurrent parsing and forwarding.
Dns resolution order:
نصيحة:
The host file format specified by the --hosts parameter is the same as the system hosts file, and the domain name supports wildcards. You can refer to the hosts file.
The parsing forwarding rule file specified by the --forward parameter can be referenced to the resolve.rules file. The domain name supports wildcards. It supports multiple dns servers for each domain name to be parsed concurrently. Whoever resolves the fastest resolution will use the resolution result.
The -q parameter can specify multiple remote dns servers to perform concurrent parsing. Whoever resolves the fastest parsing success, the default is: 1.1.1.1, 8.8.8.8, 9.9.9.9, multiple comma-separated,
For example, you can also bring ports: 1.1.1.1, 8.8.8.8#53, 9.9.9.9
If you are a standalone service, you don't need a upstream:
Can perform:
proxy dns --default system -p :5353
أو
proxy dns --default direct -p :5353
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S http -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
Local execution:
proxy dns -S socks -T tcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides DNS resolution.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S http -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t tls -C proxy.crt -K proxy.key -p :33080
Local execution:
proxy dns -S socks -T tls -P 2.2.2.2:33080 -C proxy.crt -K proxy.key -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t kcp -p :33080
Local execution:
proxy dns -S http -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080
Local execution:
proxy dns -S socks -T kcp -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy http -t tcp -p :33080 -z password
Local execution:
proxy dns -S http -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
Suppose there is a upstream agent: 2.2.2.2:33080
The commands executed by the upstream agent are:
proxy socks -t kcp -p :33080 -z password
Local execution:
proxy dns -S socks -T tcp -Z password -P 2.2.2.2:33080 -p :53
Then the local UDP port 53 provides a secure anti-pollution DNS resolution function.
The proxy's http(s)/socks5/sps proxy function supports user-to-agent access via the API.
user
or client ip
or server port
. The proxy's http(s)/socks5/sps proxy API function is controlled by three parameters: --auth-url
and --auth-nouser
and --auth-cache
.
The parameter --auth-url
is the HTTP API interface address. When the client connects, the proxy will request the url in GET mode, with the following parameters. If the HTTP status code 204 is returned, the authentication is successful. In other cases, the authentication fails.
An example of a complete request API:
http://test.com/auth.php?user=a&pass=b&client_addr=127.0.0.1:49892&local_addr=127.0.0.1:8100&target=http%3A%2F%2Fwww.baidu.com&service=http&sps=0
user and pass
When the proxy turns on authentication, here is the username and password provided by the client.
client_addr
The address used by the client to access the proxy, format IP: port.
local_addr
The proxy address accessed by the client, format IP: port.
service
Proxy type, divided into: http, socks.
Whether the sps
proxy is provided by sps, 1: yes, 0: no.
target
The target to be accessed by the client. If it is an http(s) proxy, the target is the specific url accessed; if it is a socks5 proxy, the target is empty.
Suppose --auth-url http://127.0.0.1:333/auth.php points to a php interface address.
The contents of auth.php are as follows:
<?php
#all users and password
$ alluser =[
" user1 " => " pass1 " ,
" user2 " => " pass2 " ,
" user3 " => " pass3 " ,
" user4 " => " pass4 " ,
];
$ proxy_ip = $ _GET [ ' local_addr ' ];
$ user_ip = $ _GET [ ' client_addr ' ];
$ service = $ _GET [ ' service ' ];
$ is_sps = $ _GET [ ' sps ' ]== ' 1 ' ;
$ user = $ _GET [ ' user ' ];
$ pass = $ _GET [ ' pass ' ];
$ target = $ _GET [ ' target ' ];
//business checking
//....
$ ok = false ;
foreach ( $ alluser as $ dbuser => $ dbpass ) {
if ( $ user == $ dbuser && $ pass == $ dbpass ){
$ ok = true ;
break ;
}
}
//set the authentication result
if ( $ ok ){
header ( " userconns:1000 " );
header ( " ipconns:2000 " );
header ( " userrate:3000 " );
header ( " iprate:8000 " );
header ( " userqps:5 " );
header ( " ipqps:2 " );
header ( " upstream:http://127.0.0.1:3500?parent-type=tcp " );
header ( " outgoing:1.1.1.1 " );
header ( " userTotalRate:1024000 " );
//header("ipTotalRate:10240");
//header("portTotalRate:10240");
//header("RotationTime:60");
header ( " HTTP/1.1 204 No Content " );
}
userconns
: The maximum number of connections for the user, not limited to 0 or not set this header.
ipconns
: The maximum number of connections for the user IP, not limited to 0 or not set this header.
userrate
: User's single TCP connection rate limit, in bytes/second, is not limited to 0 or does not set this header.
iprate
: The single TCP connection rate limit of the client IP, in bytes/second, not limited to 0 or not set this header.
userqps
: The maximum number of connections per second (QPS) for the user, not limited to 0 or not set this header.
ipqps
: The maximum number of connections per second (QPS) for the client IP, not limited to 0 or not set this header.
upstream
: The upstream used, not empty, or not set this header.
outgoing
: The outgoing IP used. This setting is only effective when the upstream is empty. The IP set here must be owned by the machine where the proxy is located, otherwise, the proxy will not function properly. Starting from version v13.2
, outgoing
supports multiple subnet formats separated by commas. The proxy will randomly select an IP from the subnet as the outgoing IP. This randomness will also be keep when authentication cache is enabled. The following formats are supported for subnets:
192.168.1.1
, Description: Single IP, IPv43001:cb2::
, Description: Single IP, IPv6192.168.1.1/24
, Description: CIDR format subnet, IPv43001:cb2::/126
, Description: CIDR format subnet, IPv6192.168.1.1-192.168.1.200
, Description: IP range, IPv42311:ca2::-2311:ca2::10
, Description: IP range, IPv6 Example: 192.16.1.1,192.161.1.2,192.168.1.2-192.168.1.255
userTotalRate
: Limit the user
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
ipTotalRate
:Limit the client ip
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
portTotalRate
:Limit the server port
total bandwidth speed (bytes per second), unit is byte, not limited to 0 or not set this header.
RotationTime
: (requires version >= v13.2)
Controls the time interval, in seconds, for randomly selecting the outgoing IP. Leave it blank or unset this header if not needed.When the outgoing returned by the API is a subnet, and if you don't want the proxy to randomly select a new IP for each client connection, you can use this parameter to control the time interval for random IP selection. If within the interval period, the previously selected IP will be used. If the API does not return the RotationTime
header or if RotationTime
is set to 0, the proxy will randomly select an IP from the outgoing subnet as the outgoing IP for each client connection.
userrate
、 iprate
and userTotalRate
、 ipTotalRate
、 portTotalRate
can be set at same time, for example: set userrate
with 1024000 to limit the user's total bandwidth speed to 1M/s of user's all tcp connections. And set userrate
with 102400 to limit the user one tcp connection speed to 100K/s.userTotalRate
、 ipTotalRate
、 portTotalRate
set at same time, the valid order is : userTotalRate
-> ipTotalRate
-> portTotalRate
userTotalRate
、 portTotalRate
set at same time, and set --auth-nouser
,all clients that not send username will be as an "empty username" user,they are using a same limiter. --auth-url
is required to provide the user name and password. If you do not need the client to provide the username and password, and authenticate, you can add --auth-nouser
. The visit will still access the authentication address --auth-url
for authentication. Only the $user authentication username and the $pass authentication password received in the php interface are empty when client didn't send username and password.--auth-cache
authentication cache, cache the authentication result for a certain period of time, improve performance, reduce the pressure on the authentication interface, --auth-cache unit seconds, default 0, set 0 to close the cache.--auth-cache
only caches the results of successful authentication and does not cache the results of failed authentication. If you need to cache the failed authentication results for a certain period of time, It can be set through the parameter -auth-fail-cache
to improve performance and reduce the pressure on the authentication interface. The unit of --auth-fail-cache is seconds. The default is 0. Setting 0 turns off the cache. sps
is 0.http://127.0.0.1:3100?argk=argv
socks5://127.0.0.1:3100?argk=argv
Explanation: http://
, socks5://
is fixed, 127.0.0.1:3100
is the address of the upstream
When sps
is 1.
Upstream supports socks5, http(s) proxy, support authentication, format: protocol://a:[email protected]:33080?argk=argv
, please refer to SPS chapter for details, multiple upstreams , the description of the -P
parameter.
Parameters, ?
followed by argk=argv
are parameters: parameter name = parameter value, multiple parameters are connected with &
.
All the supported parameters are as follows, and the meaning of the command line with the same name is the same.
4.Upstream supports multiple instances, regardless of whether SPS is 1 or 0, and they are separated by semicolons ;. When connecting to an upstream, by default, one upstream is randomly chosen. However, it supports setting the weight parameter for each upstream. If the weight is set for any upstream, all upstreams must have the weight parameter set. The weight must be greater than 0; otherwise, the weight is considered invalid, and random selection is applied. This selection logic is also working after the authentication cache is ممكّن.
Examples of multiple upstreams:
http://127.0.0.1:3100?argk=argv;http://127.0.0.2:3100?argk=argv
http://127.0.0.1:3100?argk=argv&weight=10;http://127.0.0.2:3100?argk=argv&weight=20
Weight selection logic:
When a weight is set for an upstream, it divides the total weight among the upstreams based on their order. For example, if there are two upstreams with weights 10 and 20 respectively, the total weight is 30. The first upstream's weight range is 1-10, and the second upstream's weight range is 11-30. This logic extends to more upstreams. Each time, a random number within the total weight range is chosen, and the corresponding upstream is selected based on this number's range.
The proxy's http (s) / socks5 / sps / tcp / udp proxy function supports traffic reporting. You can set an http interface address through the parameter --traffic-url
. The proxy will report the traffic used for this connection to this address.Specifically, the proxy sends an HTTP to GET request to the HTTP URL address set by --traffic-url
. There are two reporting modes, which can be specified by the --traffic-mode
parameter. It can be reported in the normal mode or in the fast mode.
Report in normal
normal mode
When the connection is released, the proxy will report the traffic used for this connection to this --traffic-url
address.
Report in fast
mode
For each connection that has been established, the proxy will timely
report the traffic generated by this connection to this --traffic-url
address.
Timing
defaults to 5 seconds, and you can modify Timing
to the appropriate number of seconds via the parameter --traffic-interval
.
Report in fast
global mode
By default, if the API can't handle high concurrency report access, you can use the fast global mode, Use the parameter --fast-global
to open, this parameter is only valid when --traffic-mode=fast
. In fast global mode, for a --traffic-url
, no matter how many concurrent connections there are, only have one reporter, and the reporting interval is 5 seconds. In this mode, the reporting request method is POST
, Content-Type
is application/json
, the post body data is JSON Array
, example: [{},{}]
, the keys of object in the array are same with the following Reqeust parameter description
.
The traffic reporting function combined with the above API authentication function can control the user's traffic usage in real time. The traffic is reported to the interface. The interface writes the traffic data to the database, and then the authentication API queries the database to determine the traffic usage and determine whether the user can be successfully authenticated.
The following is a complete URL request example:
http://127.0.0.1:33088/user/traffic?bytes=337&client_addr=127.0.0.1%3A51035&id=http&server_addr =127.0.0.1%3A33088&target_addr=myip.ipip.net%3A80&username=a
Request parameter description:
id
: service id flag.
server_addr
: proxies's address requested by the client, format: IP: port.
client_addr
: client address, format: IP: port.
target_addr
: target address, format: "IP: port", when tcp / udp proxy, this is empty.
username
: proxy authentication user name, this is empty when tcp / udp proxy.
bytes
: the number of traffic bytes used by the user.
out_local_addr
: outgoing tcp connection's local address,format: IP: port.
out_remote_addr
: outgoing tcp connection's remote address,format: IP: port.
upstream
: upstream used by outgoing tcp connection, if none upstream be used, it's empty.
The --traffic-url
URL must response the HTTP status code 204
. Only when the traffic is reported will the report be considered successful, and if it response other status codes, it will be considered that the reported traffic failed, and the log will be output.
The proxy's http (s) / socks5 / sps proxy function supports a control interface, which can be specified by the parameter --control-url http interface address, Then the proxy will interval send all the usernames or client IPs currently connected to the proxy to this URL. Specifically, the proxy sends an HTTP to POST request to the HTTP URL address set by --control-url.
interval
defaults to 30 seconds, this value can be modified via the --control-sleep parameter.
When the user expires, or the user's traffic has been used up, the authentication API can only control the user cannot create a new connection, but the connection with the proxy has been established and the connection cannot be immediately disconnected. Then this problem can be solved through the control interface. The control interface will return the content through the control interface in the slowest interval
time, and the end is invalid when the user establishes the connection.
An HTTP POST request will be sent to the control. The interface form
has three fields: interface, ip, conns, and the conns
field requires a user whose proxy version is greater than proxy 12.2
.
user
The username currently connected to the agent, multiple separated by commas, for example: user1, user2
ip
The client IP is connected to the proxy, and multiple clients using English are split addresses, for example: 1.1.1.1, 2.2.2.2
conns
The tcp connection information currently connecting to the proxy port to transmit data. The conns value is a json string, the format is a sequence of connections, the element is an object, the object contains the details of the connection, conns format: [{"id":"ab7bf1f10501d6f7","client":"127.0.0.1:62112","server":"127.0.0.1:9092","user":""}]
Object field description: id: connection id, client: client's unique IP address and port, server: client's IP and no port access, user's connection authentication (null if any)
The data returned by the control interface is invalid user and IP or connection. The format is a json object data. There are three fields user, ip, and conns. The conns
field requires the proxy version greater than or equal to 12.2
. Format: {"user":"a,b","ip":"",conns:["ab7bf1f10501d6f7","cb7bf1f10501d6f7"]}
user
: The username currently connected to the proxy, multiple separated by commas, not left blank, for example: user1, user2
ip
: The ip address of the client currently connected to the proxy, multiple separated by commas, not left blank, for example: 1.1.1.1, 2.2.2.2
conns
: is an array, the element is a connection id, this id is the id field of the connection object in conns in the above Request Description
.
يقدم:
user
or IP
authentication cache will be cleared. Suppose --control-url http://127.0.0.1:33088/user/control.php
points to a PHP interface address. The content of control.php is as follows:
<?php
#revcieve proxy post data
$ userArr = explode ( " , " , $ _POST [ ' user ' ]);
$ ipArr = $ _GET [ ' ip ' ];
//invalid users array
$ badUsers =[];
foreach ( $ userArr as $ user ) {
//logic business, push invalid user into $badUsers
$ badUsers []= $ user ;
}
$ data =[ " user " => implode ( " , " $ badUsers), " ip " => "" , " conns " =>[]];
echo json_encode ( $ data );
The proxy http(s)/socks5/sps proxy function supports the user to access the proxy pair through the configuration file, and supports the http(s) proxy ``Proxy Basic proxy authentication` and the socks5 proxy authentication.
The proxy's http(s)/socks5/sps proxy function can pass
--auth-file
, --max-conns
, --ip-limit
, --rate-limit
, -a
These five parameters control.
--auth-file
The authenticated user name and password file. This parameter specifies a file, one line per rule, in the format: "username: password: number of connections: rate: upstream".
Connection number
is the maximum number of connections for the user. The 'rate' is the maximum speed of each tcp connection of the user. The unit is: byte/second. The upper level is the upper level used by the user.
Not only can the authenticated user be set by --auth-file
, but also the -a
parameter can be set directly. Multiple users can repeat multiple -a
parameters.
For example: proxy http -aa:b:0:0: -ac:d:0:0:
Example explanation:
For example: user:pass:100:10240:http://192.168.1.1:3100
user
is the authentication username
pass
is the authentication user password (cannot contain a colon:)
100
is the maximum number of connections for this user, not limited to write 0
10240
is the rate limit of this user's single tcp connection, the unit is: byte / sec, no limit write 0
http://192.168.1.1:3100
is the upstream used by this user, no space is left blank
--max-conns
Limit the maximum number of global connections for the proxy service, a number, 0 is unrestricted, default is 0.
--ip-limit
Controls the number of connections and connection rate of the client IP. This parameter specifies a file, one rule per line, and the beginning of # is gaze.
The sample file ip.limit, the rule format is as follows:
127.0.0.1:100:10240:http://192.168.1.1:3100
Rule interpretation:
127.0.0.1
is the IP to be restricted
100
is the maximum number of connections for this IP, not limited to write 0
10240
is the rate limit of IP single tcp connection, the unit is: byte / s, no limit write 0
http://192.168.1.1:3100
is the upstream used by this IP, and it is not left blank.
--rate-limit
Limit the speed of each tcp connection of the service, for example: 100K 2000K 1M . 0 means unlimited, default 0.
The proxy supports the cluster management. The proxy is installed on each machine node as an agent, with the control panel [ proxyadmin cluster edition
] (https://github.com/snail007/proxy-admin-cluster) Unified management of proxy services on massive machines.
If the proxy is to be run as an agent, assume that the cluster port address of the control panel is: 1.1.1.1: 55333
.
The command example is as follows:
proxy agent -k xxx -c 1.1.1.1:55333 -i test
Command explanation:
agent: is a function parameter, which means running agent mode.
-k : The encryption and decryption key for communication with proxyadmin cluster edition
. This key is set in the configuration file of proxyadmin cluster edition
.
-c : The cluster port address of proxyadmin cluster edition
, format: IP:port.
-i : The unique identifier of the agent ensures that each agent is different. The "unique identifier" specified here is used when adding a node to the control panel. The IP is filled with this "unique identifier". If -i is not specified, the default is empty, and the control panel adds the IP field to fill in: the agent's internet IP.
-u: proxy parameter, empty by default. You can specify an agent, and the agent will communicate with the cluster through this agent.
The format is the same as that of --jumper
. For details, please refer to the --jumper
part of the manual.
يلاحظ:
When the client service is configured in the control panel, all nodes use the same key, which leads to only one client working. To solve this problem, Client service parameters can use placeholders: {AGENT_ID}
to refer to the agent's id as the client's key, so as to ensure that each client has a unique key.
For example, client service parameters:
client -T tcp -P 1.1.1.1:30000 --k {AGENT_ID}
The proxy can reverse proxy http and https websites.
The supported features are as follows:
Example, configure file: rhttp.toml
。
proxy rhttp -c rhttp.toml
For detail usage, please refer to the configuration file rhttp.toml, which has a complete configuration description.