LINUX.ORG.RU

so_bindtodevice root only

 , ,


0

2

Хочется получать данные с сервера через конкретный сетевой интерфейс. Именно чтобы клиент использовал свои сетевые интерфейсы.

       ->
       ->
клиент -> облачко <- server
       ->
       ->

Насколько я понимаю единственный вариант - SO_BINDTODEVICE. Можно ли создать группу пользователей, которые могут использовать SO_BINDTODEVICE?

ЗЫ «тупа nexthop или ему подобных» не предлагать. предложение может иметь любую свою логику получения/отправки данных

★★

А bind() к IP-адресу на требуемом интерфейсе не вариант никак?

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

это же сервер делает. клиент делает connect. а там нельзя получить данные с конкретного адреса. запрос пойдет через дефолтный гейтвей.

а кастомная маршрутизация на уровне приложения - только для рутов =(

punya ★★ ()
Последнее исправление: punya (всего исправлений: 1)

man bind, не? И см. соотв. posix capabilities.

Вообще, о чём речь-то идёт? О tcp/udp?

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

tcp/udp не важно. ну как ты будешь делать bind, если надо прочитать данные. connect надо

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

есть приложение-клиент. он хочет получить данные с некоторого сервера через конкретный сетевой интерфейс.

       ->
       ->
клиент -> облачко <- server
       ->
       ->

втупую nexthop не предлагать. приложение отправляет/получает данные с помощью своей логики

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

Это не описание. В чём проблема-то? Там внутри захардкожен SO_BINDTODEVICE? Ты не хочешь запускать от рута? ... Ничего не понятно.

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

хочется иметь отдельного пользователя для программы не рута. но SO_BINDTODEVICE захардкожен на рута =(

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

Ты хочешь изолировать приложение? есть куча способов. Всякие selinux итп. Если есть сырцы приложения то его можно поправить. Можно ядро подправить и сделать новый capability. Это достаточно просто.

Я правильно понял что SO_* вызывается в программе? А зачем? оно реально надо?

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

SO_* вызывается в программе

так точно. дело в том что программа пока абстрактная. но в зависимости от внутренних обстоятельств она может резко поменять политику работы с интерфейсами (например контроль со стороны пользователя)

punya ★★ ()

А зачем нужно клиенту работать на каком-то конкретном интерфейсе? Чем обусловлено такое ограничение? Может просто маршруты настроить?

grondek ()
Ответ на: комментарий от punya

cp/udp не важно. ну как ты будешь делать bind, если надо прочитать данные. connect надо

bind() работает в оба направления

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

например сам клиент может поменять некоторую опцию программы и соответственно изменится политика работы с интерфейсами. кастомная маршрутизация на уровне приложения.

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

А зачем такой велосипед? Чем не устраивает связка простого стандартного клиента и настроек маршрутизации в ОС?

grondek ()
Ответ на: комментарий от punya

кастомная маршрутизация на уровне приложения.

Это не маршрутизация, это фильтрация. Маршрутизировать так просто не получится. И, главное, не делай так.

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

что ты подразумеваешь под «настройками маршрутизации в ОС»?

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

что ты подразумеваешь под «настройками маршрутизации в ОС»?

а ты? :)

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

Настроить средствами ОС, а не вашего приложения: все пакеты, предназначенные вашему серверу должны идти через такой-то интерфейс и далее...

grondek ()
Ответ на: комментарий от punya

хм. bind перед connect. надо попробовать! спс

но маршруты всё равно придётся настроить правильно. Т.е. нужно будет указать, что с BIND_IP трафик должен уходить через нужный интерфейс, если этого ещё нет.

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

а. я понял. ты предлагаешь маркировать пакеты. спс!

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

как раз с помощью маркировки пакетов это можно разрешить. ну или как-то по другому. разберемся

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

хотя стоп. я же уже этим занимался. это нужно для разных интерфейсов создать отдельные таблицы маршрутизации! о блин так это просто совсем. так и сделаю!

punya ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.