Skip to content

TUN — Xray-core

Xray-core یک ورودی TUN را در proxy/tun فراهم می‌کند. این یک دستگاه TUN ایجاد می‌کند، بسته‌های خام را می‌خواند و آن‌ها را با یک پشتهٔ شبکهٔ درون‌فرایندی حداقلی پیش از تحویل به خروجی‌ها رمزگشایی می‌کند. در گذشته باید مسیرها، DNS و قواعد دیوارهٔ آتش را خودتان تنظیم می‌کردید؛ نسخه‌های اخیر کمک‌کارهای انتخابی اضافه می‌کنند — gateway، dns، autoSystemRoutingTable و autoOutboundsInterface — که به Xray اجازه می‌دهند ورودی‌های جدول مسیریابی سیستم را نصب کند و خروجی‌ها را به‌طور خودکار به یک رابط فیزیکی مقید کند.

این هنوز سبک‌تر از پشته‌های TUN در sing-box / mihomo است: نه strict-route، نه auto-redirect و نه فیلتر UID/بسته وجود دارد. برای آن‌ها از sing-box یا mihomo به‌عنوان جلویی TUN استفاده کنید و خروجی آن‌ها را از طریق Xray مسیریابی کنید.

ورودی

settings برای "protocol": "tun":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(auto-generated)<interface name>نام دستگاه TUN که در زمان راه‌اندازی ایجاد می‌شود. وقتی خالی باشد، یک نام استفاده‌نشدهٔ `utun<N>` (با N بین 10 تا 1024) به‌طور خودکار انتخاب می‌شود.
descstringWintun<string>توضیح دستگاه که هنگام ایجاد به آداپتور Wintun داده می‌شود (فقط Windows). وقتی خالی باشد به‌طور پیش‌فرض "Wintun" است.
mtuuint321500<bytes>واحد بیشینهٔ ارسال برای این دستگاه.
gateway[]string<ip address> | …آدرس(های) دروازه که به رابط TUN اختصاص داده می‌شوند.
dns[]string<ip address> | …آدرس(های) سرور DNS که روی رابط TUN پیکربندی می‌شوند.
userLeveluint320<uint32>سطح سیاست پیش‌فرض برای اتصال‌های دریافت‌شده روی این ورودی.
autoSystemRoutingTable[]string<routing-table entry> | …وقتی تنظیم شود، Xray به‌طور خودکار ورودی‌های جدول مسیریابی سیستم را نصب می‌کند که ترافیک را به درون دستگاه هدایت می‌کنند. ارائهٔ این فهرست مسیریابی خودکار را فعال می‌کند.
autoOutboundsInterface*stringauto<interface name> | autoرابط فیزیکی که اتصال‌های خروجی به آن مقید می‌شوند، تا از حلقه‌های مسیریابی جلوگیری شود. وقتی autoSystemRoutingTable تنظیم شده باشد به‌طور پیش‌فرض «auto» است.

منبع: infra/conf/tun.go:14-23 · ثابت‌شده در v26.7.28 (5ca6f4b)

مثال

json
{
  "inbounds": [{
    "tag": "tun-in",
    "protocol": "tun",
    "settings": {
      "name": "xray0",
      "mtu": 9000
    }
  }]
}

برای اینکه Xray خودش مسیریابی را مدیریت کند، autoSystemRoutingTable را اضافه کنید (و به‌صورت اختیاری رابط خروجی را تثبیت کنید):

json
{
  "inbounds": [{
    "tag": "tun-in",
    "protocol": "tun",
    "settings": {
      "name": "xray0",
      "mtu": 1500,
      "autoSystemRoutingTable": ["main"],
      "autoOutboundsInterface": "auto"
    }
  }]
}

یا به‌جای آن شبکه‌بندی سیستم را به‌صورت دستی پیکربندی کنید:

sh
# Linux example
ip addr add 198.18.0.1/30 dev xray0
ip link set xray0 up

# Route everything through xray0 (skip your management subnet)
ip route add 1/1 dev xray0
ip route add 128/1 dev xray0

# DNS hijack
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-port 5353
# (then have an Xray dokodemo-door inbound on 5353)

نکات

  • ورودی TUN در Xray یک خوانندهٔ سطح پایین بسته‌هاست. خودش TCP/IP را تجزیه نمی‌کند؛ به‌جای آن، بسته‌ها توسط یک پشتهٔ شبکهٔ درون‌فرایندی حداقلی رمزگشایی می‌شوند و به خروجی‌ها تحویل داده می‌شوند.
  • استفادهٔ رایج در لینوکس: همراه با ورودی‌های dokodemo-door و یک مجموعه قواعد iptables دست‌ساز برای بخش‌های پراکسی شفاف، یا تنظیم autoSystemRoutingTable تا Xray خودش مسیرها را نصب کند.
  • autoSystemRoutingTable باعث می‌شود Xray ورودی‌های جدول مسیریابی سیستم را به‌طور خودکار مدیریت کند؛ وقتی حاضر باشد و autoOutboundsInterface حذف شود، رابط خروجی به‌طور پیش‌فرض auto می‌شود. gateway و dns آدرس و حل‌کننده(های) روی دستگاه را تنظیم می‌کنند.
  • در ویندوز/مک‌اواس، ورودی TUN در Xray یک دستگاه wintun / utun ایجاد می‌کند. با autoSystemRoutingTable می‌تواند مسیریابی را برای شما سیم‌کشی کند؛ در غیر این صورت آن را خودتان اسکریپت کنید. بسیاری از کاربران در آن پلتفرم‌ها هنوز sing-box یا mihomo را برای مجموعه‌ویژگی‌های غنی‌تر TUN ترجیح می‌دهند.

نکات بین‌هسته‌ای

  • sing-box دارای یک ورودی TUN کاملاً مجهز با auto_route، auto_redirect، strict_route، route_address، فیلتر UID/بسته و انتخاب پشتهٔ هر پلتفرم (gVisor / system / mixed) است. ببینید TUN — sing-box.
  • mihomo ورودی TUN معادل کاملی در بلوک سطح بالای tun: دارد با مجموعه‌ای از همان گزینه‌ها با نام‌های kebab-case. ببینید TUN — mihomo.

منبع: infra/conf/tun.go:14-23 · v26.7.28 (5ca6f4b)

Core Tutorial اثر Argsment