LINUX.ORG.RU
ФорумAdmin

Как позволить работать с портами до 1024 не root-у

 ,


0

4

Вопрос возник в связи с этим Провайдер блокирует DHT (комментарий)

# sysctl net.ipv4.ip_unprivileged_port_start=1

или прямо

echo "1" >  /proc/sys/net/ipv4/ip_unprivileged_port_start

Не работает, при попытке соединений от пользователя с портами менее или равными 1024, пишется conection refused.

Все переменные при этом устанавливаются

# cat  /proc/sys/net/ipv4/ip_unprivileged_port_start
1
★★★★★

Последнее исправление: praseodim (всего исправлений: 3)
Ответ на: комментарий от praseodim

Как позволить работать с портами до 1024 не root

Через capabilities - механизм предоставления программам доступ к определённым возможностям, которые обычно есть только у суперпользователя, позволяя избежать запуска программ от имени root.

vvn_black ★★★★★
()

соединений от пользователя с портами менее или равными 1024, пишется conection refused.

соединений

connection refused

Предположу, что ты пытаешься подключиться к удалённому порту, а не открыть локальный сокет. Это не так работает

router ★★★★★
()
Ответ на: комментарий от router

От рута все получается. Например,

nping --udp -g 1024 -p 1024 -c1 dht.libtorrent.org --data "\x64\x31\x3a\x61\x64\x32\x3a\x62\x73\x69\x31\x65\x32\x3a\x69\x64\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x85\xbd\x80\x66\x18\x56\x00\xfd\x39\x3a\x69\x6e\x66\x6f\x5f\x68\x61\x73\x68\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x4a\x6d\x72\xdb\x91\x7c\x54\xcc\x65\x31\x3a\x71\x39\x3a\x67\x65\x74\x5f\x70\x65\x65\x72\x73\x31\x3a\x74\x32\x3a\x1a\x2e\x31\x3a\x76\x34\x3a\x4c\x54\x01\x2d\x31\x3a\x79\x31\x3a\x71\x65"
praseodim ★★★★★
() автор топика
Ответ на: комментарий от firkax

От рута

# nping --udp -g 1024 -p 1024 -c1 dht.libtorrent.org --data "\x64\x31\x3a\x61\x64\x32\x3a\x62\x73\x69\x31\x65\x32\x3a\x69\x64\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x85\xbd\x80\x66\x18\x56\x00\xfd\x39\x3a\x69\x6e\x66\x6f\x5f\x68\x61\x73\x68\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x4a\x6d\x72\xdb\x91\x7c\x54\xcc\x65\x31\x3a\x71\x39\x3a\x67\x65\x74\x5f\x70\x65\x65\x72\x73\x31\x3a\x74\x32\x3a\x1a\x2e\x31\x3a\x76\x34\x3a\x4c\x54\x01\x2d\x31\x3a\x79\x31\x3a\x71\x65"

Starting Nping 0.7.80 ( http://nmap.org/nping ) at 2023-09-13 21:56 MSK
SENT (0.0569s) UDP xx.xx.60.83:1024 > 185.157.221.247:1024 ttl=64 id=48303 iplen=139 
RCVD (0.2254s) ICMP [185.157.221.247 > xx.xx.60.83 Port 1024 unreachable (type=3/code=3) ] IP [ttl=52 id=22843 iplen=167 ]
 
Max rtt: 168.490ms | Min rtt: 168.490ms | Avg rtt: 168.490ms
Raw packets sent: 1 (139B) | Rcvd: 1 (167B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 1.12 seconds
praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

от юзера

$ nping --udp -g 1024 -p 1024 -c1 dht.libtorrent.org --data "\x64\x31\x3a\x61\x64\x32\x3a\x62\x73\x69\x31\x65\x32\x3a\x69\x64\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x85\xbd\x80\x66\x18\x56\x00\xfd\x39\x3a\x69\x6e\x66\x6f\x5f\x68\x61\x73\x68\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x4a\x6d\x72\xdb\x91\x7c\x54\xcc\x65\x31\x3a\x71\x39\x3a\x67\x65\x74\x5f\x70\x65\x65\x72\x73\x31\x3a\x74\x32\x3a\x1a\x2e\x31\x3a\x76\x34\x3a\x4c\x54\x01\x2d\x31\x3a\x79\x31\x3a\x71\x65"

Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2023-09-13 21:59 MSK
SENT (0.0030s) UDP packet with 111 bytes to dht.libtorrent.org:1024 (185.157.221.247:1024)
ERR: (0.0365s) READ to 185.157.221.247:1024 failed: Connection refused
 
Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
UDP packets sent: 1 | Rcvd: 0 | Lost: 1 (100.00%)
Nping done: 1 IP address pinged in 0.04 seconds
praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

И где тут порты до 1024? 1024 - обычный порт. Проблема не в номере.

Посмотри правила файрвола, может там прячется запрет udp кроме днс для не-рута, например. Или selinux/apparmor какой. Ну и tcpdump проверь, шлётся ли исходящий пакет и не приходил ли в ответ входящий icmp с ошибкой.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

И где тут порты до 1024? 1024 - обычный порт. Проблема не в номере.

Порт с номером 1025 уже проходит без refuse. Вернее не проходит, но где-то по пути, там смысл проверить режут ли DHT.

Посмотри правила файрвола, может там прячется запрет udp кроме днс для не-рута, например.

Смотрел, нет ничего особенного.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

почему-то

У вас от root утилита возвращает ″ICMP Port 1024 unreachable". Это означает, что она ловит ответный ICMP пакеты, то есть открывает raw-сокет.

А без root утилита не может открыть raw-сокет и работает через обычный, там ядро отрабатывает ICMP-пакет и возвращает ошибку чтения из сокета.

Пакет отправляется нормально, или вы считаете, что ядро будет 37 мс думать, можно или нет приложению биндиться на <1024? Но, если не верите, смотрите дамп трафика, как уже посоветовали.

Порт с номерами более 1024 нормально отрабатывает.

Где выхлоп для root и не для root для порта 1025?

mky ★★★★★
()
Ответ на: комментарий от mky

Где выхлоп для root и не для root для порта 1025?

# nping --udp -g 1025 -p 1025 -c1 dht.libtorrent.org --data "\x64\x31\x3a\x61\x64\x32\x3a\x62\x73\x69\x31\x65\x32\x3a\x69\x64\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x85\xbd\x80\x66\x18\x56\x00\xfd\x39\x3a\x69\x6e\x66\x6f\x5f\x68\x61\x73\x68\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x4a\x6d\x72\xdb\x91\x7c\x54\xcc\x65\x31\x3a\x71\x39\x3a\x67\x65\x74\x5f\x70\x65\x65\x72\x73\x31\x3a\x74\x32\x3a\x1a\x2e\x31\x3a\x76\x34\x3a\x4c\x54\x01\x2d\x31\x3a\x79\x31\x3a\x71\x65"

Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2023-09-14 18:53 MSK
SENT (0.0382s) UDP xx.xx.19.107:1025 > 185.157.221.247:1025 ttl=64 id=3547 iplen=139 
 
Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 1 (139B) | Rcvd: 0 (0B) | Lost: 1 (100.00%)
Nping done: 1 IP address pinged in 1.08 seconds
praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

От юзера

$ nping --udp -g 1025 -p 1025 -c1 dht.libtorrent.org --data "\x64\x31\x3a\x61\x64\x32\x3a\x62\x73\x69\x31\x65\x32\x3a\x69\x64\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x85\xbd\x80\x66\x18\x56\x00\xfd\x39\x3a\x69\x6e\x66\x6f\x5f\x68\x61\x73\x68\x32\x30\x3a\x75\x6c\x1f\xb3\x52\xb2\xd2\x6d\xc9\xd5\x57\x7c\x4a\x6d\x72\xdb\x91\x7c\x54\xcc\x65\x31\x3a\x71\x39\x3a\x67\x65\x74\x5f\x70\x65\x65\x72\x73\x31\x3a\x74\x32\x3a\x1a\x2e\x31\x3a\x76\x34\x3a\x4c\x54\x01\x2d\x31\x3a\x79\x31\x3a\x71\x65"


Starting Nping 0.7.80 ( https://nmap.org/nping ) at 2023-09-14 18:57 MSK
SENT (0.0030s) UDP packet with 111 bytes to dht.libtorrent.org:1025 (185.157.221.247:1025)
 
Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
UDP packets sent: 1 | Rcvd: 0 | Lost: 1 (100.00%)
Nping done: 1 IP address pinged in 1.00 seconds

Как видно никаких refused. Но DHT заблочен.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от mky

У вас от root утилита возвращает ″ICMP Port 1024 unreachable". Это означает, что она ловит ответный ICMP пакеты, то есть открывает raw-сокет.

А без root утилита не может открыть raw-сокет и работает через обычный, там ядро отрабатывает ICMP-пакет и возвращает ошибку чтения из сокета.

Но получается ответ от сервера на 1024. Бррр запутался.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

Ответ ICMP port unreachable может приходить от любого маршрутизатора по дороге, не обязательно от сервера 185.157.221.247.

То есть где-то есть правила:

-p udp --port 1024 -j REJECT --reject-with icmp-port-unreachable

-p udp --port 1025 -j DROP

mky ★★★★★
()
Ответ на: комментарий от praseodim

А что тут удивительного? Если лезешь на 1024-й порт сервера (не свой) - то он что-то отвечает (в данном случае icmp), а если лезешь на 1025-й - то ничего не отвечает, наверно 1025-й порт у него наглухо зафайрволен.

Попробуй менять -g и -p отдельно друг от друга и увидишь что меняется поведение от второго (это удалённый порт).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Да все тоже самое. Смысл в том, что РКН забавляется, блокируя DHT по сигнатуре, но почему-то с портами > 1024.

Сейчас прекратили и ответы проходят на любые порты. Можешь сам проверить.

praseodim ★★★★★
() автор топика