Skip to content

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 XRAY

REDIRECT فقط برای 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.

Core Tutorial اثر Argsment