11Reverse ProxyReverse Proxy
대부분의 Mobile Access 접근은 포털을 거치지만, 포털 없이 곧장 내부 웹 서버를 외부에 노출 하고 싶을 때가 있습니다. 이때 게이트웨이를 Reverse Proxy 로 동작시킵니다. 이 장은 Reverse Proxy가 무엇을 하는지, CLI로 어떻게 구성·문제 해결하는지, 그리고 어떤 한계가 있는지 를 정리합니다.
Reverse Proxy가 하는 일
Reverse Proxy 는 외부 사용자가 게이트웨이 IP로 풀리는 URL에 접속하면, 게이트웨이가 Reverse Proxy 규칙에 따라 그 요청을 내부 서버로 대신 전달 하는 방식입니다. 덕분에 외부 클라이언트가 내부 서버 자원에 닿으면서도, 서버의 실제 내부 주소는 감춰 집니다. 규칙으로는 내부 서버의 외부 주소를 실제 네트워크 주소로 매핑하고, 외부 클라이언트가 어떤 자원에 접근할지 허용하며, 사용자–자원 사이 연결을 HTTP로 할지 HTTPS로 할지 를 정합니다. 기본적으로 Reverse Proxy는 비활성이며, CLI에서 켜고 구성합니다.
CLI로 구성하기
Reverse Proxy는 GUI 없이 ReverseProxyCLI 명령으로만 다룹니다. 이 명령으로 Reverse Proxy를 켜고/끄고(on/off), 규칙·애플리케이션을 보고(show), 규칙·애플리케이션을 추가하고(add, 대화형), 규칙을 수정·삭제(edit/remove) 합니다. add application은 지원되는 내부 응용(Outlook Anywhere·Capsule Docs)에 대한 규칙 묶음 을 한 번에 더해 줍니다.
ReverseProxyCLI {on | off | show {rules | applications} |
add {rule <rule_name> | application <app_name> {capsule_docs |
outlook_anywhere} <ext_hostname> <int_hostname>} |
edit rule <rule_name> | remove rule <rule_name> | apply config}몇 가지 주의할 점이 있습니다. Reverse Proxy로 허용되는 외부 포트는 80과 443뿐 이고(내부 포트는 모두 허용), 게이트웨이의 Gaia Portal이 https://<IP>/처럼 끝에 /만 있는 URL이면 Reverse Proxy와 충돌 하므로 Gaia Portal URL을 /gaia로 바꾸거나 포트를 4434로 옮겨야 합니다(안 그러면 Gaia Portal이 접근 불가). 자세한 예시와 고급 CLI·XML 구성은 sk110348에 있습니다.
문제 해결
Reverse Proxy는 SmartLog 같은 표준 모니터링 도구로 진단합니다. 로그를 남기려면 SmartDashboard > Mobile Access 탭 > Additional Settings > Logging에서 웹 응용 접근 로깅을 켜 고, 로그는 SmartLog의 Mobile Access 로그에서 Category=Mobile Access, Application=Reverse Proxy로 식별합니다(목적지는 로그에 표시되지 않음).
로그의 Access 항목은 세 가지로 나뉩니다 — Allowed(허용된 URL), Denied(차단된 URL — 오인이면 ReverseProxyCLI show rules로 규칙의 Paths를 확인해 막힌 경로를 추가), Failed(내부 서버로 전달 실패) 입니다. Failed에는 Internal Server Error, Proxy not found, Can't resolve host name(해당 호스트를 nslookup으로 게이트웨이가 풀 수 있는지 확인), SSL handshake failed, Server response was too slow 같은 구체적 원인이 함께 나옵니다.
더 깊은 디버깅이 필요하면 httpd_common.conf의 ReverseProxyHandlerTraceLog를 On으로, HTTPS/HTTP는 각각 httpd_ssl.conf·httpd_clear.conf의 LogLevel을 debug로 바꿔 trace 로그를 봅니다. cvpnd_admin debug set TDERROR_ALL_ALL=5로 cvpnd 로그를, ps -ef | grep httpd로 Reverse Proxy 프로세스(SSL·Clear) 동작 여부를 확인합니다.
알려진 한계
Reverse Proxy에는 분명한 제약이 있습니다. GUI(SmartDashboard)가 없고, 사용자 단위 접근 제어가 없으며, 네트워크·인터페이스 단위 세분화도, 반환 사이트의 링크 번역도 없 습니다. Mobile Access 정책에 Host Translation을 쓰는 응용이 있다면 그 호스트명은 Reverse Proxy 통신의 호스트명과 달라야 하고, Reverse Proxy는 SSL 종료에 인증서를 하나만 쓰므로, 여러 웹 서버를 HTTPS로 받으려면 와일드카드 인증서나 SAN 인증서 가 필요합니다. Lync(Skype for Business)는 지원되지 않습니다. 클러스터에서는 규칙이 멤버 간 자동 동기화되지 않 으므로, 한 멤버에 모든 규칙을 넣은 뒤 ReverseProxyConf.xml을 다른 멤버로 복사하고 각 멤버에서 apply config를 실행해 맞춰 줍니다.