Что такое вызов POSIX для определения предполагаемого IP-адреса запроса на открытие перенаправленного сокета?

Я изменяю свой файл hosts, чтобы изменить IP-адрес (например, вызова базы данных) на локальный прокси, который я пишу.

10.1.2.3 localhost
10.1.2.4 localhost

Я хочу, чтобы прокси, прослушивающий сокет, определил, к какой машине должен быть направлен запрос открытия сокета. например, в моем клиенте я звоню.

dbPort = 4000;
openDatabaseConnection("10.1.2.3", dbPort);
...
openDatabaseConnection("10.1.2.4", dbPort);

Так что оба звонка на одном сокете. Я хочу, чтобы мой прокси-сервер прослушивал 4000 и перенаправить идущий к 10.1.2.3 на правильный сервер предполагаемый IP-адрес.

Есть ли вызов POSIX, чтобы получить это из заголовка сокета?

Мой вопрос: Что такое вызов POSIX для определения предполагаемого IP-адреса запроса на открытие перенаправленного сокета?

1

Решение

Нет, нет способа узнать, какой IP-адрес использовался в клиентской программе. Файл hosts определяет набор псевдонимов, а псевдонимы заменяются реальным адресом (в вашем случае localhost) преобразователем имени / адреса, что приводит к потере всей информации об используемом псевдониме. Переадресация не производится, подстановка псевдонимов выполняется еще до того, как клиент подключится.

Самый простой способ решить вашу проблему — не использовать псевдоним IP-адреса через hosts файл, но использовать разные номера портов.

Вы могли бы также добавить «виртуальные» интерфейсы для разных адресов и иметь прокси-сервер для прослушивания соединений на обоих этих интерфейсах.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]