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

accept: No file descriptors available #227

Open
Zurabikus opened this issue Nov 9, 2024 · 4 comments
Open

accept: No file descriptors available #227

Zurabikus opened this issue Nov 9, 2024 · 4 comments

Comments

@Zurabikus
Copy link

Zurabikus commented Nov 9, 2024

Роутер Keenetic KN-1012, установлен OPKG на флешку,
opkg print-architecture выдает:

arch all 100  
arch aarch64-3.10 150 
arch aarch64-3.10_kn 200  

Использовал соответствующий бинарник из релиза, запускал ради примера из терминала с параметрами:

ciadpi -i 192.168.20.1 -p 1999 --hosts=yt-domains.txt --split 2 --auto=none

Ip как и у роутера, порт указал произвольный.
Также настроен прокси через веб-интерфейс, подключение через него сделал приоритетным.

Буквально через несколько секунд после того, как прокси выставлен приоритетным, падает с указанной ошибкой.


Также попробовал бинарник из https://github.com/spvkgn/ByeDPI-OpenWrt/releases, cortex-a53.
Запускал так:

/opt/byedpi/usr/bin/ciadpi -i 192.168.20.1 ...

То есть все параметры как и раньше, но изменен путь к файлику.

К сожалению, другая сборка не помогла и точно также падает с такой же ошибкой.

Буду благодарен за помощь с решением проблемы.

@vehametra
Copy link

пробовал лимит количества соединений уменьшать?

@hufrea
Copy link
Owner

hufrea commented Nov 10, 2024

Предполагаю, соединения от прокси снова перенаправляются на прокси. Стоит посмотреть логи (--debug 2), если там куча accept-ов и в адресе соединения указан IP, который программа слушает, то так и есть.

@Zurabikus
Copy link
Author

Zurabikus commented Nov 10, 2024

пробовал лимит количества соединений уменьшать?

Честно говоря, я не знаю как это сделать на роутере... Если физически, то из всего количества домашних устройств к сети подключен лишь ПК.


Предполагаю, соединения от прокси снова перенаправляются на прокси. Стоит посмотреть логи (--debug 2), если там куча accept-ов и в адресе соединения указан IP, который программа слушает, то так и есть.

Действительно, с --debug 2 в логах летят accept-ы, но все они идут не с адреса роутера (параметр -i в примерах выше), не с адреса ПК (так как только он подключен к сети), не с адреса прокси, а идут они с какого-то непонятного айпишника, резолв которого выдает cloud.example.com...

Вот листинг начала лога:

new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=5
new event: fd: 5, evt: EV_REQUEST, mod_iter: 1
new event: fd: 5, evt: EV_REQUEST, mod_iter: 1
new conn: fd=6, addr=178.249.69.13:80
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=7
new event: fd: 6, evt: EV_CONNECT, mod_iter: 3
new event: fd: 7, evt: EV_REQUEST, mod_iter: 4
new event: fd: 5, evt: EV_TUNNEL, mod_iter: 1
desync TCP, m=1, r=1
host: captive.keenetic.ru (28)
send: pos=0-51
new event: fd: 7, evt: EV_REQUEST, mod_iter: 4
new conn: fd=8, addr=178.249.69.13:80
new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=9
new event: fd: 8, evt: EV_CONNECT, mod_iter: 6
new event: fd: 9, evt: EV_REQUEST, mod_iter: 7
new event: fd: 7, evt: EV_TUNNEL, mod_iter: 4
desync TCP, m=1, r=1
host: captive.keenetic.ru (28)

Падает при попытке открыть 1024 дескриптор (может быть, будет полезно для автора программы):

new event: fd: 3, evt: EV_ACCEPT, mod_iter: 0
accept: fd=1023
accept: No file descriptors available
exit

Edit:

Удалось забороть проблему через iptables и запуск в режиме прозрачного прокси, пока буду использовать так.
Работает смартфон, ПК, но вот АндроидТВ не запускается...
Нагрузка на проц роутера порой до 86% поднимается, будем смотреть дальше.

P.S.

Тут есть дискуссия, где у товарища была точно такая же проблема с accept-ами, видимо, не один я тут криворукий...

В связи с этим хотел бы задать следующий вопрос, дабы не плодить тем:

Если использовать byedpi на роутере как СОКС-прокси, поднимая на роутере прокси-клиент, то каким-то образом необходимо исключить перенаправление трафика с прокси снова на прокси, возможно ли это сделать через iptables? Или нужен какой-то другой инструмент?

Заранее спасибо.

@hufrea
Copy link
Owner

hufrea commented Nov 12, 2024

Если использовать byedpi на роутере как СОКС-прокси, поднимая на роутере прокси-клиент, то каким-то образом необходимо исключить перенаправление трафика с прокси снова на прокси, возможно ли это сделать через iptables? Или нужен какой-то другой инструмент?

Такой проблемы с SOCKS возникать не должно. Если такое случается, когда весь трафик перенаправляется на прокси. Все зависит от того как это происходит. Если через tun2socks на Linux, то нужно корректировать правила iptables, на Android, в режиме VPN, необходимо исключать некоторые приложения из проксируемых. Что происходит на Keenetic я не знаю, ответить не могу. Посмотрите существующие правила маршрутизации на роутере, возможно из будет ясно, как перенаправляется трафик.

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

3 participants