作成日:2009年03月01日、更新日:2009年03月01日 作成:鷹の巣

OpenSSL の設定放置で、ISC BIND9 のサービス動作エラーが発生。修復するまでの経過を説明。


新作 OpenSSL の設定放置で、ISC BIND9 のサービス動作開始せず

  1. Shining Light Productions - Win32 OpenSSL の Win32 OpenSSL v0.9.8j インストールを行ったのが原因で、会社の ISC BIND9 のサービス動作が開始出来なくなりました。(会社のルータは、NetGenesis SuperOPT100 無印で、LAN 内から、グローバルアドレスで、アクセス出来ません。LAN内用のDNSサーバーを BIND9 で構築していました。)これが復旧するまでの経過を以下に示します。

  2. 不具合の現象:BIND 9 を BIND | Internet Systems Consortium の BIND 9.6.0-P1 for Windows XP/2003/2008 にアップデートし、ISC BIND をサービス画面より起動すると、「ローカル コンピュータ の ISC BIND サービスを開始できません。エラー 1067: プロセスを途中で強制終了しました。」というエラーが出る。

  3. コマンドプロンプト画面より起動すると、

    C:\>net start named
    ISC BIND サービスを開始します.
    ISC BIND サービスを開始できませんでした。
    
    システム エラーが発生しました。
    
    システム エラー 1067 が発生しました。
    
    プロセスを途中で強制終了しました。
    

1. OpenSSL の設定放置で、ISC BIND9 のサービス動作開始せず

  1. update なので、設定ファイルには問題なし。BIND インストール時の VC++2005 の runtime 周りのエラーだと考え、Google で、「ISC BIND エラー 1067」とかで検索。しかし、同様のエラーは、見当たらない。runtime のエラーだという潜入観念があるので、下記のコマンドを実施すると案の定、エラーが発生。長引きそうなので、代替のDNSサーバーをGoogle で検索し、Private Local DNS Server for Windows にピンチヒッターに立ってもらった。(PLDNSは、アンチウィルスソフトに排除されたWinDNSに似ているかも。)

    下記のコマンドも使用できないので、VC++2005 の runtime のインストールエラーだと思われたが。

    C:\>nslookup sakaguch.com
    Auto configuration failed
    424:error:0E065068:configuration file routines:STR_COPY:variable has no value:.\crypto\conf\conf_def.c:629:line 37
    
    C:\>dig sakaguch.com
    Auto configuration failed
    3012:error:0E065068:configuration file routines:STR_COPY:variable has no value:.\crypto\conf\conf_def.c:629:line 37
    
  2. デバッグ用のBINDのbinaryで動かそうと一旦考えたが、ここで、「crypto」という文字に注目した。会社のDNSサーバーは、実験的に動かしていて、私の自宅サーバー同様、ドメイン名は、たったの1つです。リモート操作の必要性が全くないので、リモート操作用のキーは、作成していなかった。BIND9 が OpenSSL に依存していることをすっかり、忘れていました。(自宅サーバーでは、ソースを読むことをほとんどしなかったが、会社のサーバーとなると、ソースを読まざるをえない。)

    OpenSSLのソースをダウンロードして、conf_def.c の 629行を見る。

     /* So at this point we have
     * np which is the start of the name string which is
     * '\0' terminated. 
     * cp which is the start of the section string which is
     * '\0' terminated.
     * e is the 'next point after'.
     * r and rr are the chars replaced by the '\0'
     * rp and rrp is where 'r' and 'rr' came from.
     */
    p=_CONF_get_string(conf,cp,np);
    if (rrp != NULL) *rrp=rr;
    *rp=r;
    if (p == NULL)
            {
            CONFerr(CONF_F_STR_COPY,CONF_R_VARIABLE_HAS_NO_VALUE); /* <---------- 629行 */
            goto err;
            }
    BUF_MEM_grow_clean(buf,(strlen(p)+buf->length-(e-from)));
    
  3. 環境変数OPENSSL_CONFにC:\OpenSSL\bin\openssl.cfgが定義されているので、

    この openssl.cfg の 37行を見る。

    ####################################################################
    [ ca ]
    default_ca = CA_default # The default ca section
    
    ####################################################################
    [ CA_default ]
    
    dir = $ENV::KEY_DIR # Where everything is kept <---------- 37行
    certs = $dir # Where the issued certs are kept
    crl_dir = $dir # Where the issued crl are kept
    database = $dir/index.txt # database index file.
    new_certs_dir = $dir # default place for new certs.
    
  4. 37行は、「 dir = ./demoCA 」になっていなればならない。XMAIL関係の openssl.cnf が残留していたと考えらます。 C:\Program Files\OpenVPN\bin\openssl.cfg をC:\OpenSSL\bin\openssl.cfg に上書きコピーすると、

    openssl.cfg の変更後の起動結果

    C:\>net start named
    ISC BIND サービスを開始します.
    ISC BIND サービスは正常に開始されました。
    
    
    C:\>net stop named
    
    ISC BIND サービスは正常に停止されました。
    
    
    C:\>
    

    正常に起動と停止ができる様になりました。

  5. 不具合の発生経過

  6. おまけの話。Google で検索した時にコマンドの「 nslookup.exe  www.example.com 」を実行するとエラーになる。「 .exe 」を抜いて、「 nslookup  www.example.com 」とすれば良いという回答。初耳だったので、試しに実行。

    BIND 9.6.0-P1 for Windows XP/2003/2008 でのコマンド実行例

    C:\>cd \dns\bin
    
    C:\dns\bin>dir /w
     ドライブ C のボリューム ラベルは ローカル ディスク です
     ボリューム シリアル番号は 8459-F5CE です
    
     C:\dns\bin のディレクトリ
    
    [.] [..] bindevt.dll BINDInstall.exe dig.exe
    dnssec-dsfromkey.exe dnssec-keyfromlabel.exe dnssec-keygen.exe dnssec-signzone.exe host.exe
    libbind9.dll libdns.dll libeay32.dll libisc.dll libisccc.dll
    libisccfg.dll liblwres.dll named-checkconf.exe named-checkzone.exe named-compilezone.exe
    named.exe nslookup.exe nsupdate.exe readme1st.txt rndc-confgen.exe
    rndc.exe
     24 個のファイル 3,497,582 バイト
     2 個のディレクトリ 25,600,094,208 バイトの空き領域
    
    C:\dns\bin>nslookup sakaguch.com
    Server: 192.168.0.1
    Address: 192.168.0.1#53
    
    Non-authoritative answer:
    Name: sakaguch.com
    Address: 203.212.55.105
    
    
    C:\dns\bin>nslookup.exe sakaguch.com
    Server: 192.168.0.1
    Address: 192.168.0.1#53
    
    Non-authoritative answer:
    Name: sakaguch.com
    Address: 203.212.55.105
    
    
    C:\dns\bin>dig sakaguch.com
    
    ; <<>> DiG 9.6.0 <<>> sakaguch.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1833
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2
    
    ;; QUESTION SECTION:
    ;sakaguch.com. IN A
    
    ;; ANSWER SECTION:
    sakaguch.com. 26734 IN A 203.212.55.105
    
    ;; AUTHORITY SECTION:
    sakaguch.com. 26734 IN NS ns1.nsnoc.com.
    sakaguch.com. 26734 IN NS ns2.nsnoc.com.
    sakaguch.com. 26734 IN NS ns1.twisted4life.com.
    sakaguch.com. 26734 IN NS ns1.sakaguch.com.
    
    ;; ADDITIONAL SECTION:
    ns1.sakaguch.com. 152277 IN A 203.212.55.105
    ns2.nsnoc.com. 151517 IN A 195.69.95.114
    
    ;; Query time: 31 msec
    ;; SERVER: 192.168.0.1#53(192.168.0.1)
    ;; WHEN: Sun Mar 01 07:54:49 2009
    ;; MSG SIZE rcvd: 169
    
    
    C:\dns\bin>dig.exe sakaguch.com
    
    ; <<>> DiG 9.6.0 <<>> sakaguch.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1657
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2
    
    ;; QUESTION SECTION:
    ;sakaguch.com. IN A
    
    ;; ANSWER SECTION:
    sakaguch.com. 26724 IN A 203.212.55.105
    
    ;; AUTHORITY SECTION:
    sakaguch.com. 26724 IN NS ns1.sakaguch.com.
    sakaguch.com. 26724 IN NS ns1.twisted4life.com.
    sakaguch.com. 26724 IN NS ns1.nsnoc.com.
    sakaguch.com. 26724 IN NS ns2.nsnoc.com.
    
    ;; ADDITIONAL SECTION:
    ns1.sakaguch.com. 152267 IN A 203.212.55.105
    ns2.nsnoc.com. 151507 IN A 195.69.95.114
    
    ;; Query time: 31 msec
    ;; SERVER: 192.168.0.1#53(192.168.0.1)
    ;; WHEN: Sun Mar 01 07:54:59 2009
    ;; MSG SIZE rcvd: 169
    
    
    C:\dns\bin>

    実行結果は、どちらでも正常で、「 .exe 」をつけても問題なかった。path に絡んだ話だったのだろうか?

目次▲頁先頭