إذا كنت تريد أن تمر كل حركة المرور في شبكتك عبر بروكسي - دون إعداد يدوي على كل كمبيوتر محمول أو هاتف ذكي أو خادم - فإن البروكسي الشفاف على جهاز التوجيه OpenWrt عبر آلية TPROXY هو بالضبط ما تحتاجه. في هذا الدليل، سنستعرض التكوين الكامل: من تثبيت الحزم اللازمة إلى قواعد iptables والتحقق من العمل.
ما هو TPROXY ولماذا هو مطلوب
TPROXY (بروكسي شفاف) هو آلية في نواة Linux تسمح باعتراض حركة مرور TCP وUDP دون تغيير عنوان IP الوجهة في الحزمة. على عكس إعادة التوجيه NAT التقليدية (REDIRECT)، يحتفظ TPROXY بعنوان المستلم الأصلي، وهو أمر حاسم لعمل عميل البروكسي بشكل صحيح: فهو "يرى" إلى أين يحاول الجهاز الاتصال في الشبكة.
لماذا هذا مطلوب في الممارسة العملية؟ تخيل: لديك مكتب أو مختبر منزلي به عشرات الأجهزة - أجهزة كمبيوتر، هواتف ذكية، أجهزة IoT، آلات افتراضية للاختبار. إعداد البروكسي يدويًا على كل منها - هذا يعني ساعات من العمل وآلام مستمرة عند تغيير خادم البروكسي. يقوم البروكسي الشفاف على جهاز التوجيه بحل المشكلة بشكل مركزي: كل حركة المرور في الشبكة تمر تلقائيًا عبر البروكسي، والأجهزة لا تدرك ذلك حتى.
السيناريوهات النموذجية لاستخدام TPROXY على OpenWrt:
- توجيه كل حركة المرور عبر بروكسي مقيم أو متنقل لتجاوز القيود الجغرافية
- المراقبة المركزية وتصنيف حركة المرور في الشبكة المؤسسية
- اختبار التطبيقات عبر البروكسي من مناطق مختلفة دون تغيير الإعدادات على أجهزة العميل
- تغيير IP تلقائي لجميع الأجهزة المتصلة بجهاز التوجيه
- العمل مع متصفحات مضادة للاكتشاف (Dolphin Anty، AdsPower، GoLogin) عبر بوابة واحدة
الميزة الرئيسية لـ TPROXY مقارنة بـ REDIRECT: دعم UDP. هذا مهم للبروتوكولات الحديثة (QUIC، DNS عبر UDP، حركة المرور في الألعاب) التي لا يمكن لـ REDIRECT معالجتها بشكل صحيح.
كيف يعمل البروكسي الشفاف في OpenWrt
يبدو مخطط عمل TPROXY على OpenWrt كما يلي:
- ترسل جهاز في الشبكة حزمة إلى عنوان IP خارجي (على سبيل المثال،
93.184.216.34:443). - يقوم جهاز التوجيه باعتراض الحزمة باستخدام قاعدة
iptables TPROXYفي سلسلة PREROUTING - قبل اتخاذ قرار التوجيه. - تُعلّم الحزمة بعلامة fwmark خاصة وتُعاد توجيهها إلى مقبس محلي لعميل البروكسي (على سبيل المثال، إلى المنفذ 7893).
- يستطيع عميل البروكسي (redsocks، Xray، sing-box) "رؤية" عنوان الوجهة الأصلي عبر آلية
IP_TRANSPARENTويقوم بإنشاء اتصال عبر خادم البروكسي البعيد. - تُعاد الاستجابة إلى الجهاز - بشكل شفاف، دون أي تغييرات على جانب العميل.
💡 نقطة مهمة
يعمل TPROXY فقط في سلسلة PREROUTING من جدول mangle. وهذا يعني أنه يتم اعتراض حركة المرور العابرة فقط (من أجهزة الشبكة)، ولكن ليس حركة المرور الخاصة بجهاز التوجيه نفسه. للاعتراض على حركة مرور جهاز التوجيه، ستحتاج إلى إعداد إضافي عبر OUTPUT والتوجيه عبر loopback.
المتطلبات: جهاز التوجيه، البرنامج الثابت، الحزم
قبل البدء في الإعداد، تأكد من أن تكوينك يتوافق مع المتطلبات الدنيا.
متطلبات جهاز التوجيه
| المعلمة | الحد الأدنى | الموصى به |
|---|---|---|
| RAM | 64 ميجابايت | 256 ميجابايت أو أكثر |
| فلاش / تخزين | 16 ميجابايت | 128 ميجابايت أو أكثر |
| معمارية المعالج | MIPS، ARM | ARM Cortex-A7/A53 وما فوق |
| إصدار OpenWrt | 21.02 | 23.05 أو snapshot |
| نواة Linux | 5.4 مع TPROXY | 5.15 / 6.1 |
النماذج التي أثبتت جدواها لهذه المهمة: GL.iNet GL-MT6000 (Flint 2)، Xiaomi AX3000T، Banana Pi BPi-R3، Raspberry Pi 4 مع OpenWrt، بالإضافة إلى أي جهاز توجيه x86 مع كمية كافية من RAM.
التحقق من دعم TPROXY في النواة
اتصل بجهاز التوجيه عبر SSH وقم بتنفيذ:
zcat /proc/config.gz | grep TPROXY
يجب أن ترى السطر CONFIG_NETFILTER_XT_TARGET_TPROXY=y أو =m. إذا كانت النتيجة فارغة - فإن النواة لا تدعم TPROXY وستحتاج إلى إعادة الترجمة أو تغيير البرنامج الثابت.
تثبيت الحزم اللازمة
لتشغيل TPROXY على OpenWrt، ستحتاج إلى عدة حزم. اتصل عبر SSH وقم بتحديث قائمة الحزم:
opkg update
قم بتثبيت المكونات اللازمة:
# وحدة النواة لـ TPROXY
opkg install kmod-nft-tproxy
# إذا كنت تستخدم iptables (المكدس القديم)
opkg install iptables-mod-tproxy
# أدوات ip rule / ip route
opkg install ip-full
# إضافي للعمل مع fwmark
opkg install kmod-ipt-tproxy
اعتمادًا على عميل البروكسي الذي تختاره، قم بتثبيت واحدة من الحزم التالية:
| عميل البروكسي | حزمة OpenWrt | دعم TPROXY |
|---|---|---|
| redsocks | redsocks |
TCP (UDP عبر redsocks2) |
| Xray-core | xray-core |
TCP + UDP (بشكل أصلي) |
| sing-box | sing-box |
TCP + UDP (بشكل أصلي) |
| mihomo (Clash Meta) | mihomo |
TCP + UDP (بشكل أصلي) |
لمعظم المهام، نوصي بـ sing-box أو mihomo - حيث يدعمان TPROXY بشكل أصلي، بما في ذلك UDP، ولديهما تنسيق تكوين سهل الاستخدام.
إعداد قواعد iptables وقاعدة ip
هذه هي المرحلة الأساسية. نحتاج إلى القيام بثلاثة أشياء: تعليم الحزم المطلوبة بعلامة fwmark، إعداد جدول توجيه خاص، وإضافة قاعدة TPROXY في iptables.
الخطوة 1: إنشاء جدول توجيه
# إضافة مسار خاص: الحزم المعلّمة تذهب إلى loopback
ip rule add fwmark 1 table 100
ip route add local default dev lo table 100
هذا يخبر النواة: "اعتبر كل الحزم التي تحمل علامة fwmark=1 محلية وقم بتوصيلها إلى loopback". بهذه الطريقة، سيتمكن عميل البروكسي من استلامها عبر مقبسه.
الخطوة 2: قواعد iptables (mangle/PREROUTING)
# إنشاء سلسلة لـ TPROXY
iptables -t mangle -N TPROXY_RULES
# استبعاد العناوين المحلية (لا نقوم بإعادة توجيهها)
iptables -t mangle -A TPROXY_RULES -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 240.0.0.0/4 -j RETURN
# إعادة توجيه TCP إلى منفذ عميل البروكسي (7893)
iptables -t mangle -A TPROXY_RULES -p tcp \
-j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1
# إعادة توجيه UDP إلى منفذ عميل البروكسي (7893)
iptables -t mangle -A TPROXY_RULES -p udp \
-j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1
# تطبيق السلسلة على حركة المرور العابرة
iptables -t mangle -A PREROUTING -j TPROXY_RULES
📌 المنفذ 7893
المنفذ 7893 هو المنفذ الذي يستمع فيه عميل البروكسي (sing-box، mihomo، Xray) في وضع tproxy. تأكد من أنه يتطابق مع إعدادات عميلك.
الخطوة 3: حفظ القواعد عند إعادة التشغيل
أنشئ سكربت بدء التشغيل في /etc/init.d/tproxy أو أضف الأوامر إلى /etc/rc.local. بالنسبة لـ OpenWrt 23.05 مع nftables بدلاً من iptables، استخدم قواعد مماثلة بصيغة nft:
nft add table ip tproxy_table
nft add chain ip tproxy_table prerouting \
'{ type filter hook prerouting priority mangle; policy accept; }'
nft add rule ip tproxy_table prerouting \
ip daddr { 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } return
nft add rule ip tproxy_table prerouting \
tcp tproxy to 127.0.0.1:7893 meta mark set 1
nft add rule ip tproxy_table prerouting \
udp tproxy to 127.0.0.1:7893 meta mark set 1
تكوين عميل البروكسي: redsocks، Xray، sing-box
عميل البروكسي على جهاز التوجيه هو برنامج يستقبل حركة المرور المعترضة ويرسلها عبر خادم بروكسي بعيد. دعنا نستعرض التكوين لأكثر الخيارات شعبية.
الخيار 1: redsocks (بسيط، فقط TCP)
مناسب للمهام الأساسية مع بروكسي SOCKS5. ملف التكوين /etc/redsocks.conf:
base {
log_debug = off;
log_info = on;
log = "file:/var/log/redsocks.log";
daemon = on;
redirector = tproxy;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 7893;
// عنوان بروكسي SOCKS5 الخاص بك
ip = 185.220.101.50;
port = 1080;
type = socks5;
// إذا كان البروكسي يتطلب مصادقة:
login = "your_login";
password = "your_password";
}
الخيار 2: sing-box (موصى به - TCP + UDP)
sing-box يدعم TPROXY بشكل أصلي ويعمل مع معظم أنواع البروكسي: SOCKS5، HTTP، Shadowsocks، VLESS، Trojan. مثال على التكوين /etc/sing-box/config.json:
{
"inbounds": [
{
"type": "tproxy",
"listen": "127.0.0.1",
"listen_port": 7893,
"tcp_fast_open": false,
"udp_fragment": true,
"sniff": true
}
],
"outbounds": [
{
"type": "socks",
"tag": "proxy-out",
"server": "185.220.101.50",
"server_port": 1080,
"version": "5",
"username": "your_login",
"password": "your_password"
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"rules": [
{
"geoip": ["private"],
"outbound": "direct"
}
],
"final": "proxy-out"
}
}
قم بتشغيل sing-box وأضفه إلى بدء التشغيل:
/etc/init.d/sing-box enable
/etc/init.d/sing-box start
الخيار 3: mihomo / Clash Meta
mihomo هو فرع من Clash مع ميزات موسعة. في قسم tproxy-port، حدد المنفذ للاعتراض:
mixed-port: 7890
tproxy-port: 7893
allow-lan: false
mode: rule
log-level: info
proxies:
- name: "my-socks5"
type: socks5
server: 185.220.101.50
port: 1080
username: your_login
password: your_password
udp: true
proxy-groups:
- name: "PROXY"
type: select
proxies:
- my-socks5
rules:
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- MATCH,PROXY
الحماية من تسريبات DNS
البروكسي الشفاف بدون إعداد DNS الصحيح هو ثغرة خطيرة. إذا كانت استعلامات DNS تذهب مباشرة عبر المزود، وليس عبر البروكسي، فإن الموقع الفعلي يُكشف، على الرغم من تغيير IP. هذا حاسم للمهام التي تتطلب الخصوصية أو تغيير الموقع الجغرافي.
الطريقة 1: اعتراض DNS عبر TPROXY
أضف قاعدة لاعتراض حركة مرور UDP على المنفذ 53:
# اعتراض استعلامات DNS من أجهزة الشبكة
iptables -t mangle -A TPROXY_RULES -p udp --dport 53 \
-j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1
الطريقة 2: DNS عبر sing-box / mihomo
يمكن لـ sing-box وmihomo معالجة استعلامات DNS بأنفسهم وإرسالها عبر البروكسي. في تكوين sing-box، أضف قسم DNS:
"dns": {
"servers": [
{
"tag": "remote",
"address": "8.8.8.8",
"detour": "proxy-out"
},
{
"tag": "local",
"address": "192.168.1.1",
"detour": "direct"
}
],
"rules": [
{
"geoip": ["private"],
"server": "local"
}
],
"final": "remote",
"independent_cache": true
}
الطريقة 3: dnsmasq مع upstream عبر البروكسي
إذا كنت لا تستخدم sing-box/mihomo، قم بإعداد dnsmasq (خادم DNS القياسي في OpenWrt) بحيث يقوم بإعادة توجيه الاستعلامات إلى خادم DNS مشفر. في ملف /etc/dnsmasq.conf:
# تعطيل استخدام DNS من المزود
no-resolv
# استخدام DoH/DoT عبر محلل محلي
server=127.0.0.1#5335
# منع الأجهزة من استخدام DNS خارجي مباشرة
# (قاعدة iptables لحظر استعلامات DNS المباشرة)
# iptables -t nat -A PREROUTING -p udp --dport 53 ! -d 192.168.1.1 -j DNAT --to 192.168.1.1
التحقق من العمل وإصلاح الأخطاء
بعد الإعداد، تأكد من التحقق من صحة عمل البروكسي الشفاف. إليك قائمة مراجعة خطوة بخطوة.
الخطوة 1: التحقق من قواعد iptables
# عرض سلسلة TPROXY_RULES
iptables -t mangle -L TPROXY_RULES -v -n
# التحقق من جدول التوجيه 100
ip rule show
ip route show table 100
الخطوة 2: التحقق من أن عميل البروكسي يستمع على المنفذ
ss -tlnp | grep 7893
# أو
netstat -tlnp | grep 7893
يجب أن ترى عملية sing-box أو mihomo أو redsocks تستمع على 127.0.0.1:7893.
الخطوة 3: التحقق من IP من جهاز العميل
اتصل بجهاز التوجيه من أي جهاز في الشبكة وافتح في المتصفح ifconfig.me أو 2ip.ru. يجب أن يتطابق IP المعروض مع IP خادم البروكسي الخاص بك، وليس مع IP الحقيقي للمزود.
الخطوة 4: التحقق من تسريبات DNS
انتقل إلى dnsleaktest.com وقم بإجراء اختبار موسع. يجب أن تنتمي خوادم DNS في النتائج إلى مزود البروكسي الخاص بك أو خادم DoH المختار، وليس إلى مزود الإنترنت الخاص بك.
المشاكل النموذجية وحلولها
| الأعراض | السبب | الحل |
|---|---|---|
| الإنترنت لا يعمل على الإطلاق | عميل البروكسي غير مفعل | تحقق من حالة الخدمة، سجلات العميل |
| IP لا يتغير | لم يتم تطبيق قواعد iptables | تحقق من iptables -t mangle -L -v |
| UDP لا يعمل | redsocks لا يدعم UDP | انتقل إلى sing-box أو mihomo |
| حلقة توجيه | يتم اعتراض حركة مرور عميل البروكسي أيضًا | استبعد UID أو cgroup لعميل البروكسي من القواعد |
| خطأ في هدف TPROXY | لم يتم تحميل وحدة النواة | modprobe xt_TPROXY |
ما هو نوع البروكسي المناسب لـ TPROXY على OpenWrt
يؤثر اختيار نوع البروكسي بشكل حاسم على النتيجة. لا تناسب جميع الخيارات البروكسي الشفاف على جهاز التوجيه - من المهم مراعاة البروتوكول، واستقرار الاتصال، والهدف.
بروكسي SOCKS5
الخيار الأكثر تنوعًا لـ TPROXY. يدعم TCP وUDP (عند استخدام sing-box/mihomo). مناسب لمعظم المهام: تجاوز القيود الجغرافية، تغيير IP لكل الشبكة، العمل مع الأسواق. بروكسي مراكز البيانات بصيغة SOCKS5 توفر سرعة عالية واستقرار - الخيار الأمثل إذا كانت الأولوية هي السرعة وليس التمويه كعميل حقيقي.
بروكسي مقيم
بروكسي مقيم تستخدم عناوين IP لمستخدمين حقيقيين في المنازل. عند التوجيه عبر TPROXY على جهاز التوجيه، يعني ذلك أن كل حركة المرور في شبكتك ستبدو كحركة مرور مستخدم إنترنت منزلي عادي من الدولة المطلوبة. مثالي لـ:
- مراقبة الأسعار على الأسواق الأجنبية (Amazon، eBay، Zalando)
- اختبار الإعلانات من مناطق مختلفة
- العمل مع المنصات التي تحظر بنشاط عناوين IP لمراكز البيانات
- المهام التي تتطلب أقصى درجات التمويه كعميل حقيقي
بروكسي متنقل
بروكسي متنقل تعمل عبر عناوين IP لمزودي خدمة الهاتف المحمول (4G/5G). لديهم أعلى مستوى من الثقة من المنصات - Facebook، Instagram، TikTok نادرًا ما تحظر عناوين IP المتنقلة، حيث يمكن أن يكون وراء عنوان واحد آلاف المستخدمين الحقيقيين. عند استخدامه عبر TPROXY على جهاز التوجيه، تحصل كل حركة المرور في شبكتك على IP متنقل، وهو أمر حاسم لـ:
- تحكيم حركة المرور عبر إعلانات Facebook وTikTok
- إنشاء حسابات على وسائل التواصل الاجتماعي
- العمل مع متصفحات مضادة للاكتشاف (Dolphin Anty، AdsPower، GoLogin) عبر بوابة واحدة
| نوع البروكسي | السرعة | ثقة المنصات | أفضل سيناريو |
|---|---|---|---|
| مركز بيانات | ⚡ عالية | ★★☆☆☆ | التجميع، مراقبة الأسعار |
| مقيم | ⚡⚡ متوسطة | ★★★★☆ | اختبار جغرافي، التجارة الإلكترونية |
| متنقلة | ⚡ متوسطة | ★★★★★ | وسائل التواصل الاجتماعي، تحكيم حركة المرور |
الخاتمة
البروكسي الشفاف عبر TPROXY على OpenWrt هو أداة قوية لإدارة حركة المرور في الشبكة بأكملها بشكل مركزي. المزايا الرئيسية لهذه الطريقة: لا حاجة لإعداد البروكسي على كل جهاز بشكل منفصل، دعم حركة مرور TCP وUDP، ويمكن تكوينه بشكل مرن ليناسب أي مهام - من الاستخدام المنزلي إلى البنية التحتية المؤسسية.
الخطوات الرئيسية التي استعرضناها: التحقق من دعم TPROXY في نواة OpenWrt، تثبيت الحزم اللازمة، إعداد قواعد iptables/nftables مع fwmark الصحيح، تكوين عميل البروكسي (redsocks، sing-box أو mihomo) والحماية من تسريبات DNS. كل من هذه المراحل مهمة - تخطي أي منها سيؤدي إلى عدم عمل النظام بشكل صحيح أو تسرب IP الحقيقي.
إذا كانت مهمتك هي توجيه حركة المرور عبر البروكسي في جميع أنحاء الشبكة مع أقصى مستوى من الثقة من المنصات (Facebook، Instagram، TikTok، الأسواق الأجنبية)، نوصي باستخدام بروكسي مقيم - حيث توفر عناوين IP حقيقية من الدولة المطلوبة وأقل خطر للحظر عند العمل عبر بروكسي شفاف على جهاز التوجيه.
```