ldapwhoami没有根据tcpdump发送流量

时间:2019-07-26 00:12:46

标签: linux active-directory ldap terraform tcpdump

我正在使用Terraform在GCP中部署安装程序,其中有一个运行活动目录的Windows VM(作为域控制器)和另一个运行应用程序的Linux VM。该应用程序需要使用用户的凭据向域控制器进行身份验证,因此我放入了一个bash脚本,该脚本要等到创建用户后才能启动该应用程序。脚本如下所示:

    until ldapwhoami -H ldap://${var.domain_controller_ip} -D ${var.service_account_username}@${var.domain_name} -w ${var.service_account_password} -o nettimeout=1 > /dev/null 2>&1
    do
      echo 'Waiting for AD account. Retrying in 10 seconds...'
      sleep 10
    done

这里的目的是一直保持循环,直到在域控制器中创建了用户为止,此时循环退出并继续启动应用程序。

此脚本在Terraform SSH设置程序的上下文中运行,以便我可以监视Terraform主机上发生的情况,以便在此循环退出之前不会开始下一步。

该脚本大多数时候都起作用-这意味着在域控制器中创建用户后不久,Linux VM中的循环将退出并继续。但是,很多时候,我看到Linux VM陷入了等待数小时的循环,即使已经创建了用户,也无法成功执行“ ldapwhoami”。在这段时间里,我注意到以下几点:

  1. 如果我在同一个Linux VM中启动另一个SSH会话并执行完全相同的命令,则ldapwhoami能够成功进行身份验证-在循环仍然失败并重试时,所有这些操作都可以进行。

  2. 如果我在同一个Linux VM中启动另一个SSH会话并启动tcpdump host [domain_controller_ip],则不会看到来自循环的流量-这意味着ldapwhoami失败了,甚至没有发送任何数据包到网络。 (通常,tcpdump会在成功案例中显示数据包)

我真的很困惑,为什么有时ldapwhoami甚至没有向域控制器发送数据包。某处有一些本地缓存吗?如果是这样,如何冲洗?

另一个观察结果是,如果我作为启动脚本的一部分而不是在SSH供应器中运行相同的循环(如果很难以这种方式监视进度),则如果我没有看到此问题。也许这是SSH供应商的问题?

感谢您的帮助!

edit:当它陷入循环中时,也有机会在40分钟以上(正常成功的情况下需要大约15分钟等待用户)后自动恢复(意味着退出循环),但是有时它无法恢复数小时。

0 个答案:

没有答案