3. NetMeeting directory kit

3.1. NetMeeting directory kit 이란?

각 넷미팅 클라이언트들은 LDAP서버에서 등록될 수 있어야 합니다. 그리고, 하나의 윈도우에서 같은 서버에서 등록된 넷미팅 클라이언트들의 목록을 볼 수 있어야 합니다. NetMeeting directory kit 는 넷미팅 클라이언트에게 디렉터리 서비스를 제공하는 OpenLDAP 서버의 확장팩입니다.

3.2. 왜 NetMeeting directory kit 가 필요한가?

넷미팅은 특정한 IP주소나 DNS네임을 지정하는 것으로 다른 H.323장치에 접속할 수 있으나 일반적으로 당신은 LDAP 디렉터리 서버를 이용하는 것을 원할 것입니다. LDAP를 이용한다는 것은 사용자가 사용 가능한 목적 주소들의 디렉터리 목록을 볼 수 있다는 것을 의미하고, 예를 들어서 당신이 하나의 IP 주소로부터 다중의 H.323 목적지로 서비스되는 것을 원하는 것처럼 당신이 익명을 해독하는 것이 필요할 때 NetMeeting directory kit 가 요구됩니다.

넷미팅 클라이언트는 여러 방법으로 LDAP프로토콜을 위반할 수 있습니다. 그래서 당신이 표준 LDAP서버를 사용하려고 시도한다면 문제에 직면할 수도 있습니다. NetMeeting directory kit 는 직면할 지도 모르는 문제들을 해결해 주고 OpenLDAP 서버가 넷미팅 디렉터리 서버로 이용될 수 있게 해줍니다.

3.3. 어떻게 작동하나

                 Block diagram of NetMeeting directory kit

___________________         _______    __________________        ______________
|    LDAP server  | request |      |   |   LDAP server  | request|            |
|                 | <-------| Perl |<--|                | <------| NetMeeting |
| on private port |         |script|   | on public port |        |  client    |
|  (i.e, 2345)    |-------> |      |-->|     389        |------->|            |
|                 | reply   --------   |                |  reply --------------
|                 |                    |                |      
-------------------                    ------------------

디렉터리 서버는 Request를 받는 'master' LDAP 서버와 마이크로 소프트 넷미팅의 request를 바르게 번역할 수 있는 Perl script, 그리고 감춰진 LDAP 서버의 질의 이후에 넷미팅 클라이언트가 이해할 수 있는 방법으로 만들어진 포맷들로 구성됩니다. OpenLDAP의 'shell backend'는 Perl script를 호출하는데 사용됩니다. 커스텀 스키마도 요구됩니다. 스크립트는 타임아웃 에러와 작동하지 않는 모든 에러를 포함한 모든 문제를 관리할 수 있어야 합니다.

3.4. 어디서 소프트웨어를 얻나?

우선 당신 OpenLDAP 소프트웨어가 필요하다.

참고: 주의 : 미리 만들어진 OpenLDAP 소프트웨어는(예 RPM) shell backend 지원하게 구성되지 않는다면 작동하지 않을 수 있습니다.

당신은 다음의 사이트에서 OpenLDAP를 다운 받을 수 있습니다.. ftp://ftp.OpenLDAP.org/pub/OpenLDAP/openldap-release/ or any mirror.

NetMeeting directory kit는 다음의 사이트에서 다운 받을 수 있습니다. http://www.freesoft.org/software/NetMeeting/download.

당신은 다음의 사이트에서 http://www.perl.org, 받을 수 있는 Perl 5가 필요하지만, 대부분 리눅스 배포판에는 Peal이 이미 포함되어 있습니다. 당신은 또한 Perl에 인스톨되고 다운 할 수 있는 Perl CPAN archive로부터 얻을 수 있는 Net::LDAP 모듈이 필요합니다.

[root@y2k baccala]# perl -MCPAN -e shell

cpan shell -- CPAN exploration and modules installation (v1.58)
ReadLine support enabled

cpan> install Net::LDAP

... much output omitted ...

  /usr/bin/make install -- OK

cpan>

당신이 전에 CPAN을 사용하지 않았다면 당신은 먼저 구성질문에 답해야 할 것입니다. 한번 이라도 CPAN을 구성했다면, Net::LDAP 모듈은 자동으로 다운되고 컴파일 되어서 인스톨 될 것입니다.

3.5. 설치

OpenLDAP를 설치하기 위해서는 약 60MB의 디스크 용량이 필요합니다. open-ldap-2.0.x.tgz를 풀고 구성합니다.

참고: 주의 : Backend function으로 "-enable-shell"을 반드시 주어야 합니다.

bash$ ./configure --enable-shell
      

Now build and install it with:

bash$ make

... much output omitted ...

bash# make install
      

프로그램은 일반적으로 다음의 디렉터리 밑에 설치 될 것 입니다./usr/local:

표 2. OpenLDAP 가 사용하는 디렉터리

/usr/local/lib 공유라이브러리
/usr/local/bin 추가, 삭제, LDAP Searching 클라이언트 이진파일
/usr/local/sbin raw 데이타베이스를 다루는 유티릴티 프로그램. 평상시 작업에는 사용하지 않음
/usr/local/libexec slapd이진파일을 포함하는 다양한 서버 프로그램
/usr/local/etc/openldap 기본 설정 파일이 있는 곳
/usr/local/etc/openldap/schema LDAP 서버에 의해서 사용되는 다름 스키마
/usr/local/var/... LDAP 서버의 데이타 베이스가 위치하는 곳 (서브 디렉터리에 생김)
/usr/local/man/... 관계되는 문서가 있는 곳

OpenLDAP를 인스톨한 후 하는 다음 작업은 넷미팅 디렉터리 키드를 설치하는 것입니다. 다음 명령어로 ndk.tgz를 압축해제합니다 Untar ndk.tgz. 위 파일은 다음의 파일을 가지고 있습니다.

표 3. NetMeeting directory kit 파일들

netmeeting.perl 넷미팅 프로토콜의 에러를 고치는 펄 스크립트
netmeeting.schema LDAP 서버가 이용하는 일반적인 넷미팅 스키마
slapd.conf 마스터 LDAP서버의 예제 설정 파일
slapd2.conf 슬레이브 LDAP 서버의 예제 설정 파일
initialize 슬레이브 LDAP 데이타베이스를 초기화 하기 위해서 한번 사용되는 스크립트
slapd.rc /etc/rc.d/ script
nmaddentry 넷미팅 디렉터리에 엔트리드을 추가하는 펄 스크립트
nmdirectory 넷미팅 디렉터리리를 질의하는 Perl/Tk 스크립트

netmeeting.perl 파일을 /usr/local/libexec 디렉터리에 netmeeting.schema 파일은 /usr/local/etc/openldap/schema 디렉터리에 복사합니다. 그리고 slapd.conf와 slapd2.conf를 /usr/local/etc/openldap 디렉터리에 카피합니다. LDAP 데이타베이스를 저장하기 위해서 다음의 디렉터리를 만들고 모든 사람이 사용할 수 있도록 퍼미션을 열어줍니다. /usr/local/var/openldap-netmeeting

특별히 당신이 디렉터리를 변경하기를 원하신다면 slapd.conf and slapd2.conf 두개의 파일을 수정하고 설정을 변경하시기 바랍니다.

당신은 두개의 slapd를 실행할 필요가 있을 것입니다. 하나는 포트 389가 바인딩 된 이후로 root에의해서 반드시 시작되어야 합니다. 예방 조치를 위해서 -u 옵션으로 포트가 바인딩 된 이후로 권한이 없는 사용자가 chown명령어로 slapd를 변경하는 것을 막을 수 있습니다. 또 다른 slapd는 slapd2.conf를 사용하는데, 권한이 없는 사용자가 포트를 사용하는 것을 막고, 허용된 포트만이 database 디렉터리를 쓸 수 있게 합니다.

bash# /usr/local/libexec/slapd -f /usr/local/etc/openldap/slapd.conf -u nobody
bash$ /usr/local/libexec/slapd -h ldap://localhost:2345/ -f /usr/local/etc/openldap/slapd2.conf
      

당신은 하나의 구성요소를 slave database에 초기화해야 합니다. 이것은 키트 안에 포함된 initialize스크립트를 실행하는 것으로 한번 수행됩니다. "rootdn"과 "rootpw" 엔트리는 slave config 파일에서 초기화 스크립트를 엑세스 하도록 허용해 줍니다. 또한 -D 와 -w옵션도 스크립트 내에서 반드시 같아야 합니다. 당신이 한번 single parent entry로 데이터 베이스를 한번 초기화 했다면 그것이 중요하지 않더라도 "rootdn"과 "rootpw"를 slapd2.conf 에서 확인할 수 있습니다.

서버는 현재 구성되고 실행되어야 합니다. /etc/rc.d/에 있는 스타일 초기화 스크립트인(레드햇과 같은) slapd.rc는 slapd가 자동적으로 시작 혹은 중지 할 수 있도록 도와 줍니다.

3.6. Server Security

위와 같이, 서버 소프트웨어나 펄 스크립트에서 버그를 잡기 위해서 보안이 손상될 가능성을 최대한 줄이면서 양쪽 권한 없는 사용자의 slapd를 실행합니다. 물론 이 작업은 누구나 일고 쓸 수 있게 해서 권한이 없는 사용자도 slave server를 업데이트 할 수 있는 데이터베이스 디렉터리를 요구합니다. 이것은 넷미팅 클라이언트가 스스로 인증을 할 수 없기 때문에 나타난 보안 문제와는 다른 것입니다. 이와 같이 데이터베이스 디렉터리가 좀더 보호되어 있다고 해도, 로컬 혹은 리모트 호스트의 누구라도 데이터베이스의 entry들을 지우거나 혹은 수정할 수 있게 LDAP 클라이언트 프로그램을 사용할 수 있는 것입니다.

3.7. 윈도우즈 2000의 DNS 문제

윈도우 2000은 LDAP를 포함하는 로컬 네트워크의 발전된 의미의 DNS SRV (RFC 2782)를 수정할 수 있는 기능을 가집니다. 윈도우 2000컴퓨터로부터 LDAP서버로의 연결이 지연되는 것을 피하기 위해서는 SRV records가 DNS로부터 보호되어야 합니다. ISC Bind는 버전 8.2.2 이후로 SRV레코드를 지원합니다. Bind FAQ에서 기술되어 있는 것과 같이, "check-names ignore" 옵션에 DNS name으로 _(밑줄)을 쓸수 있도록 허용되어야 합니다. 마이크로 소프트에서 기술한 것에 의하면 기본적으로 당신의 넷미팅 서버이름이 "ils.freesoft.org"이라고 한다면, Microsoft Active Directory는 "_msdcs.ils.freesoft.org"이라는 서브 도메인 사용을 원합니다. 이 서브 도메인 안에서 "gloabal catalog"는 "gc._msdcs.ils.freesoft.org" 로 호출되어 지고, 이 "gloabal catalog"의 LDAP SRV record도 "_ldap._tcp.gc._msdcs.ils.freesoft.org"이름으로 호출됩니다. 이해 하셨습니까? 당신의 DNS database entry는 다음과 같이 보일 것입니다.

$ORIGIN _msdcs.ils.freesoft.org.

_ldap._tcp.gc     IN     SRV     1 1 389 ils.freesoft.org.
      

아직 나는 윈도우 2000 시스템을 가지고 있지 못하기 때문에 위의 사항을 테스트 해보지 못했습니다. 이에 대한 의견을 준다면 감사드리겠습니다.

3.8. 다른 LDAP service와 같이 사용하기

위의 인스트럭션은 당신의 LDAP서버가 오직 넷미팅 디렉터리 서비스로만 사용되고 있다는 것을 가정합니다. 당신이 하나의 서버로 넷미팅 디렉터리 서비스 뿐만 아니라 다른 LDAP서비스를 원한다면 어떨까요? 오직 하나의 서버만이 389포트로 바운드 될 수 있습니다. 그러나 OpenLDAP는 구성파일에서 LDAP namespace의 각각 서로 다른 부분을 지정할 수 있는 multiple database sections 허용합니다. 넷미팅은 오직 "objectClass=RTPerson" 서브트리만을 이용합니다. 그래서 당신이 이 subtree를 피해 갈 수 있다면, 다른 데이터베이스와 다른 subtree를 additional database section에 구성하여 추가 할 수 있습니다. 가장 큰 문제는 당신이 일반적인 표준 schema와 넷미팅 schema가 충돌하는 문제를 만날지도 모른다는 것입니다. 넷미팅 스키마가 표준 스키마보다 더 자유로워진 이래로 나는 표준 schema의 충돌 부분을 말해주기를 제안합니다. LDAP RFC와 OpenLDAP문서에서 LDAP를 서버 설정에 관한 더 많은 정보를 볼 수 있습니다.