في هذه المقالة، سنستعرض إعداد 3proxy على خادم مخصص يعمل بنظامي التشغيل ArchLinux/CentOS. يُعد 3proxy من أكثر الأدوات فعاليةً وفعاليةً، حيث يدعم أنواعًا مختلفة من البروتوكولات: HTTP، HTTPS، FTP، SOCKS، وغيرها. سيساعدك على إعداد خادمك الوكيل الخاص في دقائق معدودة.
تحتوي هذه المقالة على إرشادات تفصيلية خطوة بخطوة حول تثبيت الأداة وتكوينها. تتناول المقالة مسائل مثل التثبيت من مصدر رسمي، وإعداد ملفات التكوين، وفتح المنافذ غير القياسية، بالإضافة إلى شرح الأخطاء الشائعة وتقديم توصيات عملية لحلها. قبل البدء، يجب طلب خادم افتراضي خاص (VPS) أو خادم مخصص يعمل بنظام التشغيل CentOS أو ArchLinux. سيتم تنفيذ جميع الإجراءات في هذا المثال على خادم مخصص يعمل بنظام التشغيل CentOS 7 مع عنوان IP عام ثابت مخصص.
التركيب
الخطوة 1:
يتم تثبيت 3proxy مباشرةً من المصادر. سيتم استخدام gcc كمترجم. نتصل بالخادم بصلاحيات المستخدم الجذر (المستخدم المتميز) ونقوم بتثبيت المترجم.
yum install gcc
الخطوة 2:
الآن، يجب تحميل ملفات المصدر الخاصة بـ 3proxy. يمكنك القيام بذلك عن طريق زيارة الموقع الرسمي ونسخ رابط الإصدار الحالي:
إذا كنت بحاجة إلى نسخة مؤرشفة، يمكنك أيضًا تنزيل الرابط مباشرة من GitHub :
وقت كتابة هذه المقالة، الإصدار الحالي هو 0.9.3. نزّله وفك ضغطه فورًا:
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
tar -xvzf 0.9.3.tar.gz
الخطوة 3:
انتقل إلى الدليل الذي يحتوي على المشروع غير المضغوط وقم بتجميعه:
cd 3proxy-0.9.3/
make -f Makefile.Linux
الخطوة 4:
نقوم بإنشاء الدلائل ونسخ ملف 3proxy إلى /usr/bin:
mkdir -p /var/log/3proxy
mkdir /etc/3proxy
cp bin/3proxy /usr/bin/
الخطوة 5:
نقوم بإنشاء مستخدم للعمل مع الكتالوج. في هذه الحالة، اسم المستخدم هو 3proxyuser:
useradd -s /usr/sbin/nologin -U -M -r 3proxyuser
نحن نمنح حقوق العمل مع الدلائل للمستخدم الذي تم إنشاؤه:
chown -R 3proxyuser:3proxyuser /etc/3proxy
chown -R 3proxyuser:3proxyuser /var/log/3proxy
chown -R 3proxyuser:3proxyuser /usr/bin/3proxy
الآن دعنا نقوم بإنشاء ملف تكوين باستخدام الأمر:
touch /etc/3proxy/3proxy.cfg
إذا لزم الأمر، يمكنك تحديد صلاحيات المستخدم الجذر على ملف الإعدادات. هذه الخطوة ليست إلزامية، ولكنها ستضيف حماية إضافية.
chmod 600 /etc/3proxy/3proxy.cfg
تكوين 3proxy
الخطوة 6:
من الضروري ملء ملف التكوين الذي تم إنشاؤه مسبقًا بشكل صحيح. أولًا، ابحث عن معرف المستخدم (uid) ومعرف المجموعة (gid) للمستخدم باستخدام الأمر:
id 3proxyuser
في حالتنا هذه هي القيم التالية:
لملء ملف الإعدادات، يمكنك استخدام إعدادات جاهزة أو الرجوع إلى الوثائق الموجودة على الموقع الرسمي. كما يوجد ملف يحتوي على مثال مثبت مسبقًا بشكل افتراضي؛ يمكنك العثور عليه في المسار التالي: /cfg/3proxy.cfg.sample
كمثال، سننظر في نوعين من التكوين: مع التسجيل وبدونه . كل سطر سيكون مصحوبًا بتعليقات (مميزة بالرمز "#").
هذا مثال على تكوين جاهز بدون تسجيل :
# We specify the user's data that we found out in the previous command
setgid 995
setuid 997
# Type the NS-servers. It is possible to clarify your own servers at /etc/resolv.conf
nserver 1.1.1.1
nserver 8.8.8.8
# Cache size
nscache 65536
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Authorization of users by login/password (if required). You may not to use it or specify the path to the file in which authorization data is stored, for example, users $/etc/3proxy/.authfile
# If you insert a password in md5 format, replace “CL” with “CR”, as indicated in the example. You can use 2 methods at the same time.
auth cache strong
users "userproxy:CL:passwordproxy"
users "userproxy2:CR:b89097a7ad0b94f13b3c313ae76699d4 "
# Launch mode. Daemon only.
Daemon
# We write the port through which the http connection will take place. The example shows the standard one. To establish a socks connection, use the command specified in the second line, the port is also standard.
proxy -p3128
socks -p1080
لقد نظرنا في خيار استخدام ملف تهيئة بدون تسجيل. الآن سنقوم بإنشاء ملف تهيئة يتضمن تسجيلًا وتفويضًا للمستخدم ؛ وسيتم استخدامه لاحقًا أثناء إعداد الخادم.
تأكد من تقديم معلومات التفويض، حيث يمكن اكتشاف الخادم حتى على المنافذ غير القياسية.
# Configuring the server to launch from the userproxy user and the passwordproxy password.
users userproxy:CL:passwordproxy
# Specify the user's uid and gid
setgid 995
setuid 997
# Nameservers (NS-servers)
nserver 1.1.1.1
nserver 8.8.8.8
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Cache size (standard)
nscache 65536
# Indicate the launch mode
daemon
# We install http proxy on a non-standard 50001 port. If there are several IP addresses on the server, be sure to specify a specific address for connecting the network. For example, "-e91.150.32.146". The argument "i" is a local address.
proxy –p50001
# In a same way as socks proxy, we conduct the installation on a 50002 port.
socks –p50002
# Path to the directory with logs, logs format and proxy rotation
Log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
بهذا يُكتمل إعداد ملف التكوين الرئيسي. ننتقل إلى المرحلة النهائية وهي التشغيل.
الخطوة 7:
إنشاء ملف تهيئة لـ systemd:
touch /etc/systemd/system/3proxy.service
إصدار الحقوق اللازمة:
chmod 664 /etc/systemd/system/3proxy.service
انسخ القيم التالية وألصقها في الملف ثم احفظها:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep 3proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target»
يرجى الملاحظة: في قيمة "ExecStop" يجب عليك تحديد اسم المستخدم الذي تم إنشاؤه في الخطوة رقم 5.
بعد ذلك، ستحتاج إلى تحديث تكوين Daemon باستخدام الأمر:
systemctl daemon-reload
الخطوة 8:
كل ما نحتاجه هو تشغيل 3proxy الذي تم تكوينه، وإضافته إلى التشغيل التلقائي، وكذلك فتح المنافذ في جدار الحماية.
أضفه إلى التشغيل التلقائي والتشغيل والتحقق من الحالة:
systemctl enable 3proxy
systemctl start 3proxy
systemctl status 3proxy
بعد التحقق من الحالة، نرى معلومات تفيد بأن 3proxy تم تشغيله بنجاح:
الشيء الوحيد المتبقي هو فتح المنافذ:
firewall-cmd --zone=public --add-port=50001/tcp
firewall-cmd --zone=public --add-port=50002/tcp
firewall-cmd –reload
إذا لزم الأمر، أعد تشغيل الخادم. يمكنك التحقق من فتح المنافذ باستخدام الأمر:
firewall-cmd --list-all
ماذا ينبغي أن يكون:
كما نرى، تم فتح كلا المنفذين بنجاح ويتم الاستماع إليهما. اتصال http موجود على المنفذ الأول، وsocks موجود على المنفذ الثاني.
تحقق من الاتصال من خلال أي خدمة مناسبة:
كل شيء يعمل بشكل سليم. من جانبنا، لا ننصح باستخدام اتصال غير آمن بدون تسجيل دخول/كلمة مرور، وكذلك مع مجموعة المنافذ القياسية . عند إعداد ملف التكوين، تأكد من تحديد اسم مستخدم وإنشاء كلمة مرور معقدة، وتغيير المنافذ إلى منافذ غير قياسية . في حالات استثنائية، يمكن استخدام مصادقة عنوان IP.
المشاكل الشائعة
هل حدث خطأ ما ولم يعمل البروكسي؟ ربما تم إعداد 3proxy بشكل غير صحيح. لنلقِ نظرة على أكثر المشاكل شيوعًا وحلولها أثناء تثبيت الأداة وتكوينها.
لا يوجد اتصال
المشكلة الأكثر شيوعًا لدى العديد من المستخدمين هي تعذر الوصول إلى الاتصال رغم أن ملفات التكوين تبدو مُعدّة بشكل صحيح. إذا كنت متأكدًا من صحة جميع الإعدادات، ولم يقم مزوّد الاستضافة بتقييد المنفذ المُختار، وكانت جميع البيانات تُشير إلى خدمة تعمل بشكل صحيح، فقد تكون المشكلة في جدار الحماية، أو بالأحرى، في تكوينه غير الصحيح. على سبيل المثال، قد يكون هناك أكثر من برنامجين مُثبّتين على النظام، وقد يتعارضان مع بعضهما البعض. لحل المشكلة، يكفي استخدام جدار حماية مُحدّد. ننصحك باختيار iptables أو firewall-cmd فقط.
الخدمة لا يتم إطلاقها
لا تبدأ الخدمة بعد إعداد جميع ملفات التكوين اللازمة. يحدث هذا عند إغفال إحدى خطوات التكوين، أو عدم منح الصلاحيات المناسبة، أو وجود خطأ بسيط في ملفات التكوين. ننصحك بمراجعة التعليمات خطوة بخطوة بعناية، فقد تكون أغفلت إحدى الخطوات. إذا لم يُجدِ ذلك نفعًا، يُفضّل إعادة تثبيت نظام التشغيل واتباع جميع الخطوات من البداية. نوصي باستخدام الملف التجريبي الموجود في المسار /cfg/3proxy.cfg.sample كإعداد تجريبي، واستخدام برنامج firewall-cmd المُثبّت مسبقًا كجدار حماية.
تسجيل
المسألة الأخيرة، وإن لم تكن أقل أهمية، تتعلق بتخزين الملفات. يستهلك 3proxy عدة ميغابايت أثناء التثبيت، ولكن لا يمكن زيادة حجمه بشكل ملحوظ إلا من خلال التسجيل مع مرور الوقت. في الواقع، يُفعّل العديد من المستخدمين تسجيل السجلات في ملف منفصل، لكنهم لا يُعدّون خاصية التدوير ولا يحذفون السجلات غير ذات الصلة. يمكن استخدام ثلاثة خيارات لحل هذه المشكلة:
- تمكين التسجيل؛
- حذف السجلات غير ذات الصلة بشكل دوري؛
- فعّل خاصية التدوير، كما هو موضح في الإعدادات أعلاه. على سبيل المثال، "تدوير 30" في ملف الإعدادات يعني أن 3proxy سيخزن أحدث 30 ملفًا فقط.
خاتمة
يُعد تثبيت وتكوين 3proxy على نظامي التشغيل CentOS وArchLinux مهمةً سهلةً نسبيًا، لكنها فعّالة في الوقت نفسه. تناولت المقالة خطوات تثبيت الحزم اللازمة، وتكوين ملفات التكوين، وتشغيل الخدمة. ستُمكّنك المعرفة المكتسبة من تثبيت وتكوين خادم البروكسي بنفسك دون أي صعوبة.