Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проблема proto=udp в ByeDPI v0.16 #251

Open
YarNSD opened this issue Jan 17, 2025 · 1 comment
Open

Проблема proto=udp в ByeDPI v0.16 #251

YarNSD opened this issue Jan 17, 2025 · 1 comment

Comments

@YarNSD
Copy link

YarNSD commented Jan 17, 2025

Приветствую.
Попытаюсь описать суть проблемы своими словами, прошу прощения заранее, если буду ошибаться или криво выражаться.
Возьму для примера данную стратегию: -Kt,h -d1 -s0+s -d3+s -s6+s -d9+s -s12+s -d15+s -s20+s -d25+s -s30+s -An -Ku -O10 -a2 -An
здесь наличествуют 2 группы, первая -Kt,h -d1 -s0+s -d3+s -s6+s -d9+s -s12+s -d15+s -s20+s -d25+s -s30+s судя по фильтру для TLS и HTTP, вторая -Ku -O10 -a2 судя по фильтру UDP.
Суть проблемы заключается в том, что если группа для UDP стоит в конце стратегии, то по логам она пытается искать флаги в group=0, а это 1ая по счету группа для TLS и HTTP.

new event: fd: 488, evt: EV_REQUEST, mod_iter: 209
new event: fd: 488, evt: EV_REQUEST, mod_iter: 209
udp associate: fds=492,496,488 addr=0.0.0.0:0
new event: fd: 496, evt: EV_UDP_TUNNEL, mod_iter: 211
desync UDP: group=0, round=1, fd=492
bytes: 00010046000c6c3a0000000000000000 (74)
new event: fd: 484, evt: EV_UDP_TUNNEL, mod_iter: 208
desync UDP: group=0, round=1, fd=480
bytes: 00010046000c6c3a0000000000000000 (74)
new event: fd: 492, evt: EV_UDP_TUNNEL, mod_iter: 211
new event: fd: 452, evt: EV_IGNORE, mod_iter: 206
close: fd=452 (pair=484), recv: 0, rounds: 0
close: fd=484 (pair=480), recv: 84, rounds: 1
close: fd=480 (pair=452), recv: 0, rounds: 0

Получается, что не зависимо от местоположения группы UDP, она всегда ищет свои настройки в group=0.

При чем, если мы меняем местами группы и UDP ставим вперед -Ku -O10 -a2 -An -Kt,h -d1 -s0+s -d3+s -s6+s -d9+s -s12+s -d15+s -s20+s -d25+s -s30+s -An, то по логам, группа UDP ищет в group=0, а группа TLS и HTTP ищет, как ей и положено в group=1. Т.е. TCP понимает, что она смещена и берет настройки из нужной группы.

Спасибо.

@romanvht
Copy link

romanvht commented Jan 17, 2025

Судя по всему, ошибка связана с check_l34 в extend.c

В данном месте:
if ((dp->proto & IS_UDP) && (st != SOCK_DGRAM)) { return 0; }

Проблема возникает во время проверки dp->proto & IS_UDP.
Можно так: Если тип сокета SOCK_DGRAM, но протокол не UDP - отдаем 0.
Данный вариант решил проблему, но, думаю стоит дождаться hufrea.

if (dp->proto != IS_UDP && st & SOCK_DGRAM) { return 0; }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants