Domain-Name-System

禁用 NSS LDAP IPv6 (AAAA) 查找

  • June 8, 2014

**問題:**在 CentOS (RHEL) 5 機器上(LDAP 支持的)NSS 查找期間,如何禁用我的 LDAP 伺服器的 inet6 AAAA 查詢?

**背景:*我已將伺服器配置為諮詢ldap://ldap.internalNSS密碼查找。每個相關的 NSS 查找,例如需要將 UID 轉換為網路使用者名的 getpwuid(3),在連接到 ldap 伺服器之前執行以下 DNS舞蹈:*ls -l

AAAA? ldap.internal          -> (no records)
AAAA? ldap.internal.internal -> NXDomain
A?    ldap.internal          -> 192.168.3.89

我想完全跳過前兩個查詢。配置:

[server]$ cat /etc/redhat-release 
CentOS release 5.4 (Final)
[server]$ grep ^passwd /etc/nsswitch.conf 
passwd:     files ldap
[server]$ grep ^uri /etc/ldap.conf
uri ldap://ldap.internal/

對於它的價值,IPv6 支持在這些系統上被禁用:

[server]$ grep off /etc/modprobe.conf
alias ipv6 off
alias net-pf-10 off
[server]$ echo "$(ip a | grep -c inet6) IPv6-enabled interfaces"
0 IPv6-enabled interfaces

簡短的回答是:不,這種行為不能通過簡單的系統配置來改變。

在撰寫本文時, AAAA 查找是隨附的openldapopenldap-2.3.43-3.el5的預期行為。使用–enable-ipv6建構的 LDAP 連接常式通過getaddrinfo(3)查找任何可用的地址族 ( AF_UNSPEC) 來解析主機,因此包括 inet4 和 inet6。

現在,openldap程式碼知道該AI_ADDRCONFIG提示,當系統上沒有配置任何 inet6 地址時,這將阻止查找 inet6 地址,對於 inet4 地址也是如此。但是,由於兩個原因,程式碼無法提供此提示:

首先,錯誤地,提示被拼寫為“AI_ATTRCONFIG”

$$ sic $$,在 2.4.14 左右更正了拼寫錯誤。其次,沒有對該標誌的可行性進行配置測試,因此提供標誌的程式碼,無論是否拼寫錯誤,都不會被編譯進去。 我想,只是多一點不需要的網路聊天。

我不確定/etc/gai.conf2009 年是否可以使用,但現在可以使用(並且似乎至少從 CentOS 5.5 開始)。它是 glibc 的一項功能,允許設置 IP 地址排序的首選項getaddrinfo(3)

查看https://serverfault.com/a/511240/161782以獲取帶有範例的完整答案。

如果您還想讓源地址選擇具有匹配策略,請參閱此文章: http ://biplane.com.au/blog/?p=122

引用自:https://serverfault.com/questions/96385