Bind 9.9 pkg 0.3RC para pfSense



  • Olá pessoal.

    Tivemos a necessidade de desenvolver na nossa instituição, a versão do bind9.9 para pfsense.

    Estamos em fase de teste, porem já está bem estável, temos alguns servidores em produção com essa versão.

    se possível testem, e de o retorno! assim teremos um produto melhor ainda.

    o que é possível fazer:

    Administração do Serviço
    Habilitar Views
    Gerenciamento de zonas(host e tudo mais)
    Gerenciamento de ACLS(Macros)

    tá bem legal.

    Está no repositório em pfsense.useb.org.br, procure pelo pacote do Bind

    para apontar a um outro repositório https://doc.pfsense.org/index.php/Creating_Your_Own_Package_Repository
    no passo 4.

    NÃO TESTE EM PRODUÇÃO, por sua conta e risco.

    segue algumas imagens da interface.




  • Parabéns, eu já estava a utilizar o Unbound, porém uso BIND via CLI.

    Quando espera lançar ele ?

    Marcelloc já é possível subir ele para o oficial ?



  • @Nio:

    Marcelloc já é possível subir ele para o oficial ?

    Com certeza!  :)

    jorhardware, quer que eu suba como beta para o repositório oficial?

    Quer você mesmo fazer isso?

    Pergunta: Como está a implementação de dnssec na interface gráfica?



  • Olá marcelloc, pode fazer! o que vc poder fazer para a comunidade ter isso logo.

    Estou fora do escritório nos próximos dias! to pegado.

    DNSSEC é o próximo passo, em breve!

    Esqueci de falar, o pacote é para 64bits, não fiz a versão 32bits.



  • Blza, vou ver o que consigo adiantar por aqui…

    Provavelmente o core team só vai gerar o pacote para a 2.1, então já vou acertando o código para isso.

    Obrigado por compartilhar o pacote. A comunidade agradece!  :)



  • Estou recebendo isso na interface gráfica para os campos select do tipo select.

    Warning: Invalid argument supplied for foreach() in /usr/local/www/pkg_edit.php on line 567

    De onde você lè os parâmetros destescampo?

    Tem uma sequência de configuração?

    EDIT:
    Preenchendo as acls, os erros somem. Precisamos acertar isso.



  • OK. Estou corrigindo algumas coisas para evitar problemas de compatibilidade com a framework.

    Se conseguir criar um pbi para testes, subo uma versão beta amanhã.



  • Caramba, vocês andam rápido heim rsrsrsr… Quero logo em breve poder ajudar vocês, estou terminando umas mudanças e espero poder proporcionar um pouco das minhas experiências.

    Abraço



  • No bind.inc, procura pelo code abaixo, essa função faz as chamadas das acls.
    tem uma função desta, para a views e para a zonas.

    na xml da zona e da views tem chamadas para as funções com os parâmetros dos campos listados no select

    
    # Carregar o campo com os dados da views
    # -----------------------------------------------------------------------------
    
    function bind_views_before_form_dest($pkg,$data_group,$fieldname,$dest) {
    
            $destination_items = get_bind_conf_items_list($data_group,$fieldname);
            $i=0;
            foreach($pkg['fields']['field'] as $field) {
                    #
                    if ($field['fieldname'] == $dest) {
                            $fld = &$pkg['fields']['field'][$i];
                            if (is_array($destination_items))
                                    foreach($destination_items as $nmkey => $nm)
                                            $fld['options']['option'][] = array('name'=>ucfirst(strtolower($nm)), 'value'=>strtolower($nm));
                    }
                    $i++;
            }
    }
    
    

    blz.



  • Elas dão erro se não existir nenhuma acl.

    Troquei por funções nativas da framework. Estou testando o código para ver se continua gerando um codigo funcional do bind9



  • blz Marcelloc, muda o que precisar.

    para registrar para comunidade:

    Os melhores passos para iniciar a configuração:

    Definir as acls
      definir os slaves
      definir as localnet
      criar a acl any, como abaixo:

    Definir as Views
      entrar com os dados

    Definir as zonas
      qual tipo de zona Master: Atenção para o MX final da imagem

    Zona reversa:


    Zona slave: cuidado com o ponto no ip do slave; (próximo update vou tirar ele)



  • Publiquei os primeiros arquivos com as modificações, veja se o pacote continua funcional.

    https://github.com/pfsense/pfsense-packages/tree/master/config/bind

    para baixar a ultima versão do pacote antes da publicação na lista de pacotes disponíveis use

    
    cd /usr/local/pkg
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind.inc
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_acls.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_sync.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_views.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_zones.xml
    cd /usr/local/www/shortcuts
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/pkg_bind.inc
    
    


  • @jorhardware:

    Olá marcelloc, pode fazer! o que vc poder fazer para a comunidade ter isso logo.

    Estou fora do escritório nos próximos dias! to pegado.

    DNSSEC é o próximo passo, em breve!

    Esqueci de falar, o pacote é para 64bits, não fiz a versão 32bits.

    Olá jorhardware, existe previsão de fazer para 32bits tambem?



  • @marcosjost:

    Olá jorhardware, existe previsão de fazer para 32bits tambem?

    Na 2.1 será compilada pelo core team.

    Você precisa para a 2.0? sabe usar o ports do freebsd?



  • @marcelloc:

    @marcosjost:

    Olá jorhardware, existe previsão de fazer para 32bits tambem?

    Na 2.1 será compilada pelo core team.

    Você precisa para a 2.0? sabe usar o ports do freebsd?

    Precisaria para a 2.1 mesmo…..ja mexi sim com ports no freebsd ( faz tempo mas ainda lembro muita coisa)



  • Você pode tentar baixar o pacote do freebsd8.3 até sair o pbi.

    Lembrando que o pkg_add não instala o binário no formato pbi da 2.1.

    i386

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    amd64

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    


  • @marcelloc:

    Você pode tentar baixar o pacote do freebsd8.3 até sair o pbi.

    Lembrando que o pkg_add não instala o binário no formato pbi da 2.1.

    i386

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    amd64

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    Certo, dessa forma a administracao do pacote tem que ser feita via console, correto?



  • Dos binários sim, o resto vai via interface gráfica.



  • @marcelloc:

    Dos binários sim, o resto vai via interface gráfica.

    Tranquilo…é que achei que fosse que nem aquele tutorial do bind que tem, que usa o pkg_addr mas todas as configuracoes tem que ser feitas nos arquivos pelo terminal.



  • dá pra fazer assim

    baixe os arquivos da interface grafica

    cd /usr/local/pkg
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind.inc
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_acls.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_sync.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_views.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_zones.xml
    cd /usr/local/www/shortcuts
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/pkg_bind.inc
    

    E em seguida o pacote

    i386

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    amd64

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    para acessar, use http://ip_do_seu_pfsense/pkg_edit.php?xml=bind.xml



  • @marcelloc:

    dá pra fazer assim

    baixe os arquivos da interface grafica

    cd /usr/local/pkg
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind.inc
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_acls.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_sync.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_views.xml
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/bind_zones.xml
    cd /usr/local/www/shortcuts
    fetch https://raw.github.com/pfsense/pfsense-packages/master/config/bind/pkg_bind.inc
    

    E em seguida o pacote

    i386

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    amd64

    pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8.3-release/dns/bind99-9.9.0_1.tbz
    

    para acessar, use http://ip_do_seu_pfsense/pkg_edit.php?xml=bind.xml

    Muito obrigado….  :D .... Ja estou configurando pel interface grafica.....
    Deu dois avisos, no fim da instalçao....mas porque tenho versoes mais atuais dos pacotes instalados requiridos.....nada de erros

    
    pkg_add: warning: package 'libxml2-2.7.8_2' requires 'libiconv-1.13.1_2', but 'libiconv-1.14_1' is installed
    pkg_add: warning: package 'bind99-9.9.0_1' requires 'libiconv-1.13.1_2', but 'libiconv-1.14_1' is installed
    
    


  • me desculpe a ignorancia, mais quais as utilidades disso? falo na pratica.



  • @marcioducrato:

    me desculpe a ignorancia, mais quais as utilidades disso? falo na pratica.

    Qual a utilidade do bind? ???

    Se você não sabe o que é o bind, então este pacote não tem utilidade pra você.

    Se quiser saber o que é o bind, começe por aqui: http://www.isc.org/downloads/BIND/



  • Um dúvida, para usar o bind são necessários estes passos. certo?
    @cristianonix:

    ##############
    Desative o DNS Forwarder !!!

    Em  System: General Setup

    Seta em DNS servers

    DNS Server    Use gateway

    127.0.0.1            none

    Desmarque a opção:

    Allow DNS server list to be overridden by DHCP/PPP on WAN



  • @marcosjost:

    Um dúvida, para usar o bind são necessários estes passos. certo?

    Desabilitar o forwarder é obrigatório em qualquer situação.

    Já o sobrescreber o dns local e permitir alteração quando pegar ip dinâmico vai depender do uso.



  • @marcelloc:

    @marcosjost:

    Um dúvida, para usar o bind são necessários estes passos. certo?

    Desabilitar o forwarder é obrigatório em qualquer situação.

    Já o sobrescreber o dns local e permitir alteração quando pegar ip dinâmico vai depender do uso.

    Aqui nao preciso pois nao uso ppp ou dhcp na wan, sao ips fixos reais diretamente na interface.
    Agora …quando desativo o dns forwader  começa a novela ...rs.....Vou dar uma pesquisada antes aqui no forum....



  • Não teste em produção. O pacote não foi nem publicado ainda.



  • @marcelloc:

    Não teste em produção. O pacote não foi nem publicado ainda.

    Estou testando num servidor de testes.
    Mas agora estava vendo os logs e vi que ta dando erro:

    
    php: /pkg_edit.php: The command '/usr/local/etc/rc.d/named.sh restart'
    returned exit code '127', the output was
    '/usr/local/etc/rc.d/named.sh: not found'
    
    


  • Consegue ver se o named.conf está correto?



  • @marcelloc:

    Consegue ver se o named.conf está correto?

    Ele ficou assim:

    
    #Bind pfsense configuration
    #Do not edit this file!!!
    
            options {
                    directory "/etc/namedb";
                    pid-file "/var/run/named/pid";
                    statistics-file "/var/log/named.stats";
    
                    max-cache-size 256M;
                    listen-on-v6 { Any; };
                    listen-on { Any; };
                    version "N/A";
    
            };
    
            logging {
                    channel custom {
                            file "/var/log/named.log";
                            print-time yes;
                            print-category yes;
                    };
    
                    category config         {custom;};
                    category notify         {custom;};
                    category dnssec         {custom;};
                    category general        {custom;};
                    category security       {custom;};
                    category xfer-out       {custom;};
                    category lame-servers   {custom;};
            };
    acl "rede_interna" {
            192.168.1.0/24;
            192.168.3.0/24;
            192.168.4.0/24;
            192.168.10.0/24;
            127.0.0.1;
    };
    
    acl "nameserver" {
            192.168.1.254/24;
    };
    
    view "interna" {
    
            recursion yes;
            match-clients { rede_interna;};
            allow-recursion { rede_interna;};
    
            zone "." {
                    type hint;
                    file "/etc/namedb/named.root";
            };
    
            zone "dbinterno.meudominio.com.br" {
                    type master;
                    file "/etc/namedb/master/interna/dbinterno.meudominio.com.br.DB";
                    allow-update { none;};
                    allow-query { rede_interna;};
                    allow-transfer { rede_interna;};
            };
    
            zone "dbinterno.meudominio2.com.br" {
                    type master;
                    file "/etc/namedb/master/interna/dbinterno.meudominio2.com.br.DB";
                    allow-update { none;};
                    allow-query { rede_interna;};
                    allow-transfer { rede_interna;};
            };
    
    };
    view "externa" {
    
            recursion no;
            match-clients { none;};
            allow-recursion { none;};
    
            zone "." {
                    type hint;
                    file "/etc/namedb/named.root";
            };
    
            zone "db.rmeudominio.com.br" {
                    type master;
                    file "/etc/namedb/master/externa/db.meudominio.com.br.DB";
                    allow-update { none;};
                    allow-query { none;};
                    allow-transfer { none;};
            };
    
            zone "db.meudominio2.com.br" {
                    type master;
                    file "/etc/namedb/master/externa/db.meudominio2.com.br.DB";
                    allow-update { none;};
                    allow-query { none;};
                    allow-transfer { none;};
            };
    
    

    E no /usr/local/etc/rc.d/ nao tem o named.sh, chamado pelo bind.inc nessas linhas:

    
     if($bind_enable == "on")
                    mwexec("/usr/local/etc/rc.d/named.sh restart");
            else
                    mwexec("/usr/local/etc/rc.d/named.sh stop");
    
    


  • tentei achar o named.sh, pra ver se nao estava em outro local…mas nao encontrei

    
    [2.1-RELEASE][root@fw.dominio.int/(52): find / -name "named*.*"
    /etc/namedb/named.conf
    /usr/local/include/isccfg/namedconf.h
    /usr/local/man/man8/named-checkconf.8.gz
    /usr/local/man/man8/named-checkzone.8.gz
    /usr/local/man/man8/named-journalprint.8.gz
    /usr/local/man/man8/named.8.gz
    /usr/local/man/man8/named-compilezone.8.gz
    /usr/local/man/man5/named.conf.5.gz
    /usr/local/etc/named.conf
    /var/named/usr/local/etc/named.conf
    
    [/code]
    


  • Instalou o binário?



  • marcosjost é o seguinte, ele faz isso na instalação.

    no bind.xml

           <custom_php_install_command>bind_write_rcfile();
                    create_log_file();</custom_php_install_command> 
    

    a função bind_write_rcfile() que gera o named.sh

    Como faz a instalação pelo git ai não roda ele.

    Cara mas isso ai não tá bom não, tem que colocar na sync, todas vez que aplicar tem que verificar se tem o named.sh ou não.
    Dependendo se ta on ou off.

    instalando pelo git.
    a

    faz assim:

    cd /usr/local/etc/rc.d/
    
    fetch http://pfsense.useb.org.br/bind/named.sh
    

    resolve o erro por hora, estou fora esses dias.

    Sexta acerto no beta. blz



  • @marcelloc:

    Instalou o binário?

    Instalei os arquivos da interface grafica e o pacote ( pkg_add -r ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.3-release/dns/bind99-9.9.0_1.tbz )

    Fiz o que o jorhardware passou…..agora ta dando erro aqui:

    
    php: /pkg_edit.php: The command '/usr/local/etc/rc.d/named.sh restart' returned exit code '1', the output was '/libexec/ld-elf.so.1: Shared object "libgssapi_krb5.so.10" not found, required by "named"'
    
    


  • O jimp compilou o pbi ontem. Vou tentar terminar o pacote hoje.



  • @marcelloc:

    @marcioducrato:

    me desculpe a ignorancia, mais quais as utilidades disso? falo na pratica.

    Qual a utilidade do bind? ???

    Se você não sabe o que é o bind, então este pacote não tem utilidade pra você.

    Se quiser saber o que é o bind, começe por aqui: http://www.isc.org/downloads/BIND/

    desculpa mais acho que você não entendeu minha pergunta.

    sei a utilidade do bind, que é um serviço de dns, porem perguntei ná pratica de utilizar esse pacote no pfsense, pois pra quem já tem um servidor de dns e usa o pfsense como forwarder,
    quais seriam as vantagens e aplicabilidades desse pacote?



  • @marcioducrato:

    quais seriam as vantagens e aplicabilidades desse pacote?

    Em ambientes maiores, o dns externos normalmente fica isolado do interno/ad. Neste caso o bind(com chroot) no pfsense fica perfeito.

    Já temos o pacote dnserver rodando tinydns mas como o próprio nome diz, ele é limitado para algumas configurações.



  • @marcelloc:

    @marcioducrato:

    quais seriam as vantagens e aplicabilidades desse pacote?

    Em ambientes maiores, o dns externos normalmente fica isolado do interno/ad. Neste caso o bind(com chroot) no pfsense fica perfeito.

    Já temos o pacote dnserver rodando tinydns mas como o próprio nome diz, ele é limitado para algumas configurações.

    blza obrigado pela resposta/



  • @marcelloc:

    O jimp compilou o pbi ontem. vou Vou tentar terminar o pacote hoje.

    Legal…vou esperar para testar ...  :)



  • Bom, o pacote ja esta disponivel la nos packages….. ;D
    mas..... como instalei o bind99-9.9.0_1.tbz pleo pkg_add e mais os arquivos da interface pelo fetch....
    Tenho que remove-los antes de instalar o pacote pelo pfsense?