Redirect & TProxy — Xray-core
Xray دارای انواع ورودی اختصاصی redirect یا tproxy نیست. هر دو حالت از طریق ورودی Dokodemo-door ترکیبشده با streamSettings.sockopt پیادهسازی میشوند.
REDIRECT (Linux iptables NAT)
از یک ورودی Dokodemo با followRedirect: true استفاده کنید:
json
{
"inbounds": [{
"tag": "redir-in",
"listen": "127.0.0.1",
"port": 12345,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp",
"followRedirect": true
}
}]
}سپس قواعد REDIRECT iptables را نصب کنید:
sh
iptables -t nat -N XRAY
iptables -t nat -A XRAY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A XRAY -d 10.0.0.0/8 -j RETURN
iptables -t nat -A XRAY -d 172.16.0.0/12 -j RETURN
iptables -t nat -A XRAY -d 127.0.0.0/8 -j RETURN
iptables -t nat -A XRAY -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A OUTPUT -p tcp -j XRAYREDIRECT فقط برای TCP است. پراکسی شفاف UDP به TPROXY نیاز دارد.
TPROXY (Linux iptables mangle)
json
{
"inbounds": [{
"tag": "tproxy-in",
"listen": "0.0.0.0",
"port": 12345,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"streamSettings": {
"sockopt": {
"tproxy": "tproxy",
"mark": 255
}
}
}]
}مجموعه قواعد iptables متناظر (TCP + UDP، با عبور مبتنی بر mark):
sh
# Custom chain for outgoing traffic
iptables -t mangle -N XRAY
iptables -t mangle -A XRAY -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A XRAY -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A XRAY -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A XRAY -m mark --mark 255 -j RETURN
iptables -t mangle -A XRAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 0x1
iptables -t mangle -A XRAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 0x1
iptables -t mangle -A PREROUTING -j XRAY
# Routing rule for the marked packets
ip rule add fwmark 0x1 table 100
ip route add local 0.0.0.0/0 dev lo table 100مقدار mark: 255 در sockopt به سوکتهای خروجی خود Xray اعمال میشود — قاعدهٔ -m mark --mark 255 -j RETURN از بازورود ترافیک خروجی خود Xray به مسیر TPROXY جلوگیری میکند (پیشگیری از حلقهٔ بازگشتی).
نکات
followRedirect: trueبرای هر دو حالت لازم است — این باعث میشود Xray مقصد اصلی قبل از NAT را از سوکت بخواند (SO_ORIGINAL_DSTبرای REDIRECT،IP_RECVORIGDSTADDRبرای TPROXY).- TPROXY به
CAP_NET_ADMINنیاز دارد (بهصورت root یا با این قابلیت اجرا کنید). - مقدار
sockopt.tproxyمیتواند"redirect"(همان حالت REDIRECT)،"tproxy"یا"off"باشد. - برای راهنمایی کامل پراکسی شفاف در لینوکس، مستندات Xray یک قالب اسکریپت نگهداری میکنند — "xray transparent proxy" را جستوجو کنید.
نکات بینهستهای
- sing-box انواع ورودی اختصاصی
redirectوtproxyرا با همان پیشنیازهای سمت کرنل عرضه میکند. ببینید Redirect/TProxy — sing-box. - mihomo هم میانبرهای سطح بالا (
redir-portوtproxy-port— به مبانی mihomo رجوع کنید) و هم ورودیهایlisteners:(type: redir,type: tproxy) را دارد. ببینید Redirect/TProxy — mihomo.
