DNS решение для прокси Dante SOCKS
Я пытаюсь создать решение SOCKS для прямого прокси. Я использую прокси Dante SOCKS, так как слышал, что крупные компании, такие как Google, используют его в качестве решения для прямого прокси.
на сервере SOCKS я разрешаю на основе полного доменного имени, как google.com:443
Теперь проблема в том, что когда клиент создает пакет, он пытается разрешить google.com, получает XXXX и отправляет запрос на подключение к серверу SOCKS. Теперь, когда сервер получает пакеты, он пытается восстановить пакет для отправки в Интернет, сервер снова выполняет разрешение DNS, и если сервер получает ответ в виде ГГГГ, он не разрешает запрос клиента в качестве IP-адреса назначения в клиенте. запрос отличается от разрешенного IP-адреса сервера.
В клиенте dante было решение, которое указывает клиенту ввести фиктивный адрес назначения 0.0.0.1 и затем отправляет запрос на сервер, и сервер обрабатывает его должным образом. Однако это создает проблему с внутренними доменами, так как после использования этого метода разрешения DNS все запросы проходят через сервер dante:(
пожалуйста, дайте мне знать
Если есть какое-либо решение, которое поможет мне в поддержании срока действия записи DNS в масштабе всего DC, например, google.com преобразуется в XXXX, и я смогу разрешить этот же IP-адрес на сотнях клиентов DNS и в случае изменения записи, то это должно немедленно изменить / истечь на клиенте.
Любое другое решение для прокси /socks, которое должно быть прозрачным для приложений для прямого прокси
1 ответ
Я выбрал это решение на тот случай, если кому-то интересно посмотреть на это решение.
Я использовал PowerDNS Auth Server с бэкэндом Pipe. Запросы будут отправляться на сервер PowerDNS для разрешения, он передает все данные в бэкэнд-скрипт Pipe с ABI, скрипт анализирует запросы, проверяет, присутствует ли он в кэшированной переменной / карте памяти, если он попадет в кеш, он будет отвечать с использованием кэшированных записей DNS, иначе он будет использовать преобразователь DNS для разрешения этого запроса, как обычно разрешает преобразователь.
Версия PowerDNS ниже 4.1 поддерживает Pipe backend + resolver. Таким образом, запрос сначала приземлится на конвейерный серверный сценарий, если в сценарии нет кэшированных записей, он не будет отвечать или будет пустым, а затем PowerDNS разрешит его с указанным сервером преобразователя в конфигурации. Однако, с версией 4.1 и выше, часть решателя удаляется с сервера PowerDNS Auth, поэтому вам нужно обработать это поведение с помощью бэкэнд-скрипта Pipe.
Это зависит от вашего клиента. Firefox, например, отправляет имя хоста на прокси-сервер SOCKS, не разрешая его. Вы можете подтвердить это с помощью Wireshark.
PS. Предположим, вы используете прокси-сервер SOCKS5/4a. SOCKS4 не поддерживает имя хоста. Ссылка: https://en.wikipedia.org/wiki/SOCKS