none
Registro de un dominio en mi DNS de AD RRS feed

  • Pregunta

  • Quiero hacer esto, lo mismo es una tonteria, pero no doy con ello.

    Al igual que a un pc, modificando el archivo host le puede decir que por ej:      www.peptito.com    2.2.2.2

    Quiero para no ir pc por pc, que los equpos que quieran ir a www.petito.com lees redirecciones a la 2.2.2.2 a través del consulta de mi DNS de mi active directory.

    Como reenviado condicional no vale, porque es un dominio que lo responde un servidor de dns y yo quiero una condicion de un registro host puntual a un dominio distinto al mio lo responda otra ip y no puedo dar de alta un dominio nuevo www.peptito.com porque entonces todo el domio .com lo responderia mi servidor local y creo que hay unos cuentos host para dar de alta :)

    Gracias,

    lunes, 5 de marzo de 2012 10:13

Respuestas

  • Un script como éste busca si existe la entrada, y en caso de no existir la agrega:

    Dim obj_FS
    Dim obj_SH
    Dim obj_TS
    Dim str_Fichero
    Dim str_Entrada
    Dim bol_Encontrado
    
    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8
     
    ' Entrada a buscar en el fichero hosts y a añadir en el
    'caso de no existir
    str_Entrada = "10.23.43.12 www.pepito.com"
    
    'Creamos un objeto FileSystemObject y un objeto Shell
    Set obj_SH = CreateObject("WScript.Shell")
    Set obj_FS = CreateObject("Scripting.FileSystemObject")
    
    'Obtenemos el nombre y ruta del fichero hosts
    str_Fichero = obj_SH.ExpandEnvironmentStrings( _
                 "%SystemRoot%\System32\Drivers\etc\hosts")
    
    'Abrimos el fichero hosts para lectura
    Set obj_TS = obj_FS.OpenTextFile(str_Fichero,ForReading)
    
    'Iniciamos la booleana que establece si se ha encontrado
    'la entrada como False
    bol_Encontrado = False
    
    'Recorremos el fichero hosts línea a línea
    Do Until obj_TS.AtEndOfStream
    
        'Miramos si la entrada es encontrada en la línea actual. Usamos
        'Replace para cambiar las tabulaciones por espacios y Trim para
        'quitar los espacios al inicio y al final de la línea, así como
        'aquellos que estén entre medias y que sean más de uno,
        'cambiándolos a ser uno ("  este    texto   " se transforma en
        '"este texto").
        If InStr(1, _
                 Trim(Replace(obj_TS.ReadLine,vbTab," ")), _
                 str_Entrada, _
                 vbTextCompare) > 0 Then
            
            'Marcamos que se ha encontrado la entrada     
            bol_Encontrado = True
            
            'Salimos del bucle Do
            Exit Do
            
        End If
    
    Loop
    
    'Cerramos el fichero hosts
    obj_TS.Close
    
    'Si no se ha encontrado la entrada
    If Not bol_Encontrado Then
    
        'Abrimos el fichero hosts para agregación
        Set obj_TS = obj_FS.OpenTextFile(str_Fichero,ForAppending)
        
        'Agregamos la entrada
        obj_TS.WriteLine vbCrLf & str_Entrada
        
        'Cerramos el fichero hosts
        obj_TS.Close
    
    End If
    
    'Limpieza de culete :o)
    Set obj_TS = Nothing
    Set obj_FS = Nothing
    Set obj_SH = Nothing


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)



    martes, 6 de marzo de 2012 10:29
    Moderador

Todas las respuestas

  • Pues.... sólo se me ocurre que distribuyas el fichero hosts a los equipos.

    Se podría enredar más. Creas una zona secundaria y que apunte al servidor dns del dominio remoto; una vez esté cargada con los registros del dominio remoto la conviertes a primaria y cambias los registros que necesites que estén cambiados; eso sí, deberías estar continuamente actualizando esa zona desde la original, vía un script o algo así, para hacer las altas, modificaciones o bajas que sean necesarias. Creo que prefiero distribuir el fichero hosts a los equipos.


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)


    lunes, 5 de marzo de 2012 10:28
    Moderador
  • Ya pero hablamos de unos 500 equipos, creía que se podría hacer algo a nivel de DNS.

    Gracias

    lunes, 5 de marzo de 2012 15:23
  • Da igual 500 equipos que cinco mil si lo haces por GPO, con un script de inicio de equipo que sobreescriba el fichero hosts, por ejemplo. Más fino sería que leyera el existente buscando la entrada y si no existiera la agregase, pues esto permitiría que los ficheros hosts de los equipos pudiesen ser personalizados, no iguales en todos los equipos.Otra posible solución es que si tienes contacto con la gente de ese otro dominio, que creen una entrada que apunte a la IP que necesitas pero con otro nombre, por ejemplo iwww en lugar de www, y tendrías que instruir a tu usuarios para que usasen iwww.pepito.com en lugar de www.pepito.com.


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)

    martes, 6 de marzo de 2012 7:02
    Moderador
  • El problema fernando es que se de la existencia de equipos que tienen su archivo host modificado por cierto programas que lo necesitan, si lanzo una gpo para sobrescribir me cargo todo y esto sería temporal, luego habría que borrarlo.

    Gracias de igual modo por todo.

    martes, 6 de marzo de 2012 9:26
  • Un script como éste busca si existe la entrada, y en caso de no existir la agrega:

    Dim obj_FS
    Dim obj_SH
    Dim obj_TS
    Dim str_Fichero
    Dim str_Entrada
    Dim bol_Encontrado
    
    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8
     
    ' Entrada a buscar en el fichero hosts y a añadir en el
    'caso de no existir
    str_Entrada = "10.23.43.12 www.pepito.com"
    
    'Creamos un objeto FileSystemObject y un objeto Shell
    Set obj_SH = CreateObject("WScript.Shell")
    Set obj_FS = CreateObject("Scripting.FileSystemObject")
    
    'Obtenemos el nombre y ruta del fichero hosts
    str_Fichero = obj_SH.ExpandEnvironmentStrings( _
                 "%SystemRoot%\System32\Drivers\etc\hosts")
    
    'Abrimos el fichero hosts para lectura
    Set obj_TS = obj_FS.OpenTextFile(str_Fichero,ForReading)
    
    'Iniciamos la booleana que establece si se ha encontrado
    'la entrada como False
    bol_Encontrado = False
    
    'Recorremos el fichero hosts línea a línea
    Do Until obj_TS.AtEndOfStream
    
        'Miramos si la entrada es encontrada en la línea actual. Usamos
        'Replace para cambiar las tabulaciones por espacios y Trim para
        'quitar los espacios al inicio y al final de la línea, así como
        'aquellos que estén entre medias y que sean más de uno,
        'cambiándolos a ser uno ("  este    texto   " se transforma en
        '"este texto").
        If InStr(1, _
                 Trim(Replace(obj_TS.ReadLine,vbTab," ")), _
                 str_Entrada, _
                 vbTextCompare) > 0 Then
            
            'Marcamos que se ha encontrado la entrada     
            bol_Encontrado = True
            
            'Salimos del bucle Do
            Exit Do
            
        End If
    
    Loop
    
    'Cerramos el fichero hosts
    obj_TS.Close
    
    'Si no se ha encontrado la entrada
    If Not bol_Encontrado Then
    
        'Abrimos el fichero hosts para agregación
        Set obj_TS = obj_FS.OpenTextFile(str_Fichero,ForAppending)
        
        'Agregamos la entrada
        obj_TS.WriteLine vbCrLf & str_Entrada
        
        'Cerramos el fichero hosts
        obj_TS.Close
    
    End If
    
    'Limpieza de culete :o)
    Set obj_TS = Nothing
    Set obj_FS = Nothing
    Set obj_SH = Nothing


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)



    martes, 6 de marzo de 2012 10:29
    Moderador
  • Y un script como este busca si existe la entrada y en caso afirmativo la quita:

    Dim obj_FS
    Dim obj_SH
    Dim obj_TS
    Dim str_Fichero
    Dim str_Entrada
    Dim bol_Encontrado
    Dim str_Contenido
    Dim str_Linea
    
    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8
     
    ' Entrada a buscar en el fichero hosts y a quitar en el
    'caso de existir
    str_Entrada = "10.23.43.12 www.pepito.com"
    
    'Creamos un objeto FileSystemObject y un objeto Shell
    Set obj_SH = CreateObject("WScript.Shell")
    Set obj_FS = CreateObject("Scripting.FileSystemObject")
    
    'Obtenemos el nombre y ruta del fichero hosts
    str_Fichero = obj_SH.ExpandEnvironmentStrings( _
                 "%SystemRoot%\System32\Drivers\etc\hosts")
    
    'Abrimos el fichero hosts para lectura
    Set obj_TS = obj_FS.OpenTextFile(str_Fichero,ForReading)
    
    'Iniciamos la booleana que establece si se ha encontrado
    'la entrada como False
    bol_Encontrado = False
    
    'Recorremos el fichero hosts línea a línea
    Do Until obj_TS.AtEndOfStream
    
        'Obtenemos la línea actual
        str_Linea = obj_TS.ReadLine
        
        'Miramos si la entrada es no es encontrada en la línea actual.
        'Usamos Replace para cambiar las tabulaciones por espacios y
        'Trim para quitar los espacios al inicio y al final de la línea,
        'así como aquellos que estén entre medias y que sean más de uno,
        'cambiándolos a ser uno ("  este    texto   " se transforma en
        '"este texto").
        If Not InStr(1, _
                     Trim(Replace(str_Linea,vbTab," ")), _
                     str_Entrada, _
                     vbTextCompare) > 0 Then
            
            'Como no es la línea con la entrada, la agregamos al contenido
            'que debe tener el fichero en el caso de que se encuentre la
            'entrada y por tanto deba ser borrada
            str_Contenido = str_Contenido & str_Linea & vbCrLf
        
        Else
        
            'Si se ha encontrado la entrada, no la agregamos al contenido
            'y marcamos que se ha encontrado
            bol_Encontrado = True
            
        End If
    
    Loop
    
    'Cerramos el fichero hosts
    obj_TS.Close
    
    'Si se ha encontrado la entrada debemos cambiar el fichero hosts para
    'borrarla
    If bol_Encontrado Then
    
        'Hacemos copia de seguridad del fichero hosts actual,
        'sobrescribiendo la copia anterior, si es que existía
        '(esto lo hace el True)
        obj_FS.CopyFile str_Fichero,str_Fichero & ".bak",True
    
        'Abrimos el fichero hosts para escritura
        Set obj_TS = obj_FS.OpenTextFile(str_Fichero,ForWriting)
        
        'Escribimos el nuevo contenido que fuen montado en el bucle Do
        obj_TS.Write str_Contenido
        
        'Cerramos el fichero hosts
        obj_TS.Close
    
    End If
    
    'Limpieza de culete :o)
    Set obj_TS = Nothing
    Set obj_FS = Nothing
    Set obj_SH = Nothing


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)



    martes, 6 de marzo de 2012 10:56
    Moderador