Spring boot Resttemplate для настройки динамического прокси-соединения через ssh-туннель не распознает удаленный DNS - PullRequest
0 голосов
/ 30 апреля 2019

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

Я создал прокси Resttemplate, чтобы использовать мой локальный динамический прокси для подключения к удаленной службе через SSH-туннелирование.Проблема, с которой я столкнулся, заключается в том, что мое приложение не может разрешить удаленный DNS, чтобы найти удаленный сервер.Следовательно, я получаю java.net.UnkonwnHostException ошибку.Я знаю, что при доступе через браузер обычно есть свойство, которое должно быть установлено для включения прокси для DNS-запросов.Я не уверен, есть ли такая вещь для настройки прокси Spring Boot Resttemplate.Пожалуйста, найдите мой код настройки прокси следующим образом.

@Configuration
public class ProxyCustomizer implements RestTemplateCustomizer {
    @Autowired
    private ProxyConfig proxyConfig;


    @Override
    public void customize(RestTemplate restTemplate) {
        if (proxyConfig == null) return;
        HttpHost proxy = new HttpHost(proxyConfig.getHostname(), proxyConfig.getPort());
        HttpClient httpClient = HttpClientBuilder.create()
                .setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {

                    @Override
                    public HttpHost determineProxy(HttpHost target,
                                                   HttpRequest request, HttpContext context)
                            throws HttpException {
                        return super.determineProxy(target, request, context);
                    }

                }).build();
        restTemplate.setRequestFactory(
                new HttpComponentsClientHttpRequestFactory(httpClient));
    }
}

Я также пытался использовать свойства системы Socks и HTTP-прокси, но она не работала:

Socks:

    System.getProperties().put( "proxySet", "true" );
    System.getProperties().put( "socksProxyHost", "127.0.0.1" );
    System.getProperties().put( "socksProxyPort", "9001" );

HTTP-прокси:

    props.put("http.proxyHost", "127.0.0.1");
    props.put("http.proxyPort", "9001");
    props.put("https.proxyHost", "127.0.0.1");
    props.put("https.proxyPort", "9001");

1 Ответ

0 голосов
/ 02 мая 2019

Я не мог найти решение этой проблемы. Однако добавление записи в файл /etc/hosts можно использовать в качестве обходного пути.

...