Xmanager FAQ

네트워크 구성 및 방화벽 Show all answers Hide all answers

Xmanager 사용 시 방화벽의 포트는 어떻게 설정해 주면 되나요?

Xmanager는 PC에서 구동되는 X서버로서 기본적으로는 UDP 177번과 TCP 6000~의 포트가 필요합니다. 다만 Xmanager를 이용할 때 명령어를 내리기 위한 터미널 획득 용도나 기타 부수적인 기능을 이용하기 위해 추가적으로 필요한 포트가 있습니다.
  • PC에서 UNIX/Linux 방향으로 (Outbound/outgoing)
    - XDMCP 연결 사용 시: UDP 177
    - Xstart 사용시: TCP 22(SSH), 23(Telnet), 512(REXEC), 513(RLOGIN), 514(RSH)
       (명령어 입력을 위한 터미널 사용 용도이므로 이 중 원격의 UNIX/Linux에서 허용한 하나 이상의 프로토콜이면 됩니다.)
    - 폰트서버 구동시: TCP 7000, 7100, 7500 (사용 포트만)

  • UNIX/Linux에서 PC 방향으로 (Inbound/incoming)
    - TCP 6000 ~ 6010
    - TCP 16001 (GNOME 사용 시만)

Unix/Linux가 인터넷 공유기나 사설망(Private Network)과 같은 NAT 시스템 내에 있을 때 Xmanager로 접속하고 싶습니다.

Unix/Linux가 방화벽(Firewall)이나 NAT 시스템 내부에 있고 PC가 그 외부에 있다면 Xmanager는 그 Unix/Linux에 직접 접속할 수 없습니다.

이러한 경우 다음 두 가지 방법으로 접속할 수 있습니다.
Xbrowser를 이용한 XDMCP 접속
Step 1: XDMCP를 사용하기 위한 UDP 177번 포트를 포워딩해야 합니다.

포트 포워딩은 NAT 서버의 포워딩을 위해 설정된 UDP 포트로의 접속을 Unix/Linux(목적지 장비)의 UDP 177번 포트로 전환하는 형식으로 이루어집니다.

(NAT, UDP 177) -> (Unix/Linux1, UDP 177)
(NAT, UDP 178) -> (Unix/Linux2, UDP 177)
(NAT, UDP 179) -> (Unix/Linux3, UDP 177)
. . .


Step 2: XDMCP 접속을 하기 위해서는 연결할 호스트 주소를 NAT 서버의 주소로 지정해야 합니다.
  1. Xbrowser에서 XDMCP 세션(고정 세션)을 생성합니다.
  2. 위에서 생성한 세션의 등록정보를 열어 [XDMCP] 부분의 [호스트]에 NAT 서버의 IP 주소를 입력합니다.
  3. [포트 번호]에는 목적지 장비에 각각 지정된 NAT 서버의 포트 번호(위 예의 177, 178 또는 179 등)을 입력합니다.
  4. [확인]을 눌러 저장한 후 세션을 실행합니다.
Xstart 접속을 이용한 X 응용 프로그램 실행
Xstart의 Telnet 또는 SSH 접속 기능을 이용하여 2단계 로그인을 한 후 X 응용 프로그램을 사용하는 방법입니다. Unix/Linux까지의 접속 과정은 다음과 같이 이루어집니다.

PC --(SSH/Telnet)--> NAT 서버 --(SSH/Telnet or 포트 포워딩)--> Unix/Linux
--(디스플레이 요청)--> Xmanager


Case 1: NAT 서버가 Telnet/SSH 클라이언트 등 원격 접속 툴이 있는 Unix/Linux인 경우
  1. Xstart에서 [호스트]에 NAT 서버의 IP 주소를 입력합니다.
  2. NAT 서버에 접속할 수 있는 프로토콜과 사용자 정보를 입력합니다.
  3. 실행 명령에 XTERM_PATH/xterm -ls -display $DISPLAY를 입력한 후 세션을 실행합니다.
  4. 실행된 xterm 창에서 최종 목적지 Unix/Linux로 로그인합니다.
  5. 다음 명령으로 DISPLAY 환경변수를 설정합니다.
    $export DISPLAY=PC_IP_ADDR:DISP_NO
    위 디스플레이 번호 DISP_NO는 구동 중인 Xmanager의 디스플레이 번호를 입력합니다.
  6. 사용하고자 하는 GUI 응용프로그램을 구동합니다.
    Ex)   $xclock&
    * Xstart의 명령어 태그를 사용하면 위의 과정을 하나로 줄일 수 있습니다
    Ex) SSH 프로토콜의 경우 Xstart 실행 명령란에 다음과 같은 형식으로 입력합니다.
    ssh 사용자명@최종 목적지 장비 IP 주소<%CR%><%WAIT="assword"%><%SEND="패스워드"%><%CR%><%SEND="/usr/bin/X11/xclock -display $DISPLAY"%><%CR%>
    자세한 설명은 Xmanager 도움말 ‘명령어 태그’를 참조하십시오.
Case 2: NAT 서버가 원격 접속 툴이 없거나 Unix/Linux가 아닌 기타 장비일 경우
  1. NAT 서버에서 목적지 장비의 Telnet/SSH 포트(기본값은 각각 23번, 22번 포트)를 최종 목적지 Unix/Linux의 Telnet/SSH 포트로 포트 포워딩 합니다.

    Ex) NAT 서버:23 --> 목적지 장비1:23
        NAT 서버:24 --> 목적지 장비2:23
        . . .

  2. Xstart에서 [호스트]에 NAT 서버의 IP 주소를 입력합니다.
  3. [프로토콜]은 1번 과정에서 포트 포워딩한 프로토콜을 선택한 후 NAT 서버가 포트 포워딩을 하기 위해 준비 중인 포트번호(목적지 장비에 따라 위 예의 23 혹은 24)를 입력합니다.
  4. 최종 목적지 Unix/Linux의 사용자 계정과 비밀번호를 [사용자]와 [비밀번호]에 입력합니다.
  5. 실행 명령에 XTERM_PATH/xterm -ls -display $DISPLAY를 입력한 후 세션을 실행합니다.
위와 같은 방법으로 Unix/Linux의 xterm을 실행한 후 다른 여러 X 응용 프로그램을 실행할 수 있습니다. Xstart를 이용한 접속으로 CDE나 GNOME/KDE 환경을 얻으시려면 다음의 FAQ를 참고하십시오.


PC 또한 공유기나 사설망으로 구성된 환경에 놓여 있다면 PC 쪽에서도 다음 FAQ의 내용대로 필요한 조치를 취해야 합니다.

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

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

이러한 경우 다음 두 가지 해결책을 생각해볼 수 있습니다.

Xstart 접속 시 SSH 프로토콜 사용
SSH 연결을 이용하는 경우에는 포트포워딩 설정 등의 복잡한 과정이 필요없습니다. SSH 연결은 PC와 Linux/Unix 사이에 암호화 터널을 생성하고 이 터널을 통해서 모든 X응용프로그램들이 실행됩니다. 접속하고자 하는 UNIX/Linux 장비에 SSH 서버가 설치되어 있다면 SSH 프로토콜을 사용하는 이 방법을 권장합니다.

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



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)

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

XDMCP 접속을 하기 위해서는 프록시를 지정해야 합니다.(PC1의 예)
  1. Xbrowser에서 XDMCP 세션을 생성합니다.
  2. 위에서 생성한 세션의 등록정보의 [프록시] 부분에서 '다음 연결 주소를 사용합니다.'를 체크합니다.
  3. [호스트] 부분에 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/

일정 시간동안 사용하지 않으면 연결이 끊어집니다.

Xmanager로 유닉스나 리눅스 서버에 접속한 후 아무 것도 하지 않으면 몇 시간이 지나서 연결이 끊어지는 증상이 있을 수 있습니다. 이는 PC와 유닉스, 리눅스 서버 사이의 공유기나 방화벽 등에서 일정 시간 동안 패킷 전송이 없을 경우 연결을 끊는 타임아웃 옵션을 사용하고 있는지 확인해보아야 합니다.

Windows XP를 사용하고 있는데 Xmanager 접속이 되지 않습니다.

Windows XP에는 자체 방화벽이 있으며, 문제없이 Xmanager를 사용하다가도 서비스팩 설치 후에 방화벽이 동작하여 접속이 되지 않는 경우가 있습니다.

Windows XP 서비스팩 1이 설치된 경우 아래와 같은 순서로 방화벽 설정을 살펴보시기 바랍니다.
  1. 제어판을 열고 네트워크 연결을 선택합니다.
  2. 사용하고 있는 인터넷 연결을 오른쪽 클릭한 후 속성을 선택합니다.
  3. 속성 다이얼로그 박스에서 고급탭을 선택합니다.
  4. 고급 설정 다이얼로그 박스에서 Firewall 사용을 해제하십시오. Firewall을 사용해야 하는 상황이라면 Xmanager 사용을 위한 TCP 포트 6000 ~ 6010번과 16001번을 개방을 위한 설정을 하셔야 합니다.
Windows XP 서비스팩 2가 설치된 경우

제어판의 방화벽에서 예외 항목에 Xmanager.exe 를 추가하십시오. Xmanager는 '윈도우용 PC X 서버 프로그램'이라는 이름으로 XP 방화벽에 등록됩니다.

*UNIX/Linux의 Gnome 환경을 사용하는 경우라면 TCP 포트 16001번 개방하셔야 합니다.

또한, TCP/IP 필터링 설정도 살펴보시기 바랍니다.
  1. 제어판을 열고 네트워크 연결을 선택합니다.
  2. 사용하고 있는 인터넷 연결을 오른쪽 클릭한 후 속성을 선택합니다.
  3. 속성 다이얼로그 박스에서 일반탭을 선택합니다.
  4. 인터넷 프로토콜(TCP/IP)를 선택합니다.
  5. 일반탭에서 고급을 선택합니다.
  6. 고급 TCP/IP 설정 다이얼로그 박스에서 옵션탭을 선택합니다.
  7. TCP/IP 필터링을 선택합니다.
  8. TCP/IP 필터링 사용을 해제하거나 Xmanager 사용을 위한 TCP 포트 6000~6010번 개방을 위한 설정을 하여야 합니다.

Linux에서 방화벽 설정으로 인해 Xmanager가 동작하지 않습니다.

최근의 Linux 배포판은 설치 후의 기본값으로 방화벽을 구동합니다. 이 경우 Xmanager가 사용하는 포트를 개방하여야 합니다. Linux는 배포판마다 버전마다 사용하는 방화벽이 다르므로 구체적인 내용은 해당 배포판의 해당 버전의 사용자 설명서를 참고하거나 기술지원 서비스를 받아 보셔야 할 필요도 있습니다. 다음은 Linux 배포판에서 일반적으로 사용하는 ipchains와 iptables에 대한 설명입니다.

ipchains를 사용하여 설정

/etc/sysconfig/ipchains 파일의 앞부분에 다음 문장을 추가하십시오.

(*회색으로 표시된 부분은 설명을 위한 것으로 실제 파일에는 추가하지 않으셔도 됩니다.)

# If you want to use GNOME/KDE, add the following line.
-A input -p udp -s 0/0 -d 0/0 177 -j ACCEPT
# If you have set font server on Xconfig, add the following line.
-A input -p tcp -s 0/0 -d 0/0 7100 -j ACCEPT
# If you are to connect via xstart, add the following line(s).
-A input -p tcp -s 0/0 -d 0/0 telnet -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 ssh -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 login -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 exec -j ACCEPT
-A input -p tcp -s 0/0 -d 0/0 shell -j ACCEPT

다음 명령으로 ipchains 규칙을 다시 적용합니다.
#/etc/init.d/ipchains restart

ipchains -L 명령으로 적용된 규칙을 확인합니다.
#ipchains -L

iptables 을 사용하여 설정

/etc/sysconfig/iptables 파일의 앞부분에 다음 문장을 추가하십시오.

<단,INPUT 이나 ACCEPT는 꼭 대문자로 합니다.>
(*회색으로 표시된 부분은 설명을 위한 것으로 실제 파일에는 추가하지 않으셔도 됩니다.)

# If you want to use GNOME/KDE, add the following line.
-A INPUT -p udp --dport 177 -j ACCEPT
# If you have set font server on Xconfig, add the following line.
-A INPUT -p tcp --dport 7100 -j ACCEPT
# If you are to connect via xstart, add the following line(s).
-A INPUT -p tcp --dport telnet -j ACCEPT
-A INPUT -p tcp --dport ssh -j ACCEPT
-A INPUT -p tcp --dport login -j ACCEPT
-A INPUT -p tcp --dport exec -j ACCEPT
-A INPUT -p tcp --dport shell -j ACCEPT

다음 명령으로 iptables 규칙을 다시 적용합니다.
#/etc/init.d/iptables restart

iptables -L 명령으로 적용된 규칙을 확인합니다.
#iptables -L

redhat 8, 9에서 lokkit 을 사용하여 설정

redhat 8, 9에서는 lokkit 프로그램을 이용하여 방화벽 설정을 할 수 있습니다.

lokkit 을 실행하면 /etc/sysconfig/iptables 파일이 생성됩니다.
그 파일의 앞부분에 다음 행들을 추가하십시오.

-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 177 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 23 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 512 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 513 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 514 --syn -j ACCEPT

설정을 마친 후에 다음 명령을 실행해서 방화벽을 재시작합니다.

# /etc/init.d/iptables restart