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 데몬이 없거나 설정이 미비한 경우

해결책:

사례 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

 

해결책:

이 모든 경우 Xmanager의 SecureXDMCP 기능을 이용하면 이 사례의 오류를 해결할 수 있습니다.

 

사례 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 이름과 같지 않아도 됩니다.)