Hosts With LDAP
|
일종의 HOWTO 문서입니다.
이 문서는 여러 대의 서버에서 LDAP를 통해 hosts 정보를 하나로 관리하는 방법이다.
LDAP는 범용적인 디렉토리 서비스로 사용자 인증 뿐 아니라 hosts 등 NIS로 공유하는
정보들을 대부분의 정보들을 공유할 수 있는 구현들이 있다. 이 문서에서는 특히 hosts
정보를 LDAP에서 얻어오도록 설정하는 방법에 대해 다루겠다.
참여한 분(들): kyagrd
참여한 분들은 작업일지를 작성해 주세요
1. 소개 ¶LDAP을 이용한 사용자 및 그룹 인증에 대한 문서는 많은 반면 hosts 정보를 LDAP 을 이용한
관리에 대한 문서가 아직 많지 않아 이 문서를 작성하게 되었다. LDAP를 이용해 hosts 를
공유해야 할 필요성에 대해 먼저 알아보자.
현재 인터넷에서 이름에 해당하는 장비의 IP주소를 알고자 할 때는 DNS 를
쓰는 것이 일반적이나, 아직도 내부적으로만 쓰이는 이름들(이를테면 사설망 장비
이름)은 DNS 에 등록하지 않고 hosts 파일에만 설정하여 쓰는 경우가 많다.
전통적으로 hosts 를 비롯한 네트웍 설정 그리고 시스템의 사용자 및 그룹 정보를
공유하기 위한 디렉터리 서비스로는 NIS를 사용하고 있다. 아직도 보다 시스템적인
것에만 치중하는 경우에는 (이를테면 주요 서버의 파일시스템을 NFS로 엮기) NIS를
사용하는 것이 더 효과적일 수도 있다.
그러나 시스템 사용자의 성격과는 거리가 먼 단지 특정 서비스를 이용하는
사용자와 그룹들의 정보를 (이를테면 기업 메일 서비스, SAMBA 네트웍 공유폴더
등의 사용자 및 그룹 정보) 관리하는 데는 보다 범용적인 디렉토리 서비스인
LDAP을 주로 사용하는 추세이다. LDAP은 범용적인 디렉터리 서비스이기 때문에
추가적인 정보를 아울러 관리할 수 있는 장점이 있다. 또한 NIS가 시스템 파일들을
기반으로 시스템 파일 자체를 일부 수정해 가면서 사용해야 하는 것과는 달리
LDAP을 사용하면 정보의 관리를 보다 독립적으로 관리할 수 있도록 구성이 깨끗한
장점도 있다. 특히 사용자 정보를 이미 LDAP으로 관리하고 있는 경우라면 hosts
정보도 LDAP으로 관리하는 것이 당연하다. 그리고 정말로 필요하다면 LDAP과 NIS를
동시에 사용할 수도 있다.
2. 동작 원리 ¶LDAP 은 단지 디렉터리 서비스일 뿐이다. 이것이 hosts 파일 등과 연동하기 위해서는 별도의
이름을 어디서 찾아올지 설정하는 것이 필요한데 이것을 NSS 라고 부른다. NIS 경우도 마찬가지다.
이름으로 IP주소를 찾을 때 기본적이 시스템에서는 hosts 에서 찾아보고 없으면 DNS 에서 찾는다.
NSS 를 설정이 있으면 hosts 와 DNS 이외의 NIS, LDAP 등 다른 이름을 얻어오는 방법들을 추가할
수 있고 그 순서도 임의로 조정할 수 있다. NSS 설정과 그 동작에 따른 예는 다음과 같다.
: <NSS 가 없을 때 기본설정> 이름 찾기 관련 API 가 찾는 순서: 1./etc/hosts, 2.DNS <NSS 설정 경우 1> # /etc/nsswitch.conf 의 일부 hosts: files dns ldap 이름 찾기 관련 API 가 찾는 순서: 1./etc/hosts, 2.DNS, 3.LDAP <NSS 설정 경우 2> # /etc/nsswitch.conf 의 일부 hosts: files ldap dns 이름 찾기 관련 API 가 찾는 순서: 1./etc/hosts, 2.LDAP, 3.DNS 도식에 사용된 약어
3. 패키지 설치 및 설정 ¶Debian Sarge 에서 설치하고 테스트해 보았으므로 편의상 데비안 패키지 이름으로 적었다.
다음 네 가지 패키지를 설치해야 한다. 물론 의존 패키지들도 설치해야 함은 당연하다.
3.2. libpam_ldap ¶libpam_ldap 가 hosts 설정만을 위해 필요한지 아닌지는 잘 모르겠으나,
설정파일(
/etc/pam_ldap.conf)을 같이 쓰는 부분이 있는 듯 하고
계정과 패스워드 등의 정보를 ldap 를 이용하여 관리하기 위해서는
필요한 모듈이므로 깔아 두는 것이 좋겠다. 인터넷 검색 결과를 보아서는
어떤 플랫폼에서는 nss_ldap 의 경우 /etc/nss_ldap.conf 과 같은 설정파일이
있는 경우도 있는 것 같기도 하다. 하지만 데비안 sarge 의 경우는 같이
/etc/pam_ldap.conf 를 사용하는 듯 하다.
hosts 하고는 전혀 상관없지만 libpam_cracklib 도 보통 이것과 연동되는 패키지이므로 깐다.
데비안에서 패키지로 그냥 깔면 된다.
3.3. libnss_ldap ¶깔고 나서
/etc/pam_ldap.conf 설정파일을 설정한다. 데비안의 경우는 libpam_ldap 패키지를
설치할 때 debconf 로 설정이 기본적으로 된다. 효율 향상을 위해 추가로로 nss 관련
옵션들은 수동으로 설정할 수 있다. 옵션 설정은 기본 설치 파일에 예제가 주석처리되어 있다.
참고로 인터넷 검색 결과로 봐서는
어떤 플랫폼에서는 nss_ldap 의 경우
/etc/nss_ldap.conf 과 같은 설정파일이
있는 경우도 있는 것 같기도 하다. 하지만 데비안 sarge 의 경우는 같이
/etc/pam_ldap.conf 를 같이 사용하는 것으로 보인다.
3.4. nscd ¶이게 name service caching daemon 이라 이름 그대로 없어도 원칙적으로는 되는 것 같다.
하지만 이게 없으면 설정이 어렵다. 솔직히 이거 없이는 제대로 작동하게 하는 방법을
아직 모르겠고 굳이 알 필요도 없을 것 같다. 효율 면에 있어서나 설정이 복잡해진다는
점에 있어서나 이건 필수적으로 깔아야 한다고 생각하면 되겠다.
데비안에서 설정이 필요없다. 그냥 패키지로 깔고 띄우기만 하면 된다.
설정파일에 캐시 시간 등의 설정이 있을 뿐이다. 원하는 대로 변경하면 된다.
4. 사용 예 ¶kyagrd@kyagrd:kyagrd$ ###################### LDAP 에는 들어있다. #### kyagrd@kyagrd:kyagrd$ ldapsearch -x -LLL -b 'ou=hosts,dc=kyagrd,dc=dyndns,dc=org' "(cn=myhost.yyy.net)" dn: cn=myhost.yyy.net,ou=hosts,dc=kyagrd,dc=dyndns,dc=org objectClass: device objectClass: ipHost objectClass: top ipHostNumber: 143.248.1.177 cn: myhost.yyy.net kyagrd@kyagrd:kyagrd$ ###################### hosts 파일에도 없다. #### kyagrd@kyagrd:kyagrd$ grep 'myhost.yyy.net' /etc/hosts kyagrd@kyagrd:kyagrd$ ###################### DNS 에서도 못찾는다 #### kyagrd@kyagrd:kyagrd$ nslookup myhost.yyy.net Server: 168.126.63.1 Address: 168.126.63.1#53 ** server can't find myhost.yyy.net: NXDOMAIN kyagrd@kyagrd:kyagrd$ ################# 하지만 프로그램들은 찾는다!! #### kyagrd@kyagrd:kyagrd$ ping myhost.yyy.net PING myhost.yyy.net (143.248.1.177) 56(84) bytes of data. --- myhost.yyy.net ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 999ms kyagrd@kyagrd:kyagrd$ cat modify.ldif dn: cn=myhost.yyy.net,ou=hosts,dc=kyagrd,dc=dyndns,dc=org changetype: modify replace: ipHostNumber ipHostNumber: 127.0.0.1 kyagrd@kyagrd:kyagrd$ #################### IP주소를 고친다. #### kyagrd@kyagrd:kyagrd$ ldapmodify -x -D 'cn=admin,dc=kyagrd,dc=dyndns,dc=org' -f modify.ldif -W Enter LDAP Password: modifying entry "cn=myhost.yyy.net,ou=hosts,dc=kyagrd,dc=dyndns,dc=org" kyagrd@kyagrd:kyagrd$ # nscd 캐시가 아직 살아있어 적용이 안됐다. kyagrd@kyagrd:kyagrd$ ping myhost.yyy.net PING myhost.yyy.net (143.248.1.177) 56(84) bytes of data. --- myhost.yyy.net ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 999ms kyagrd@kyagrd:kyagrd$ ###################### nscd 를 다시 띄운다 #### kyagrd@kyagrd:kyagrd$ su Password: kyagrd:/home/kyagrd# /etc/init.d/nscd restart Stopping Name Service Cache Daemon: nscd. Starting Name Service Cache Daemon: nscd. kyagrd:/home/kyagrd# exit kyagrd@kyagrd:kyagrd$ ################## 변경사항이 잘 적용되었다 #### kyagrd@kyagrd:kyagrd$ ping myhost.yyy.net PING myhost.yyy.net (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.025 ms --- myhost.yyy.net ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.025/0.025/0.026/0.005 ms kyagrd@kyagrd:kyagrd$ == 작업일지 ===
문서를 만들다 -- kyagrd 2004-12-29
일부 오탈자 수정 -- drssay 2005-04-09
|
You are secretive in your dealings but never to the extent of trickery. |










