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

Странные дела. Перезагрузка девайса при использовании nfqws #909

Open
Fenrir-0xFF opened this issue Dec 3, 2024 · 12 comments

Comments

@Fenrir-0xFF
Copy link

Fenrir-0xFF commented Dec 3, 2024

Сегодня ко мне обратился чел с очень странной проблемой, при использовании nfqws на мобильном интренете у него тупо ребутиться телефон, хотя через вайфай всё норм работает. Система HyperOS, android 14.
Уже всё что можно перебрал и перепробовал, nfqws что для линукса что для андроида, что просто в фоне что в режиме --daemon, версии правда тестил лишь 69.3 и 69.4, nfqws запускается норм, и через какоето короткое время телефон тупо ребутиться. В debug логе nfqws ничего полезного.
При этом после ребута повреждается файл hostlist-auto, с отключеным hostlist-auto проблема ребута не решается.
Проверил даже применение правил iptables без запуска nfqws - всё норм ничего не ребутиться, но как только запускаеш nfqws и через него начинает идти мобильный трафик происходит ребут.
Уже ХЗ что делать может кто что подскажет? Первый раз с таким сталкиваюсь.

Логи:
--filter-tcp=80,8000 --wssize=1:6 --dpi-desync=split --dpi-desync-fooling=md5sig,badsum --dpi-desync-ttl=0 --new --filter-tcp=443 --wssize=1:6 --dpi-desync=fake --dpi-desync-repeats=2 --dpi-desync-autottl=2 --dpi-desync-fake-tls=0x16030102 --hostlist-domains=youtube.com,googlevideo.com,ytimg.com,ggpht.com,youtubei.googleapis.com --new --filter-udp=50000-50099 --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-fake-quic=0xC30000000108 --new --filter-tcp=443 --wssize=1:6 --dpi-desync=disorder2 --new --filter-udp=443,6969 --dpi-desync=fake --dpi-desync-any-protocol --dpi-desync-fake-quic=0xC30000000108

read 4 bytes from hex string
read 6 bytes from hex string
read 6 bytes from hex string
adding low-priority default empty desync profile
we have 5 user defined desync profile(s) and default low priority profile 0
[profile 2] autottl ipv4 2:3-20
[profile 2] autottl ipv6 2:3-20

lists summary:
hostlist fixed
profile 2 include fixed hostlist

splits summary:
profile 1 multisplit abs 2
profile 2 multisplit abs 2
profile 3 multisplit abs 2
profile 4 multisplit abs 2
profile 5 multisplit abs 2
profile 0 multisplit abs 2

initializing conntrack with timeouts tcp=60:300:60 udp=60
opening library handle
unbinding existing nf_queue handler for AF_INET (if any)
binding nfnetlink_queue as nf_queue handler for AF_INET
binding this socket to queue '200'
setting copy_packet mode
initializing raw sockets bind-fix4=0 bind-fix6=0
set_socket_buffers fd=5 rcvbuf=2048 sndbuf=32768
fd=5 SO_RCVBUF=4096
fd=5 SO_SNDBUF=65536
set_socket_buffers fd=6 rcvbuf=2048 sndbuf=32768
fd=6 SO_RCVBUF=4096
fd=6 SO_SNDBUF=65536

-m connbytes iptables у него не поддерживает, поэтому в правилах не используется.

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
wakeupctrl_mangle_INPUT  all  --  anywhere             anywhere            
routectrl_mangle_INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
tetherctrl_mangle_FORWARD  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
NFQUEUE    udp  --  anywhere             anywhere             multiport dports https,6969,50000:50099 mark match ! 0x40000000/0x40000000 NFQUEUE num 200 bypass
NFQUEUE    tcp  --  anywhere             anywhere             multiport dports http,https,8000 mark match ! 0x40000000/0x40000000 NFQUEUE num 200 bypass

Chain bw_mangle_POSTROUTING (0 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere             policy match dir out pol ipsec
MARK       all  --  anywhere             anywhere             MARK and 0xffefffff
           all  --  anywhere             anywhere            match bpf pinned /sys/fs/bpf/netd_shared/prog_netd_skfilter_egress_xtbpf

Chain idletimer_mangle_POSTROUTING (0 references)
target     prot opt source               destination         
IDLETIMER  all  --  anywhere             anywhere             timeout:15 label:1 send_nl_msg

Chain nm_mdmprxy_mngl_post (0 references)
target     prot opt source               destination         

Chain oem_mangle_post (0 references)
target     prot opt source               destination         

Chain qcom_MIW_wapper (0 references)
target     prot opt source               destination         

Chain qcom_htimer_POSTROUTING (0 references)
target     prot opt source               destination         

Chain qcom_qos_filter_POSTROUTING (0 references)
target     prot opt source               destination         

Chain qcom_qos_reset_POSTROUTING (0 references)
target     prot opt source               destination         
MARK       all  --  anywhere             anywhere             MARK and 0x0

Chain routectrl_mangle_INPUT (1 references)
target     prot opt source               destination         
MARK       all  --  anywhere             anywhere             MARK xset 0xf0001/0xffefffff
MARK       all  --  anywhere             anywhere             MARK xset 0x30064/0xffefffff
MARK       all  --  anywhere             anywhere             MARK xset 0x30065/0xffefffff

Chain tc_idletimer (0 references)
target     prot opt source               destination         

Chain tc_wmm (0 references)
target     prot opt source               destination         

Chain tetherctrl_mangle_FORWARD (1 references)
target     prot opt source               destination         
TCPMSS     tcp  --  anywhere             anywhere             tcp flags:SYN/SYN TCPMSS clamp to PMTU

Chain wakeupctrl_mangle_INPUT (1 references)
target     prot opt source               destination         
NFLOG      all  --  anywhere             anywhere             mark match 0x80000000/0x80000000 limit: avg 10/sec burst 5 nflog-prefix  "432902426637:rmnet_data1" nflog-group 3 nflog-threshold 8
NFLOG      all  --  anywhere             anywhere             mark match 0x80000000/0x80000000 limit: avg 10/sec burst 5 nflog-prefix  "437197393933:wlan0" nflog-group 3 nflog-threshold 8
@bol-van
Copy link
Owner

bol-van commented Dec 3, 2024

может быть китайский дривер который не проверяли с nfqueue
если без дурилки в холостом режиме тоже падает ?
надо смотреть есть ли pstore fs
если да, в ней могут сохраняться дмесг предсмертные

@Fenrir-0xFF
Copy link
Author

если без дурилки в холостом режиме тоже падает ?

Проверю

надо смотреть есть ли pstore fs
если да, в ней могут сохраняться дмесг предсмертные

Тоже про системый лог мыли были только ХЗ где он там находится если ведётся
Попробую раздобыть

@Fenrir-0xFF
Copy link
Author

Fenrir-0xFF commented Dec 3, 2024

если без дурилки в холостом режиме тоже падает ?

Нет не падает

Логи чютка позднее вытащить попробует.
Он на втором телефоне этуже версию тестил, там всё норм, да и у других подобных проблем пока ещё не возникало. Хотя может и возникали проблемы, но или система их игнорила или потихому nfqws падал, поэтому их не замечяли.
У меня на какихто версиях вроде 62 или 63.0 тоже nfqws падал потихому пару раз,но рандомно и без конкретики, пробовал debug включять но он как назло не хотел в эти моменты падать, вобщем особого значения этому не придал, да и на телефоне его использую редко, в основном на роутере висит, там не падает.

@Fenrir-0xFF
Copy link
Author

С логами облом(
Тут /proc/last_kmesg и /sys/fs/pstore/ ничего
Только в dropbox лог сохраняется, но там чисто ошибки apk

@bol-van
Copy link
Owner

bol-van commented Dec 3, 2024

Важно проверить, что в iptables есть -m mark desync mark для отсечения лупов
Если телефон ребутится внезапно, значит падает ядро.
user mode процесс не способен своим неправильным поведением уронить ядро. причина в нем

Еще такой момент. Надо давать ему --uid 1 . У меня на некоторых аппаратах были зависания тачпада и кнопок с дефолтным uid 0x7FFFFFFF

@Fenrir-0xFF
Copy link
Author

Важно проверить, что в iptables есть -m mark desync mark для отсечения лупов

Если его нет то и правила в iptables не пропишутся, выдадут ошибку, а тут прописались, темболее в скрипте проверка идёт автоматически перед генерацией правил, if [ "$(cat /proc/net/ip_tables_matches | grep -c 'mark')" != "0" ];
Аналогично с -m connbytes и -m multiport то что не поддерживается не добавляется в правила, в случяе с отсутствием multiport порты добавляются поодиночке

Если телефон ребутится внезапно, значит падает ядро. user mode процесс не способен своим неправильным поведением уронить ядро. причина в нем

У него прошивка на которой падает HyperOS, на EvolutionX какраз всё норм, немного запутал меня.
Погуглил - HyperOS официальное дерьмо MIUI, поэтому не удивительно что такие проблемы возникают.

Еще такой момент. Надо давать ему --uid 1 . У меня на некоторых аппаратах были зависания тачпада и кнопок с дефолтным uid 0x7FFFFFFF

Там --uid=0:0 стоит, типо рут юзер. Напишу ему завтра чтоб попробовал сменить на 1
Есть кстати смысл отдельные dpi-desync и dpi-desync-fooling перебрать и позапускать? Может изза чегото конкретного падает, потомучто без них при запуске nfqws всё норм было.

с дефолтным uid 0x7FFFFFFF

Такой разве существует? На ведре если не ошибаюсь максимальный uid 10999

@bol-van
Copy link
Owner

bol-van commented Dec 3, 2024

uid это 32 битное целое в ядре
может

думаю проблемы возникают когда дропаются пакеты из очереди

@Fenrir-0xFF
Copy link
Author

Fenrir-0xFF commented Dec 5, 2024

думаю проблемы возникают когда дропаются пакеты из очереди

Похоже на то, потомучто он щяс чекал wssize, syndata, fake телефон не ребутиться, даже dpi обойти получилось на фейке

@bol-van
Copy link
Owner

bol-van commented Dec 5, 2024

syndata и fake дропают

@Fenrir-0xFF
Copy link
Author

syndata и fake дропают

Они же только дополнительные пакеты добавляют перед оригинальными.
А всякие split и disorder уже оригинальный пакет кромсают

@Fenrir-0xFF
Copy link
Author

Чел заменил hex в
--dpi-desync-fake-tls=0x16030102
--dpi-desync-fake-quic=0xC30000000108
на .bin файлы, телефон перестал ребутиться при использовании fake

@bol-van
Copy link
Owner

bol-van commented Dec 14, 2024

Понятно, что это не из-за nfqws. Нестабильно-гоночная проблема в ядре

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