XDMCP 접속 과정과 오류 유형
XDMCP(X Display Manager Control Protocol)는 XDMCP 쿼리만으로 유닉스/리눅스에 접속 후 해당 장비의 X 응용프로그램을 사용할 수 있도록 합니다.
원격 유닉스/리눅스와 네트워크상의 문제가 없고, 해당 장비에 XDMCP 설정이 제대로 이루어져 있다면,
먼저 UDP 177번(서버 설정으로 변경 가능)으로 XDMCP 패킷 교환이 이루어집니다. 마지막으로 Xmanager가 ‘MANAGE’ 메시지를 보내면 XDMCP 데몬은 최초의 X 응용프로그램인 Xgreeter라는 로그인 프로그램을 실행하여 Xmanager에게 로그인 화면을 그리도록 요청합니다.
사용자가 정당한 로그인 정보를 제시한 후에는 윈도우 매니저 등 정해진 일련의 X 응용프로그램들이 Xmanager에 그려지게 됩니다.
XDMCP 접속이 실패하는 유형
사례 1: 원격 유닉스/리눅스 쪽의 방화벽이나 NAT 환경 등으로 UDP 177번을 통한 통신이 안되는 경우
해결책:
방화벽 장비에서 UDP 177번을 허용합니다.
유닉스/리눅스 장비의 방화벽 프로그램에서 UDP 177번을 허용/등록 합니다.
사례 2: 원격 유닉스/리눅스 장비에 XDMCP 데몬이 없거나 설정이 미비한 경우
해결책:
원격 장비에 XDMCP 데몬이 구동되고 있지 않은 경우: XDMCP 데몬 프로세스는 xdm, kdm, gdm, gdmm-binary, lightdm, dtlogin 등이 있습니다. ps 명령으로 위와 같은 프로세스가 구동되고 있는지 확인합니다.
설정이 미비한 경우에는 다음 문서를 참고하여 유닉스/리눅스 종류와 버전에 맞는 설정을 하여야 합니다.
UNIX/Linux OS별 설정데몬이 구동되고 설정이 제대로 이루어졌는지 다음 명령으로 확인할 수 있습니다.
$ netstat -an |grep 177 udp 0 0 0.0.0.0:177 0.0.0.0:* udp6 0 0 :::177 :::*
사례 3: Xmanager가 설치된 PC 쪽의 방화벽이나 NAT 환경 등으로 TCP 통신이 이루어지지 않는 경우
성공적인 UDP 통신이 이루어진 후 X 응용프로그램들은 유닉스/리눅스에서 PC 쪽으로 TCP 6000번을 통한 통신을 하게 됩니다. 이 TCP 통신에 장애가 생기는 경우입니다.
Xmanager 로그 상에는 XDMCP MANAGE 메시지 후 Can’t open display 메시지가 나타납니다.
Xdmcp: received a WILLING message.
Xdmcp Request Address: 192.168.x.x
Xdmcp Connection Address 0: 192.168.x.xx
Xdmcp: sent a REQUEST message.
Xdmcp: received an ACCEPT message.
Xdmcp: sent a MANAGE message.
...
Xdmcp: received a FAILED message.
XDMCP fatal error: Session failed Session 26 failed for display pc_ip_address:0.0: Cannot open display
해결책:
회사 시스템 담당자에게 연락하여 방화벽 장비에서 해당 PC로 TCP 6000~6010번을 허용하도록 요청합니다. Xmanager 프로세스는 XDMCP 세션마다 구동되고 대기 포트는 6000번부터 순차적으로 증가하게 됩니다. 사용하는 세션이 많을 경우 충분한 포트를 확보해야 합니다.
방화벽에는 윈도우 자체의 방화벽도 포함됩니다.
Windows 방화벽에 Xmanager 예외 등록PC가 라우터 내에서 사설 IP 주소를 가지고 있는 경우 TCP 패킷은 Xmanager까지 도달하지 못합니다. 이 경우 라우터에서 포트 포워딩 설정을 해야 합니다.
PC가 인터넷 공유기나 사설망(Private Network)과 같은 NAT 시스템 내부에 있을 때 Xmanager를 사용하고 싶습니다.
이 모든 경우 Xmanager의 SecureXDMCP 기능을 이용하면 이 사례의 오류를 해결할 수 있습니다.
Secure XDMCP 접속
사례 4: X Display가 Xmanager가 아닌 다른 장소를 나타내는 경우
XDMCP 접속을 할 경우 자동으로 X Display는 Xmanager가 있는 PC와 Xmanager가 대기하고 있는 포트로 설정됩니다. 하지만 사용자의 불필요한 설정이나 원격 서버의 DNS 설정 오류 등으로 그 장소가 다른 곳이 되는 경우입니다.
Xmanager 로그 상에는 XDMCP MANAGE 메시지 후 Can’t open display 메시지가 나타납니다.
Xdmcp: received a WILLING message.
Xdmcp Request Address: 192.168.x.x
Xdmcp Connection Address 0: 192.168.x.xx
Xdmcp: sent a REQUEST message.
Xdmcp: received an ACCEPT message.
Xdmcp: sent a MANAGE message.
...
Xdmcp: received a FAILED message.
XDMCP fatal error: Session failed Session 26 failed for display :0.0: Cannot open display
해결책:
사용자의 시작 스크립트 등에 DISPLAY 관련 설정이 있는지 확인하고 있다면 해당 부분을 제거해야 합니다
사용자 시작 스크립트는 셸에 따라 달라집니다. /etc/profile, /etc/bashrc $HOME/.profile, $HOME/.cshrc, $HOME/.login, $HOME/.bash_profile, $HOME/.bashrc, $HOME/.kshrc, $HOME/.zshrc 등이 있습니다.DNS 설정의 오류로 발생하는 경우: 일부 레거시 유닉스의 경우 PC의 IP 주소로 호스트 이름을 찾고 이 호스트 이름을 X Display에 사용하는 과정을 거치는 경우가 있습니다. 이 때 찾아진 호스트 이름에 해당하는 IP 주소가 PC IP 주소와 다른 경우 이 문제가 발생할 수 있습니다.
DNS lookup 테이블에서 오류를 정정해야 하나 쉽지 않은 과정입니다. 간단한 방법으로 /etc/hosts 파일에 PC의 IP 주소를 등록함으로써 문제를 해결할 수 있습니다.
(PC 이름은 실제 윈도우 PC 이름과 같지 않아도 됩니다.)