Python OpenSSL Указать DNS-сервер

Кто-нибудь нашел способ указать DNS-сервер для соединений OpenSSL в ОС Linux? У нас есть внутренние и внешние DNS-серверы, и я создаю монитор для использования SSL-сертификата. Мне нужна возможность указать DNS-сервер, который будет использоваться для соединений с именем хоста. Он отлично работает с внутренним DNS, но мне трудно найти способ привязать DNS-сервер. Я новичок в изменении сетей через Python и не знаю, с чего начать. Можно ли это сделать с помощью функции серверов имен модуля dns.resolver?

Это похоже на жизнеспособное решение для Windows, но я надеюсь найти что-то подобное для Linux. Как программно изменить DNS-серверы в Windows?

Ниже приведен мой код, который работает с хостом DNS по умолчанию.

def readCerts(self,host,port,cast):
    """readCerts prompts terminal for username.
    Attributes:
        host: Host or IP of SSL connection
        port: Port of SSL connection
        cast: Format of returned results (JSON currently only structure supported)
    Response:
        Returns certificate attributes in specified format
    """
    sslContext = SSL.Context(SSL.SSLv23_METHOD)
    apiSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sslConnection = SSL.Connection(sslContext,apiSocket)

    try:
        sslConnection.connect((host,port))
    except Exception as e:
        raise e
    else:
        #Block the socket 
        sslConnection.setblocking(1)
        #Set the hostname field for servers that support SNI.  Format must be in bytestring.
        sslConnection.set_tlsext_host_name(host.encode('utf-8'))

        try:
            sslConnection.do_handshake()
        except:
            pass
        else:
            #print "handshake succeeded"
            sslConnection.close()
            if cast.upper()=='JSON':
                attributes = self._FormatJSON(sslConnection.get_peer_cert_chain())        
                return attributes

person nooclearwessel    schedule 11.02.2020    source источник
comment
serverfault.com/a/762738 (но это не код Python)   -  person VPfB    schedule 11.02.2020
comment
Просто укажите IP-адрес для SSL-соединения, для этого не нужно возиться с локальной конфигурацией DNS. Вы можете использовать модуль Python dnspython для выполнения DNS-запросов (к любому серверу имен, который вы хотите) и получить нужные вам IP-адреса.   -  person Patrick Mevzek    schedule 13.02.2020
comment
Спасибо, Патрик. Я забыл проследить. Это именно то, что я сделал. connect() по IP-адресу и передаче имени хоста в качестве SNI.   -  person nooclearwessel    schedule 13.02.2020