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

