[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Хочется странного



On Wed, Jan 15, 2003 at 10:17:46PM +0300, Alexander Golovankov wrote:
> Добрый день!
> 
> Есть ряд демонов не поддерживающих привязку к конкретному интерфейсу
> через конфигурационные файлы, а посему биндящихся сразу ко всем. Выходов
> из сложишейся ситуации видется только 3:
> 1. закрыть фаерволом порты на тех интерфейсах которые не должны
> обслуживать запросы

Простой и надежный способ.

> 2. пачить исходники на предмет введения в конфигурацию демона привязки к
> конкретному интерфейсу

Непростой, но правильный.

> и наконец гипотеческий вариант 
> номер 3. использовать универсальный враппер который будет маскировать для
> приложения наличие конкретного интерфейса, т.е. задавая конфигурационно
> какие интерфейсы разрешены можно для любого демона указать к чему
> биндиться.
> 
> Вопрос есть ли в природе подобный враппер, возможно ли теоретически
> создать враппер с данной функциональностью?
> 

Существует ли в природе подобное изделие, не знаю. Но нарисовать такое
достаточно несложно. Достаточно подменить библиотечную функцию bind() на
свою, которая в соотвествии с какими-то правилами поменяет во втором
своем аргументе INADDR_ANY на что-то более здравое.

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

Случай, когда программа не делает bind(), а сразу делает listen() не
рассматриваем как неинтересный.

-- 
dg



Reply to: