본문 바로가기
다중 호스팅 시스템이란 여러 개의 IP 인터페이스를 갖춘 시스템을 말합니다. 이러한 인터페이스는 동일한 서브넷에 있을 수도 있고 서로 다른 서브넷에 있을 수도 있습니다. 오늘은 FTP와 NDMP 같은 프로토콜을 살펴보려 합니다. 두 프로토콜 모두 서버가 클라이언트의 연결 요청을 수락한 후, 클라이언트에게 새로운 연결을 다시 설정합니다. 다중 호스팅 시스템에서는 바로 이 새로운 연결이 모든 문제를 일으킵니다.
두 프로토콜 모두에서 소스 IP 주소는 클라이언트가 처음 연결했던 IP 주소를 기반으로 하지 않습니다. 대신, 클라이언트로 다시 연결하는 데 사용되는 게이트웨이와 연결된 인터페이스를 기반으로 합니다.
예를 들어, 다음과 같은 인터페이스와 라우팅 테이블이 주어졌을 때
ifconfig -all

Number of interface(s) under IP: 5

%phx_vos#loop.m16: <UP, LOOPBACK, RUNNING>
127.0.0.1 netmask 0xff000000

%phx_vos#enetA: <UP, BROADCAST, RUNNING, NOFORWARDBROADCAST, KEEPALIVE>
172.16.1.50 netmask 0xffffff00 broadcast 172.16.1.255

%phx_vos#enetZ: <UP, BROADCAST, RUNNING, NOFORWARDBROADCAST, KEEPALIVE>
192.168.77.50 netmask 0xffffff00 broadcast 164.152.77.255

ready 15:33:51


route print

Default Gateway: 192.168.77.1
ready 15:33:57
IP 주소가 10.1.1.1인 클라이언트가 172.16.1.50에 연결합니다. 이 연결을 “A”라고 부르겠습니다. 10.1.1.1로 패킷을 전송하려면 모듈은 192.168.77.0/24 네트워크에 있는 기본 게이트웨이를 사용해야 하므로, 192.168.77.50 인터페이스를 사용합니다. 모듈은 연결 “A”의 10.1.1.1로 향하는 모든 트래픽에 이 인터페이스를 사용하지만, TCP 헤더의 IP 주소는 172.16.1.50이 됩니다. 이는 연결 “A”에서 클라이언트가 연결된 IP 주소이기 때문입니다. 그러나 모듈이 10.1.1.1에 대한 새로운 연결인 연결 “B”를 생성할 때, STCP는 기본적으로 192.168.77.50을 소스 IP 주소로 선택합니다. 이는 게이트웨이가 연결된 인터페이스이기 때문입니다. 애플리케이션이 이를 재정의할 수는 있지만, FTP나 NDMP는 그렇게 하지 않습니다.
가장 중요한 고려 사항은 라우터의 방화벽 및 액세스 목록(ACL) 구성입니다. 클라이언트 방화벽이나 라우터 ACL이 172.16.1.50에서 오는 연결만 허용하도록 설정되어 있다면, 192.168.1.50에서 오는 연결은 실패하게 됩니다. 해결책은 172.16.1.0/24 서브넷에 있는 라우터를 사용하여 10.1.1.1로 가는 경로를 생성하거나(물론 선택한 라우터가 10.1.1.1에 도달할 수 있어야 함), 방화벽 및 라우터 액세스 목록을 재구성하여 192.168.1.50의 연결을 허용하도록 하는 것입니다.
다음 스크립트를 사용하여 테스트해 볼 수 있습니다
stcp_calls
socket
connect -name 10.1.1.1 -port N
socket
bind -name 172.16.1.50 -port 0
connect -name 10.1.1.1 -port N
물론 10.1.1.1은 클라이언트의 실제 IP 주소로, 172.16.1.50은 클라이언트가 연결할 대상의 IP 주소로 각각 변경해야 합니다. 포트 N은 클라이언트 측에서 열려 있고, 방화벽 및 라우터 ACL에 의해 허용되는 포트여야 합니다.
첫 번째 연결 시에는 기본 IP 주소가 사용되며, 두 번째 연결 시에는 172.16.1.50이 사용됩니다. 첫 번째 연결이 시간 초과되거나(약 1분 정도 소요됨) ‘연결 거부’ 오류와 함께 즉시 종료되지만, 두 번째 연결은 정상적으로 이루어진다면(화면에 “stcp:” 프롬프트만 표시됨), 이는 방화벽이나 라우터 ACL에 문제가 있어 이를 해결해야 함을 의미합니다.

© 2024 Stratus Technologies.