alireza0 / x-ui

xray panel supporting multi-protocol multi-user expire day & traffic (Vmess & Vless & Trojan & Shadowsocks)
https://t.me/XrayUI
GNU General Public License v3.0
3.18k stars 489 forks source link

باگ در Fragment Tcp Segment #1089

Closed Alireza78na closed 4 months ago

Alireza78na commented 8 months ago

سلام مجدد

من به یه موردی برخوردم ، یکم واسم عجیبه و نفهمیدم چرا این اتفاق میوفته مشکل اینه که یک کانفیگ رو با مقادیر Fragment یکسان و کانفیگ ها و دامنه های کاملا یکسان از 2 سورس متفاوت ( یکی با sub و دیگری با ابزار IRCF ) وارد V2rayNG ( آخرین نسخه در این تاریخ ) کردم و به طرز عجیبی اونی که با ساب هست بسیار ضعیف و اونی که با IRCF هست خیلی عالی و پرسرعت کار میکنه. نکته ی جالب ترش اینه که با نت همراه هردو عالی کار میکنن. من هردو Json رو اینجا قرار میدم ، لطفا چک کنید ببینید علت چی میتونه باشه. ( ضمن اینکه json مربوط به IRCF رو یکم تغییر دادم چون سرعت رو نمایش نمیداد )

sub:

{
  "dns": {
    "queryStrategy": "UseIP",
    "servers": [
      {
        "address": "8.8.8.8",
        "skipFallback": false
      }
    ],
    "tag": "dns_out"
  },
  "inbounds": [
    {
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true,
        "userLevel": 8
      },
      "sniffing": {
        "destOverride": [
          "http",
          "tls",
          "fakedns"
        ],
        "enabled": true
      },
      "tag": "socks"
    },
    {
      "port": 10809,
      "protocol": "http",
      "settings": {
        "userLevel": 8
      },
      "tag": "http"
    }
  ],
  "log": {
    "loglevel": "warning"
  },
  "outbounds": [
    {
      "mux": {
        "concurrency": 16,
        "enabled": true,
        "xudpConcurrency": 16,
        "xudpProxyUDP443": "allow"
      },
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "cleanIP",
            "port": 8080,
            "users": [
              {
                "encryption": "",
                "flow": "",
                "id": "**********************************",
                "level": 8,
                "security": "auto"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "security": "none",
        "sockopt": {
          "dialerProxy": "fragment",
          "tcpKeepAliveIdle": 100
        },
        "wsSettings": {
          "headers": {
            "Host": "host"
          },
          "path": ""
        }
      },
      "tag": "proxy"
    },
    {
      "protocol": "freedom",
      "settings": {
        "domainStrategy": "UseIP"
      },
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "settings": {
        "response": {
          "type": "http"
        }
      },
      "tag": "block"
    },
    {
      "protocol": "freedom",
      "settings": {
        "domainStrategy": "AsIs",
        "fragment": {
          "interval": "1-2",
          "length": "1-10",
          "packets": "1-3"
        }
      },
      "streamSettings": {
        "network": "tcp",
        "security": "",
        "sockopt": {
          "tcpKeepAliveIdle": 100
        }
      },
      "tag": "fragment"
    }
  ],
  "policy": {
    "levels": {
      "8": {
        "connIdle": 300,
        "downlinkOnly": 1,
        "handshake": 4,
        "uplinkOnly": 1
      }
    },
    "system": {
      "statsOutboundDownlink": true,
      "statsOutboundUplink": true
    }
  },
  "remarks": "sub",
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "network": "tcp,udp",
        "outboundTag": "proxy",
        "type": "field"
      }
    ]
  },
  "stats": {}
}

IRCF:

{
"dns": {
    "queryStrategy": "UseIP",
    "servers": [
      {
        "address": "8.8.8.8",
        "skipFallback": false
      }
    ],
    "tag": "dns_out"
  },
  "log": {
    "access": "",
    "error": "",
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true,
        "userLevel": 8
      },
      "sniffing": {
        "destOverride": [
          "http",
          "tls",
          "fakedns"
        ],
        "enabled": true
      },
      "tag": "socks"
    },
    {
      "port": 10809,
      "protocol": "http",
      "settings": {
        "userLevel": 8
      },
      "tag": "http"
    }
  ],
  "log": {
    "loglevel": "warning"
  },
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vmess",
      "settings": {
        "vnext": [
          {
            "address": "cleanIP",
            "port": 8080,
            "users": [
              {
                "id": "****************************",
                "alterId": 0,
                "email": "t@t.tt",
                "security": "auto",
                "encryption": "none",
                "flow": ""
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/?ed=2048",
          "headers": {
            "Host": "host"
          }
        },
        "sockopt": {
          "dialerProxy": "fragment",
          "tcpKeepAliveIdle": 100,
          "mark": 255,
          "tcpNoDelay": true
        }
      },
      "mux": {
        "enabled": true,
        "concurrency": 16,
        "xudpConcurrency": 16,
        "xudpProxyUDP443": "allow"
      }
    },
    {
      "tag": "fragment",
      "protocol": "freedom",
      "settings": {
        "domainStrategy": "AsIs",
        "fragment": {
          "packets": "1-3",
          "length": "1-10",
          "interval": "1-2"
        }
      },
      "streamSettings": {
        "sockopt": {
          "tcpNoDelay": true,
          "tcpKeepAliveIdle": 100
        }
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {
        "response": {
          "type": "http"
        }
      }
    }
  ],
  "policy": {
    "levels": {
      "8": {
        "connIdle": 300,
        "downlinkOnly": 1,
        "handshake": 4,
        "uplinkOnly": 1
      }
    },
    "system": {
      "statsOutboundDownlink": true,
      "statsOutboundUplink": true
    }
  },
  "remarks": "IRCF",
  "routing": {
    "domainStrategy": "AsIs",
    "rules": [
      {
        "network": "tcp,udp",
        "outboundTag": "proxy",
        "type": "field"
      }
    ]
  },
  "stats": {}
}
alireza0 commented 8 months ago

درود بر شما من هنوز این مدل ساب رو ریلیز نکردم! شما چطور تست گرفتین ؟

Alireza78na commented 8 months ago

درود بر شما من هنوز این مدل ساب رو ریلیز نکردم! شما چطور تست گرفتین ؟

راستش دیدم جناب MhSanaei زودتر ریلیز کردن ، تست کردم و از اونجایی که میدونستم این موارد رو شما زحمتشو میکشید ، اینجا issue زدم.

alireza0 commented 8 months ago

به نظر میاد این کانفیگی که از ساب گرفتین دستکاری کرده باشید. ساخت چنین کانفیگی از پنل شدنی نیست. به هر حال این تنظیمات رو باید با سعی و خطا بهینه کنید.

Alireza78na commented 8 months ago

به نظر میاد این کانفیگی که از ساب گرفتین دستکاری کرده باشید. ساخت چنین کانفیگی از پنل شدنی نیست. به هر حال این تنظیمات رو باید با سعی و خطا بهینه کنید.

کانفیگ ساب رو از V2rayNG خروجی گرفتم و اینجا فرستادم ، احتمالا این کار باعث شده تغییراتی به وجود بیاد. من کدی که مستقیما از sub گرفتم رو اینجا میزارم ، لطفا چک کنید ببینید مشکل از چی میتونه باشه که روی مخابرات با IRCF عالی کار میکنه ولی دقیقا با همون مشخصات و پارامتر ها با sub با سرعت بسیار پایین و پینگ بالا کار میکنه.

Json Subscription:


[
  {
    "dns": {
      "queryStrategy": "UseIP",
      "servers": [
        {
          "address": "8.8.8.8",
          "skipFallback": false
        }
      ],
      "tag": "dns_out"
    },
    "inbounds": [
      {
        "port": 10808,
        "protocol": "socks",
        "settings": {
          "auth": "noauth",
          "udp": true,
          "userLevel": 8
        },
        "sniffing": {
          "destOverride": [
            "http",
            "tls",
            "fakedns"
          ],
          "enabled": true
        },
        "tag": "socks"
      },
      {
        "port": 10809,
        "protocol": "http",
        "settings": {
          "userLevel": 8
        },
        "tag": "http"
      }
    ],
    "log": {
      "loglevel": "warning"
    },
    "outbounds": [
      {
        "protocol": "vmess",
        "tag": "proxy",
        "streamSettings": {
          "network": "ws",
          "security": "none",
          "sockopt": {
            "dialerProxy": "fragment",
            "tcpKeepAliveIdle": 100,
            "tcpNoDelay": true
          },
          "wsSettings": {
            "headers": {
              "Host": "HOST"
            },
            "path": ""
          }
        },
        "mux": {
          "enabled": true,
          "concurrency": 16,
          "xudpConcurrency": 16,
          "xudpProxyUDP443": "reject"
        },
        "settings": {
          "vnext": [
            {
              "address": "ADDRESS",
              "port": PORT,
              "users": [
                {
                  "id": "ID",
                  "level": 8
                }
              ]
            }
          ]
        }
      },
      {
        "protocol": "freedom",
        "settings": {
          "domainStrategy": "UseIP"
        },
        "tag": "direct"
      },
      {
        "protocol": "blackhole",
        "settings": {
          "response": {
            "type": "http"
          }
        },
        "tag": "block"
      },
      {
        "tag": "fragment",
        "protocol": "freedom",
        "settings": {
          "domainStrategy": "AsIs",
          "fragment": {
            "packets": "1-3",
            "length": "1-15",
            "interval": "1-2"
          }
        },
        "streamSettings": {
          "sockopt": {
            "tcpKeepAliveIdle": 100,
            "tcpNoDelay": true
          }
        }
      }
    ],
    "policy": {
      "levels": {
        "8": {
          "connIdle": 300,
          "downlinkOnly": 1,
          "handshake": 4,
          "uplinkOnly": 1
        }
      },
      "system": {
        "statsOutboundDownlink": true,
        "statsOutboundUplink": true
      }
    },
    "remarks": "NAME",
    "routing": {
      "domainStrategy": "AsIs",
      "rules": [
        {
          "network": "tcp,udp",
          "outboundTag": "proxy",
          "type": "field"
        }
      ]
    },
    "stats": {}
  }
]
alireza0 commented 8 months ago

با این تنظیم فرگمنت و مولتیپلکس خیلی طبیعیه که پینگ و سرعت بیاد پایین. بهتره مولتی پلکس رو حذف کنید. البته من تجربه زیادی در زمینه کانفیگ ها ندارم بهتره با دوستان فعال در این زمینه در مورد نحوه کانفیگ صحبت کنید

Alireza78na commented 8 months ago

با این تنظیم فرگمنت و مولتیپلکس خیلی طبیعیه که پینگ و سرعت بیاد پایین. بهتره مولتی پلکس رو حذف کنید. البته من تجربه زیادی در زمینه کانفیگ ها ندارم بهتره با دوستان فعال در این زمینه در مورد نحوه کانفیگ صحبت کنید

اخه این تنظیمات واسه هر دو json دقیقا برابره ( فرگمنت رو امروز تغییر دادم ، موقع تست همه چی دقیقا مثل هم بود )

سوالی که واسم پیش اومده اینه که چرا ۲ تا json که تمام مواردش از جمله mux و Fragment و دامنه های استفاده شده و پورت و کلا همه چی دقیقا همه مثل هم هست ، با یکی عالی کار میکنه و با یکی مشکل داره. کانفیگی که خوب کار میکنه با IRCF فرگمنت شده کانفیگی که باهاش مشکل دارم روی sub هست. من حدس میزنم یه فرقی توی کد هست که باعث میشه این اتفاق بیوفته ، اگه خارج از حوصلتون نبود ، لطفا ۲ تا کد رو باهم مقایسه کنید ببینید چی داره باعث میشه این اتفاق بیوفته. پیشاپیش ممنونم از وقتی که میزارید 🌹

alireza0 commented 8 months ago

اگر هر دو تنظیم یکی باشند و جوابی که میگیرید یکی نیست، هیچ کمکی کسی بهتون نمیتونه بکنه. کد ها و پنل هیچ تاثیری توی ارتباط ندارند.

Alireza78na commented 8 months ago

اگر هر دو تنظیم یکی باشند و جوابی که میگیرید یکی نیست، هیچ کمکی کسی بهتون نمیتونه بکنه. کد ها و پنل هیچ تاثیری توی ارتباط ندارند.

به هرحال من این ویدیو رو میزارم اینجا که دقیقا ببینید داره چه اتفاقی میوفته با اینکه مشکل منطقی به نظر نمیرسه ، ولی کاربرای زیادی دیدم که مشکلشون مثل مشکل من بود: https://u.pcloud.link/publink/show?code=XZ29dF0ZxBAbDrcTeQ0IaeiA1MP3iR157cUV

alireza0 commented 8 months ago

تنها تفاوت منطقی دو تنظیم، استفاده از Early Data است که توی اینباند پنل تنظیم نکردین. البته تنظیم اندازه فرگمنت هم کمی متفاوته.

Alireza78na commented 8 months ago

ممنونم از وقتی که میزارید پاسخ میدید. من این early date رو فعال کردم و تنظیمات فرگمنت رو هم کاملا یکسان انتخاب کردم ولی مشکل رفع نشد باز.

من حدس میزنم یه مشکلی روی V2rayNG هست که داره اینجوری میشه. مثلا نبودن یا بودن یه پارامتری داره باعث میشه مشکل درست شه

برای مثال این ۲ قسمت توی sub و ircf متفاوت هست:

IRCF:

            "address": "cleanIP",
            "port": 8080,
            "users": [
              {
                "id": "****************************",
                "alterId": 0,
                "email": "t@t.tt",
                "security": "auto",
                "encryption": "none",
                "flow": ""
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "ws",
        "wsSettings": {
          "path": "/?ed=2048",
          "headers": {
            "Host": "host"
          }

Sub:

              "address": "ADDRESS",
              "port": PORT,
              "users": [
                {
                  "id": "ID",
                  "level": 8
                }
              ]
            }
          ]
        }

من این ۲ تا کانفیگ رو با چندتا نرم افزار دیگه تست میکنم ببینم نتیجه چی میشه و همینجا اطلاع میدم. ولی خب با توجه توضیحات شما ، به نظر میرسه این مورد بخاطر ناهمانگی V2rayNG باشه ، چون اینطور که متوجه شدم با sub انگار اصلا فرگمنت اعمال نمیشه ، چون سرعت و پینگ و درکل رفتار کانفیگ مثل وقتیه که فرگمنت اعمال نشده و کانفیگ معمولیه

چیزی که. عجیب تر و غیرمنطقی تره اینه که رو نت همراه. هردو عالی کار میکنن ، رو نت مخابرات و تا جایی که میدونم کلا adsl،vdsl کانفیگ ساب خوب کار نمیکنه و کانفیگ ircf بهتر جواب میده.

من سعی میکنم رو گیتهاب سایر دوستان مثل ircf و ... هم موضوع مطرح کنم که این issue دیگه اذیت کننده نباشه و امیدوارم راه حلی واسه این مشکل عجیب و غریب پیدا شه