EdgeRouter - 투명 프록시 (transparent proxy)를 위한 정책 기반 라우팅

download at 2017-02-07T01:05:58Z origin

Overview


이 문서는 정책 기반 라우팅을 사용하여 EdgeMax 장비 등이 아닌 투명 프록시를 LAN에 설정하는 방법에 대하여 서술합니다.

다른 폴리시 기반 예제 (목적지 포트 기반)를 따라서 수행하다보면, 사용자가 특정 종류의 트래픽을 특정 장비로 전달할 수 있도록 라우팅 테이블을 설정할 수 있다는 것을 알게 될것입니다. 이 예제에서는 웹 트래픽을 투명 프록시로 전달하도록 정의할 것입니다. 예제 네트워크에서는 eth0과 연결된 단일 WAN, eth1에 있는 단일 LAN과 LAN의 IP를 갖는 투명 프록시에 대하여 집중해서 살펴보도록 하겠습니다.

  1. eth0 - 인터넷
  2. eth1 - 192.168.1.0/24 - LAN

2a. 투명 프록시 - 192.168.1.42

Routing Tables


네트워크 환경에 따른 기본 라우팅 테이블이 있다고 가정하겠습니다. 기본 설정을 통해서는 (ISP, DHCP 등과 같은 고정 라우팅을 제외하고는) 아무일도 일어날 필요가 없습니다. 그렇지만 새로운 테이블을 새엉하고 다음 홉에 투명 프록시를 사용하면 모든 트래픽을 프록시가 제어할 수 있습니다.

테이블 넘버를 1에서 200사이에 이미 존재하지 않는 테이블 넘버로 선택합니다:

set protocols static table 5 route 0.0.0.0/0 next-hop 192.168.1.42

방화벽을 수정하고 특정 포트와 특정 주소 그룹은 정해진 행위를 할 수 있도록 수정 작업이 필요합니다.

Note: PROXY_CLIENTS 는 프록시 IP를 가져서는 안됩니다. 프록시 IP를 소유하게 될 경우에는 라우팅 루프에 빠지게 됩니다.

Note: PROXY_CLIENTS 는 eth1 게이트웨이 IP를 가지고 있어서는 안됩니다. 게이트웨이 주소를 가지고 있을경우, 브로드캐스트를 수행하게 됩니다.

firewall {
    group {
        address-group PROXY_CLIENTS {
            address 192.168.1.2-192.168.1.41
            address 192.168.1.43-192.168.1.254
        }
        port-group PROXY_PORTS {
            port 80
            port 8080
        }
    }
    modify TRANS_PROXY {
        rule 1 {
            action modify
            description "use table 5 to route for PROXY_PORTS"
            destination {
                group {
                    port-group PROXY_PORTS
                }
            }
            modify {
                table 5
            }
            protocol tcp
            source {
                group {
                    address-group PROXY_CLIENTS
                }
            }
        }
    }
}

방화벽을 LAN 인터페이스에 적용해야합니다:

set interfaces ethernet eth1 firewall in modify TRANS_PROXY

이제 방화벽은 LAN 인터페이스 (eth1)를 통해서 PROXY_PORTS (HTTP, 8080)로 향하는 트래픽을 감시할 것입니다. 소스를 체크하고 게이트웨이, 브로드 캐스트, 프록시에 있는 클라이언트인지를 검사하여 라우팅 테이블을 table 5로 수정합니다. 이 트래픽은 다음 홉에서 투명 프록시를 거치게 됩니다.

투명 프록시로 트래픽이 도착하게 되면 다음 홉(eth1의 IP)을 찾게 됩니다. 하지만 주소 그룹에 ㅌ명 프록시 IP를 제외하였으므로 라우팅 테이블을 따라서 트래픽을 전송하게 됩니다. (예를 들어, eth0을 통하여 인터넷 망으로 트래픽을 송출) 만약 PROXY_CLIENTS 주소 그룹에서 투명 프록시를 제외하지 않았을 경우, 웹 트래픽이 올바르게 동작하지 않을 것입니다.