Skip to content

نقاط‌انتهایی ​

endpoints پشته‌های پروتکلی را نگه می‌دارد که هم‌زمان ورودی و خروجی‌اند: برای نمونه یک نمونهٔ WireGuard یا Tailscale هم اتصال‌های رسیده از تونل را می‌پذیرد و هم اتصال‌هایی به داخل تونل آغاز می‌کند. شکل مدخل همان پاکت تختِ ورودی‌ها و خروجی‌هاست — type / tag به‌علاوهٔ فیلدهای خود نوع انتخاب‌شده در همان سطح.

پاکت ​

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
typestring—wireguard | openconnect | openvpn-client | openvpn-server | tailscaleنوع نقطه‌انتهایی. تعیین می‌کند بقیهٔ شیء به کدام ساختار گزینه‌ها رمزگشایی شود.
tagstring——نام یکتای این نقطه‌انتهایی. هر جا tag خروجی پذیرفته شود قابل استفاده است و در سمت ورودی هم توسط قواعد مسیر تطبیق‌پذیر است.

منبع: option/endpoint.go:18-22 · ثابت‌شده در v1.14.2 (af6e64c)

فیلدهای هر نوع در WireGuard و Tailscale مستند شده‌اند. ‏OpenVPN و OpenConnect در OpenVPN و OpenConnect مستند شده‌اند.

مثال حداقلی ​

json
{
  "endpoints": [
    {
      "type": "wireguard",
      "tag": "wg-ep",
      "address": ["10.0.0.2/32"],
      "private_key": "<base64-private-key>",
      "peers": [
        {
          "address": "wg.example.com",
          "port": 51820,
          "public_key": "<base64-public-key>",
          "allowed_ips": ["0.0.0.0/0"]
        }
      ]
    }
  ],
  "route": { "final": "wg-ep" }
}

نکات ​

  • WireGuard یک نقطه‌انتهایی است؛ خروجی wireguard وجود ندارد. همان ساختار هر دو سوی تونل را پوشش می‌دهد.
  • ‏wireguard به ساختی با برچسب with_wireguard، tailscale به with_tailscale، openvpn-client / openvpn-server به with_openvpn و openconnect به with_openconnect نیاز دارد (باینری‌های انتشار رسمی هر چهار را دارند).
  • ‏openvpn-client / openvpn-server با سرورها و کلاینت‌های استاندارد OpenVPN سازگارند، از جمله حالت کلید ایستا و مجموعه‌رمزها و الگوریتم‌های چکیده‌ساز قدیمی. نوع سرور DNS همراه، openvpn، از گزینه‌های DNS که سرور OpenVPN ارسال می‌کند استفاده می‌کند.
  • ‏openconnect فقط کلاینت است و با سرورهای Cisco AnyConnect، GlobalProtect، Fortinet، F5، Pulse Connect Secure و Juniper Network Connect کار می‌کند؛ نوع سرور DNS ‏openconnect از حل‌کننده‌های DNS تقسیم‌شده‌ای که ارسال می‌کند استفاده می‌کند. ورودهای تعاملی (مثلاً SSO) از طریق کلاینت‌های گرافیکی یا Dashboard ‏sing-box انجام می‌شوند.
  • اتصال‌های TCP، UDP و ICMP از ورودی‌های L3 (TUN، WireGuard، Tailscale) می‌توانند در pre-match مستقیماً در لایهٔ L3 به نقطه‌انتهایی‌های WireGuard و Tailscale هدایت شوند، بدون ترجمهٔ L3 به L4.
  • قواعد مسیر می‌توانند ترافیکِ بیرون‌آمده از نقطه‌انتهایی را همان‌طور تطبیق دهند که tag ورودی را تطبیق می‌دهند.

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

  • Xray-core ‏WireGuard را به‌صورت پروتکل عادی ورودی یا خروجی نگه می‌دارد (protocol: "wireguard" و IsClient بسته به جایگاه). WireGuard در Xray را ببینید.
  • mihomo ‏WireGuard را فقط به‌صورت پراکسی (خروجی) مدل می‌کند. WireGuard در mihomo را ببینید.

منبع: option/endpoint.go:18-22 · v1.14.2 (af6e64c)

Core Tutorial اثر Argsment