Dokodemo-door — Xray-core
Dokodemo (به ژاپنی بهمعنی «هر-دری») ورودی پراکسی شفاف Xray است. روی یک یا چند پورت گوش میدهد و هر اتصال پذیرفتهشده را به یک مقصد ثابت — یا روی Linux، از طریق SO_ORIGINAL_DST / IP_TRANSPARENT به مقصد اصلی پیش از NAT اتصال — ارسال میکند.
ورودی
settings برای یک ورودی با "protocol": "dokodemo-door":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (unset) | <host> | آدرس مقصد پیشفرض برای ترافیک ارسالی. وقتی `portMap` تطبیق ندارد و `followRedirect` نیز false است استفاده میشود. |
port | uint16 | 0 | <port> | پورت مقصد پیشفرض. بههمراه `address` استفاده میشود. |
portMap | map[string]string | {} | {<src-port>: <host:port>} | بازنویسی مقصد به ازای هر پورت. کلیدها پورتهای شنود (بهصورت رشته) هستند؛ مقادیر تحتاللفظی `host:port` میباشند. هر مقدار در زمان ساخت پیکربندی اعتبارسنجی میشود. |
network | *NetworkList | tcp | tcp | udp | tcp,udp | فهرست جداشده با کاما از پروتکلهای ترابرد قابل پذیرش. |
followRedirect | bool | false | true | false | خواندن مقصد اصلی از سیستمعامل (Linux iptables SO_ORIGINAL_DST / tproxy). وقتی true باشد، `address`/`port` در صورت ناتوانی در بازیابی به مقصد جایگزین تبدیل میشوند. |
userLevel | uint32 | 0 | <uint32> | سطح policy پیشفرض اعمالشده به اتصالهای ارسالی. |
منبع: infra/conf/dokodemo.go:10-17 · ثابتشده در v1.260327.0 (d2758a0)
مثالها
ارسالکنندهٔ پورت ایستا — پذیرش روی :5353 و ارسال به 1.1.1.1:53:
json
{
"inbounds": [
{
"tag": "dns-forward",
"listen": "0.0.0.0",
"port": 5353,
"protocol": "dokodemo-door",
"settings": {
"address": "1.1.1.1",
"port": 53,
"network": "tcp,udp"
}
}
]
}نگاشت به ازای پورت — پذیرش روی چندین پورت و ارسال هر یک به مقصد متفاوت:
json
{
"inbounds": [
{
"tag": "multi-forward",
"listen": "0.0.0.0",
"port": "80,443,5353",
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"portMap": {
"80": "10.0.0.10:80",
"443": "10.0.0.10:443",
"5353": "1.1.1.1:53"
}
}
}
]
}گیرندهٔ پراکسی شفاف Linux:
json
{
"inbounds": [
{
"tag": "tproxy",
"listen": "0.0.0.0",
"port": 12345,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"streamSettings": {
"sockopt": { "tproxy": "tproxy" }
}
}
]
}نکات
- مقادیر
portMapکه تحتاللفظیhost:portمعتبر نیستند در زمان راهاندازی ناموفق میشوند (infra/conf/dokodemo.go:26-30). - برای آنکه
followRedirect: trueبتواند مقصد اصلی را بازیابی کند، سوکت شنود بهIP_TRANSPARENT(TPROXY) نیاز دارد یا ورودی باید هدف iptables REDIRECT باشد. این را از طریقstreamSettings.sockopt.tproxyتنظیم کنید. - وقتی نه
address/portو نهportMapتطبیق میکنند وfollowRedirectنمیتواند مقصدی را بازیابی کند، اتصال بسته میشود. - فیلد شنود
portروی شیء والد ورودی هم یک پورت تنها و هم فهرست جداشده با کاما ("80,443") یا بازه ("5000-5010") را میپذیرد — نحو استاندارد فهرست پورت ورودی.
نکات بینهستهای
- sing-box ساختار اختصاصی dokodemo ندارد. از ورودی Direct استفاده کنید — فیلدهای
override_address/override_portآن مورد هدف ایستا را پوشش میدهند و حالت TPROXY از طریقtcp_fast_open/ گزینههای sniff در سطح ورودی فعال میشود. - mihomo دو طعم ارائه میدهد: یک مدخل زیر
listeners:باtype: tunnel، یا بلوک سطح بالایtunnels:با شکل رشتهٔ جداشده با کامای فشرده. به Tunnel — mihomo مراجعه کنید.
منبع: infra/conf/dokodemo.go:10-17 · v1.260327.0 (d2758a0)
