LINUX.ORG.RU

so_bindtodevice root only

 , ,


0

2

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

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

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

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

★★

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

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

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

punya ★★
() автор топика
Последнее исправление: punya (всего исправлений: 1)
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от punya

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

а ты? :)

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

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

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

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

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

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

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

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

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

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

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

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