我将 FreeNAS 盒绑定到 AD,以便学生登录 SMB 安装。一切正常。
我有一个在 FreeNAS 上运行的 bash 脚本,用于构建一个 index.html 页面,该页面指向每个学生主目录的子目录,他们可以将完成的编码项目放在网络上供公众查看。这也有效。
该脚本对 FreeNAS 上的每个用户进行 AD 查找,并且仅当他们是学生(即群组成员CN=students
)时才将其添加到 index.html 文件中:
ldapsearch -Q -LLL cn=[someuser] ObjectCategory:CN=Person memberOf
奇怪的是,大约 80% 的时间里,AD 查询会立即发生。每 5 次查询需要 75 秒才能完成。我编写了一个脚本来测试这一点,并且该模式非常可重复。几乎无一例外,每 5 次查询都需要恰好 75 秒,无论您查询 5 次相同的名称还是不同的名称,都没有关系。
ldapsearch
如果我在命令行中立即执行:
ldapsearch -LLL cn=someuser
Ctrl我反复执行此操作,每重复 5 次,它就会变慢。如果我通过点击-中止缓慢的查询C,下次我执行此操作时,它又会变快。
我没有运行 AD 服务器,AD 管理员也不知道为什么会发生这种情况。有什么线索吗?
据我所知,DNS 两种方式的配置都正确——或者至少,设置的其他一切似乎都正常(用户可以使用 AD 凭证登录 FreeNAS,而且登录速度相当快)。所有时钟也同步。
答案1
第 5 个查询可能针对另一个站点中的域控制器(请参阅https://technet.microsoft.com/en-us/library/cc782048%28v=ws.10%29.aspx,这是 2003 年的,但仍然有效)。
使用如下查询:
ldapsearch -h domaincontroller -LLL -s sub -x -W -b cn=configuration,dc=your,dc=domain -Z -D "cn=youruser,ou=container,dc=your,dc=domain" "objectclass=subnet" cn siteobject
Enter LDAP Password:
dn: CN=172.20.4.0/24,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.20.4.0/24
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.20.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.20.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.30.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.30.0.0/16
siteObject: CN=London,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.19.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.19.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.18.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.18.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.21.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.21.0.0/16
siteObject: CN=New York,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.23.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.23.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.17.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.17.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
dn: CN=172.31.0.0/16,CN=Subnets,CN=Sites,CN=Configuration,dc=your,dc=domain
cn: 172.31.0.0/16
siteObject: CN=Default-First-Site-Name,CN=Sites,CN=Configuration,dc=your,dc=domain
您可以看到,在这个网络中我们有标准的“Default-First-Site-Name”对象,以及纽约和伦敦站点。
一旦知道 freenas 主机在 AD 站点 IP 范围内的位置,就可以向 DNS 服务器查询该站点中的 ldap 主机。对于伦敦站点,查询如下:
dig -t srv _ldap._tcp.london._sites.your.domain +short
0 100 389 dc05.your.domain.
0 100 389 dc03.your.domain.
0 100 389 dc04.your.domain.
在答案部分,您将看到该站点的不同 ldap 主机。因此,您可以只使用那些主机。
答案2
果然,五台服务器中有一台没有响应(不知道它是否处于离线状态,或者不存在,或者什么...... AD 管理员必须处理这个问题。)
我重写了脚本,以便它只查询四个好的服务器(每次随机选择哪一个),现在它可以立即执行!