먼먼 옛날, Windows NT 운영체제에서는 MS Proxy Server 2.0라는 제품이 있었으며 Windows 2000 Server 제품군에 들어서면서 ISA Server 2000이 함께 했습니다.
ISA 2000에는 방화벽(Firewall) 기능과 웹 캐싱(Web Caching) 기능을 각기 사용하거나 동시에 사용할 수 있었습니다. 하지만, ISA 2004로 넘어오면서 대부분 웹 캐싱 기능에 대해 무관심해져 갔으며 이러한 분위기는 ISA 2006에서도 그대로 반영되는 듯합니다.
아래 자료는 ISASERVER.ORG에서 꾸준히 게재되는 글 중에서 ISA의 웹 캐싱 기능에 대해 자세한 언급이 되어 있어 번역 정리하여 올립니다.
ISA를 도입하는 입장에서는(특히 우리나라를 제외한 외국에서) 방화벽 기능을 주로 검토하게 된다. 하지만, ISA에는 웹 캐싱이라는 훌륭한 기능이 조용히 숨겨져 있다. 웹 캐싱이란 내부 클라이언트들이 웹 브라우저를 통해 인터넷을 사용할 때 자주 방문하는 사이트의 개체들을 미리 또는 한 번 읽은 다음 캐시에 저장하여 다음에 다시 읽어 들일 때에는 사이트에서 요청하는 것이 아니라 캐시에 있는 객체를 반환하기 때문에 속도 향상이 이루어지게 된다. 사용자에 비해 인터넷 전용선의속도가 느린 경우에는 사용자의 불만을 잠재울 수 있는 기능 중의 하나이다. 또한, 자주 그런 경우는 아니지만 해당 웹 사이트가 잠시 사용할 수 없는 상태이더라도 사용자들이 이를 일시적으로 이용할 수 있는 장점도 있다.
- 웹 캐시 설정
가장 먼저 해야 할 일은 웹 캐싱 기능을 켜는 것이다. ISA 방화벽 콘솔을 열고 Configuration 노드를 확장한다. 오른쪽에서 Tasks 탭을 클릭하고 Cache 노드를 클릭한다. 마지막으로 Define Cache Drives(Enable Caching)을 클릭한다.
아래와 같이 Define Cache Drives 대화상자가 나타난다. 캐시로 저장되는 부분은 대부분 하드 디스크 즉 드라이브가 된다. 따라서 적절한 드라이브를 선택하고 용량도 결정한다. 중요한 사실은 하나의 드라이브에서 캐시의 최대 크기는 64GB이고 NTFS 형식이어야 한다는 점이다. 설정한 이후에는 확인 버튼을 눌러 대화상자를 닫는다.
Cache 노드를 마우스 오른쪽 버튼을 클릭하고 등록정보(Properties)를 클릭한다.
General 탭에서는 앞서 지정한 캐시의 크기를 보여 준다.
Advanced 탭에서는 다음과 같은 다양한 옵션이 제공된다.
Cache objects that have an unspecified last modification time 옵션은 ISA 방화벽에서 캐시한 객체에 대한 시간 도장(time stamp)를 찍지 않게 한다. 즉, 객체가 캐시되어 저장될 때에는 어느 정도 기한까지 이를 보관할지 캐시 규칙을 통해 결정하는데 이를 무시한다.
Cache objects even if they do not have an HTTP status code of 200 옵션은 대상 웹서 버에 연결할 때에 정상 연결(HTTP 200코드 값)되지 않더라도 페이지를 캐시하여 저장한다. 이는 오프라인 캐시를 위해 사용되기도 한다.
Maximum size of URL cached in memory (bytes) 옵션은 메모리 캐시(캐시에는 메모리 캐시와 디스크 캐시 두 가지가 있음. 메모리 캐시는 디스크 캐시에 비해 당연히 속도는 빠르지만 저장 공간의 한계라는 단점이 있음)에 저장한 객채의 최대 크기를 지정한다. 기본 값은 12.8kb이며 이를 변경할 수 있다. 예를 들어 조직의 환경에서 주로 그림 파일이나 데이터 파일을 주로 사용한다면 이 값을 증가시켜 캐시될 수 있게 한다.
If Web site of expired object cannot be reached 에서는 다음과 같이 두 가지 옵션을 설정한다.
- Do not return the expired object (return an error page) - 개체를 사용할 수 없는 경우에는 캐시에 개체가 저장되어 있다 하라도 오류 페이지를 보여 줍니다.
- Return the expired object only if expiration was. T웹 사이트에 접속할 수 없더라도 만약 캐시에 개체가 저장되어 있는 경우라면 저장된 개체를 반환합니다. 개체가 얼마나 오래 저장될 지는 At less than this percentage of original Time-to-Live, But no more than (minutes) 부분에서 설정한다.
Percentage of free memory to use for caching 옵션은 캐시 파일에 할당한 여유 메모리의 비율(백분율)을 설정한다. 캐시 메모리는 시간이 지난다고 해서 변경되거나 다른 프로세스가 사용할 수 없도록 고정된다. 기본적으로 10%를 사용하도록 설정되어 있지만 만약 RAM이 충분하다면 이 비율을 늘리는 것도 좋은 방편이다.
- 캐시 규칙 작성
웹 캐시 규칙은 다른 방화벽 규칙과는 달리 캐시에 저장되는 개체는 어떤 것인지, 그리고 그 특성을 어떻게 다룰 것인지 지정합니다. 새로운 캐시 규칙을 작성하려면 왼쪽에서 Cache 노드를 클릭하고 오른쪽에서 Tasks 탭을 클릭합니다. 아래쪽에서 Create a Cache Rule을 클릭합니다.
마이크로소프트 제품의 장점이라면 바로 '마법사' 기능이다. ISA 서버에서도 대부분의 설정에서 마법사 기능이 제공되며 캐시 규칙을 만들 때에도 마찬가지이다. Welcome to the New Cache Rule Wizard 페이지를 통해 캐시 규칙을 작성하는 마법사가 시작된다. Next버튼을 클릭한다.
Cache Rule Destination 페이지에서는 규칙을 적용할 대상(즉, 네트워크)을 선택한다. 여기 예에서는 Networks 폴더 내에 있는 External 항목을 선택했다. 참고로, Add Network Entities 대화상자를 통해 좀더 네트워크를 세분화하여 구성할 수 있으며 이러한 부분을 통해 캐시 규칙 또한 세분화할 수 있다.
Content Retrieval 페이지에서는 사용자가 요청할 때에 캐시에 있는 개체를 어떤 방식으로 가져올지 설정한다. 다음과 같이 3 가지 옵션이 있다.
- Only if a valid version of the object exists in cache. If no valid version exists, route the request to the server. - 캐시에 만료된 개체가 있는 경우에는 ISA 방화벽이 개체의 원본이 저장된 웹 서버에 접속하여 객체의 새로운 버전을 가져 옵니다.
- If any version of the object exists in cache. If none exists, route the request to the server. - 캐시에 개체가 있는 경우에는 만료여부에 관계없이 사용자에게 반환합니다. 캐시에 저장된 개체가 없는 경우에는 당연히 웹 서버에 접속하여 개체를 가져옵니다.
- If any version of the object exists in cache. If none exists, drop the request (never route the request to the server. - 캐시에 개체가 있는 경우에는 만료 여부에 관계없이 사용자에게 반환합니다. 하지만 캐시에 개체가 없는 경우에는 웹 서버에서 가져오지 않고 사용자에게 없다는 내용을 보여 줍니다.
기본 옵션은 Only if a valid version of the object exists in the cache. If no valid version exists, route the request to the server.이며 대부분 이 옵션 이외에는 사용할 필요가 없을 것이다. 선택하고 Next 버튼을 클릭한다.
Cache Content 페이지에서는 ISA 방화벽에 인터넷 상의 웹 서버에서 가져온 컨텐트를 캐시에 저장할 지 여부를 지정합니다. 기본적으로 원본 및 요청 헤더에 개체가 캐시될 수 있다고 명시된 경우에만 캐시에 개체를 저장합니다. 하지만 캐시로 저장하지 않으려면 Never, no content will ever be cached.를 선택한다. 이런 경우는 아마도 웹 서버에 가장 최신의 데이터가 꾸준히 그리고 활발하게 업데이트되는 경우라 할 수 있다.
원본 및 요청 헤더에서 캐시될 수 있다고 표시된 경우에는 다음과 같은 옵션을 선택한다.
- Dynamic content: - 웹 서버에서 컨텐트가 캐시되어서는 안된다고 명시되어 있다라도 ISA 방화벽에서 강제로 캐시로 저장한다.
- Content for offline browsing: - 웹 서버를 사용할 수 없을 때 또는 개체의 위치가 변경된 경우에도 컨텐트를 캐시로 저장합니다.
- Content requiring user authentication for retrieval: - 사용자의 인증이 필요한 컨텐트를 캐시에 저장합니다. 이런 경우에는 인증한 사용자의 컨텐트를 다른 사용자들이 무단으로 볼 수 있으므로 보안상 위험할 수 있다. 주의해서 사용하도록 한다.
Next를 클릭한다.
Cache Advanced Configuration 페이지에서는 캐시되는 개체의 크기를 제한할 수 있다. 기본적으로 캐시되는 개체의 크기에는 제한이 없다. 하지만 Do not cache objects larger than 옵션을 선택한 경우에는 최대 크기를 제한할 수 있다. 조직의 환경에서 대용량의 파일이나 컨텐트를 자주 사용하는 경우라면 아마도 디스크 캐시의 공간이 기하급수적으로 증가할 수도 있다. 이런 경우를 대비하여 적절하게 제한하는 것을 추천한다.
일반적으로 SSL 통신을 하는 경우에는 암호화 통신이므로 ISA 방화벽이 내부의 컨텐트를 확인할 방도가 없다. 하지만 Collective Software사의 ClearTunnel 제품을 설치하면 SSL 연결에서 발생하는 응답을 캐시로 저장할 수 있다. Cache SSL responses 옵션에서 설정한다. ClearTunnel 제품에 대한 자세한 사항은 http://www.collectivesoftware.com 을 참고한다.
또한, No less than과 No more than 옵션을 통해 TTL 시간을 정할 수 있다.
지금까지 ISA 방화벽에서 웹 캐시를 사용하도록 설정하는 방법과 이에 따른 웹 캐시 규칙을 작성하는 방법 그리고 실제 규칙을 어떻게 놓아야 하는지 구체적으로 살펴 보았다.
원본 위치 <http://isaserver.org/tutorials/ISA-2006-Web-Caching.html?printversion>
댓글을 달아 주세요