PC가 인터넷 공유기나 사설망(Private Network)과 같은 NAT 시스템 내부에 있을 때 Xmanager를 사용하고 싶습니다.

PC가 방화벽(Firewall)이나 NAT 시스템 내부에 있고 UNIX/Linux가 그 외부에 있다면 X응용프로그램은 Xmanager가 구동 중인 PC에 접속할 수 없습니다. 


  • Xmanager와 Unix/Linux가 동일 네트워크에 있는 경우 => 접속 성공



  • Xmanager가 NAT로 구성된 사설망 안에 있는 경우 =>접속 실패


위와 같이 Xmanager가 방화벽이나 사설망 안에 놓인 경우 다음 두 가지 해결책을 생각해볼 수 있습니다.
  • Xstart 접속 시 SSH 프로토콜 사용
  • NAT 서버(공유기, IP Masquerading 서버 등)의 포트포워딩 설정


Xstart 접속 시 SSH 프로토콜 사용

SSH 연결을 이용하는 경우에는 포트포워딩 설정 등의 복잡한 과정이 필요없습니다.

SSH 연결은 PC와 Linux/Unix 사이에 암호화 터널을 생성하고 이 터널을 통해서 모든 X응용프로그램들이 실행됩니다. 접속하고자 하는 UNIX/Linux 장비에 SSH 서버가 설치되어 있다면 SSH 프로토콜을 사용하는 이 방법을 권장합니다.

Secure XDMCP는 원격 호스트에 접속하는 새로운 방법입니다. PC가 사설망(NAT, 공유기 환경)이나 방화벽 안에 있고, 접속하고자 하는 유닉스/리눅스가 그 외부에 있는 경우, 해당 유닉스/리눅스 장비에 SSH 서버가 구동 중이면 Secure XDMCP 접속으로 XDMCP 환경을 이용할 수 있습니다.

Tutorial Link

Xstart에서 SSH 접속하기

SSH 프로토콜을 사용하려면 SSH 서버가 X11 포워딩을 지원해야 하며 서버별 설정은 다음과 같습니다.

OpenSSH 서버인 경우 설정 파일 (/etc/ssh/sshd_config)을 다음과 같이 수정합니다.

X11Forwarding yes 

Secure Shell Communications Security 서버인 경우 설정 파일 (/etc/ssh2/sshd2_config)을 다음과 같이 수정합니다. 

AllowX11Forwarding yes

위와 같이 설정한 후 Xstart를 이용하여 X 프로그램을 실행하십시오.

  1. Xmanager 폴더(그룹)에 있는 Xstart를 실행
  2. [프로토콜]을 SSH로 선택
  3. [실행명령] 입력란에 다음의 예와 같이 xterm 등을 실행할 수 있는 명령을 입력
    usr/bin/X11/xterm -ls
    *SSH 프로토콜을 사용하는 경우에는 SSH 서버가 적절한 DISPLAY 값을 부여하므로 -display 옵션이 필요 없습니다.


  4. [실행] 버튼을 누릅니다. Xstart는 Xmanager를 자동으로 실행한 후 명령을 실행합니다.
  5. KDE, Gnome 또는 CDE 세션을 얻기 위해서 각각 다음을 실행시키십시오. 실행 경로는 시스템마다 다를 수 있습니다. 자세한 경로는 아래 FAQ를 참고하십시오.

NAT 서버의 포트포워딩 설정

포트포워딩은 NAT 서버의 TCP 6000번 포트로 들어오는 접속을 PC의 TCP 6000번 포트로 전환하는 형식으로 이루어집니다. NAT 시스템 안의 Xmanager 사용자가 여러 명일 때에는 이런 포트포워딩을 각 사용자마다 설정해야 합니다.


(NAT, 6001)    ->    (PC1, 6000)
(NAT, 6002)    ->    (PC2, 6000)
. . .
(NAT, 6009)    ->    (PC9, 6000)

        ▼                          ▼

연결 주소 부분    Xmanager 디스플레이 부분

※위의 전달될 PC들의 포트는 6000~6255 사이 임의의 값으로 설정할 수 있으나 Xmanager에서는 반드시 이 값을 사용해야 합니다.


XDMCP 접속을 하기 위해서는 연결 주소를 지정해야 합니다.(PC1의 예)

  1. Xbrowser에서 XDMCP 세션을 생성합니다.

  2. 위에서 생성한 세션의 등록정보의 연결 주소에서 '사용자 정의'로 선택합니다.

  3. [IP 주소] 부분에 NAT 서버의 IP 주소를 입력합니다.

  4. [포트 번호]에는 위 NAT 서버에서 정한 PC1에 해당하는 6001번을 입력합니다.

  5. [X 서버] 탭의 [디스플레이 번호]에서 '디스플레이 번호를 자동으로 할당합니다.'를 해제하고 반드시 NAT 서버에서 정한 포트번호(PC1의 경우 6000)에서 6000을 뺀 값(0)을 입력합니다.(디스플레이 번호 0은 TCP 포트 6000번을, 1은 6001번을 의미합니다)


Xstart를 이용한 접속을 위해서는 각 사용자는 "-display" 옵션을 다음과 같이 합니다.

  • PC1:/usr/bin/X11/xterm -ls -display$NATsystem:1

  • PC2:/usr/bin/X11/xterm -ls -display$NATsystem:2

  • . . .

  • PC9:/usr/bin/X11/xterm -ls -display$NATsystem:9

IP Masquerading을 하는 시스템 내부에 있을 경우의 실제 예 (kernel 2.2)

Masquerading server의 TCP 6001번 포트를 PC의 TCP 6000번 포트로 포워딩합니다.
  # ipmasqadm portfw -a -P tcp -L FIREWALL_ADDRESS 6001 -R PC_ADDRESS 6000
Xstart 프로그램에서 실행명령란에 다음과 같이 입력하고 실행합니다.
  /usr/bin/X11/xterm -ls -display FIREWALL_ADDRESS:1.0
FIREWALL_ADDRESS에는 Masquerading server의 IP 주소, PC_ADDRESS에는 PC의 IP 주소를 입력합니다. ipmasqadm 툴이 없으면 다음 사이트에서 받으세요.
http://www.e-infomax.com/ipmasq/juanjox/