라우팅 엔진 기반의 정적 HTTP 리디렉션 서비스 구성
Junos OS 릴리스 19.3R2부터는 MX 시리즈에서 차세대 서비스를 활성화한 경우 HTTP 리디렉션 서비스도 지원됩니다.
MS-MPC/MS-MIC 또는 MX-SPC3 서비스 카드를 사용하는 대신 라우팅 엔진에서 HTTP 리디렉션 서비스를 구성할 수 있습니다. 벽으로 둘러싸인 정원을 방화벽 서비스 필터로 구성합니다. 벽으로 둘러싸인 정원은 캡티브 포털을 통한 재인증 없이 벽으로 둘러싸인 정원 내의 사이트에 대한 가입자 액세스를 제공하는 서버 그룹입니다. 벽으로 둘러싸인 정원 서비스 필터는 벽으로 둘러싸인 정원으로 향하는 트래픽과 벽으로 둘러싸인 정원 외부로 향하는 트래픽을 식별합니다. 벽으로 둘러싸인 정원 외부로 향하는 HTTP 트래픽만 HTTP 리디렉션 서비스에 의한 처리를 위해 라우팅 엔진으로 전송됩니다. CPCD 서비스는 서비스 세트를 통해 라우팅 엔진의 서비스 인터페이스와 연결됩니다.
라우팅 엔진의 서비스 인터페이스는 si- 접두사(예: si-1/1/0)로 식별됩니다. si- 인터페이스는 라우팅 엔진에 대한 모든 리디렉션 및 재작성 트래픽 및 서비스를 처리합니다. 캡티브 포털 콘텐츠 전송(CPCD) 서비스를 활성화하고 활성화하려면 si- 인터페이스가 업 상태로 운영되어야 합니다. CPCD 서비스가 인에이블된 후, si- 인터페이스의 동작 상태의 어떠한 변경도 기존 CPCD 서비스에 영향을 미치지 않는다.
CPCD 서비스는 벽으로 둘러싸인 정원으로 향하지 않는 가입자 HTTP 요청 트래픽을 리다이렉트 서버로 전송하고, 리다이렉트 서버는 리다이렉트 URL로 응답합니다. 리디렉션 URL은 트래픽을 권한이 없는 외부 사이트 대신 캡티브 포털로 보냅니다. 캡티브 포털(captive portal)은 리디렉션된 가입자에게 벽으로 둘러싸인 정원 외부의 보호된 서버에 대한 액세스 권한을 부여하기 전에 인증 및 권한 부여 서비스를 제공합니다.
리디렉션 서버는 로컬 또는 원격일 수 있습니다.
로컬 리디렉션 서버 - 라우터에 상주하며 가입자 트래픽을 벽으로 둘러싸인 정원 내부의 캡티브 포털로 리디렉션합니다.
원격 리디렉션 서버 - 라우터 뒤의 벽으로 둘러싸인 정원 내부의 정책 서버와 같은 디바이스에 상주합니다. 가입자의 HTTP 트래픽에 대한 대상 주소는 원격 리디렉션 서버의 주소로 다시 작성됩니다. 원격 서버는 가입자 트래픽을 벽으로 둘러싸인 정원 내부의 캡티브 포털로 리디렉션합니다.
벽으로 둘러싸인 정원을 방화벽 서비스 필터로 구성
벽으로 둘러싸인 정원을 방화벽 서비스 필터로 구성하면 벽으로 둘러싸인 정원 내의 서버로 향하는 트래픽이 식별되고 건너뜁니다. 다른 모든 HTTP 트래픽은 벽으로 둘러싸인 정원 외부의 주소로 향합니다. 이 트래픽은 필터 조건과 일치하지 않기 때문에 처리를 위해 라우팅 엔진으로 이동합니다.
벽으로 둘러싸인 정원에 캡티브 포털 또는 서버 목록으로 단일 서버가 포함되도록 서비스 필터를 구성할 수 있습니다.
단일 서버를 캡티브 포털로 사용하여 벽으로 둘러싸인 정원을 구성합니다.
서비스 필터를 만듭니다.
[edit] user@host# edit firewall family address-family service-filter filter-name
캡티브 포털(captive portal)에 대한 트래픽 처리를 식별하고 건너뛰기 위한 필터 용어를 정의합니다.
캡티브 포털의 대상 주소와 대상 포트를 지정하여 캡티브 포털로 향하는 트래픽과 일치하도록 필터 조건을 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-address ip-address user@host# set term name from destination-port port-number
일치하는 트래픽이 라인 카드에서 처리를 건너뛰도록 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
이전 용어와 일치하지 않는 모든 트래픽에서 HTTP 트래픽을 식별하기 위한 필터 용어를 정의하고 CPCD 서비스 규칙에 따라 처리하기 위해 전송합니다.
건너뛴 HTTP 트래픽과 일치하도록 하나 이상의 HTTP 포트 번호를 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
일치하는 트래픽이 CPCD 서비스에 의해 처리되도록 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name then service
나머지 비 HTTP 트래픽에 대한 추가 작업을 건너뛰도록 필터 용어를 정의합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
예를 들어 다음 구성은 캡티브 포털이 192.0.2.0인 IPv4 HTTP 트래픽 walled-v4에 대한 필터를 생성합니다. 주소와 일치하는 트래픽에 대한 처리는 건너뜁니다. 트래픽은 캡티브 포털로 전송됩니다. 일치하지 않는 트래픽은 용어 http로 이동하며, 여기서 HTTP 트래픽은 건너뛴 모든 트래픽에서 선택되어 CPCD 서비스에 따라 처리되도록 전송됩니다. 마지막으로, 용어 건너뛰기를 사용하면 나머지 비 HTTP 트래픽을 모두 건너뜁니다.
[edit] user@host# edit firewall family inet service-filter walled-v4 [edit firewall family inet service-filter walled-v4] user@host# set term portal from destination-address 192.0.2.0 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http from destination-port 80 user@host# set term http then service user@host# set term skip then skip
벽으로 둘러싸인 정원을 서버 목록 또는 서브넷으로 구성합니다.
서비스 필터를 만듭니다.
[edit] user@host# edit firewall family address-family service-filter filter-name
필터 용어를 정의합니다.
서버의 대상 접두사 목록을 지정하여 벽으로 둘러싸인 정원의 모든 서버로 향하는 트래픽과 일치하도록 필터 조건을 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-prefix-list list-name user@host# set term name from destination-port port-number
일치하는 트래픽이 라인 카드에서 처리를 건너뛰도록 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
이전 용어와 일치하지 않는 모든 트래픽에서 HTTP 트래픽을 식별하기 위한 필터 용어를 정의하고 CPCD 서비스 규칙에 따라 처리하기 위해 전송합니다.
건너뛴 HTTP 트래픽과 일치하도록 하나 이상의 HTTP 포트 번호를 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
일치하는 트래픽이 CPCD 서비스에 의해 처리되도록 지정합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name then service
나머지 비 HTTP 트래픽에 대한 추가 작업을 건너뛰도록 필터 용어를 정의합니다.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
(선택 사항) 벽으로 둘러싸인 정원 내의 서버를 지정하는 접두사 목록을 정의합니다. 서브넷 또는 여러 개별 주소를 지정할 수 있습니다.
[edit policy-options] user@host# set prefix-list list- name ip-address/mask user@host# set prefix-list list- name ip-address1 user@host# set prefix-list list- name ip-address2
예를 들어, 다음 구성은 벽으로 둘러싸인 정원에 있는 두 개의 서버를 지정하는 접두사 목록 wg-list를 사용하여 IPv6 HTTP 트래픽에 대한 필터 walled-v6-list를 생성합니다. 필터 용어 portal6은 벽으로 둘러싸인 정원으로 향하는 IPv6 트래픽을 식별합니다. 일치하지 않는 트래픽은 용어 http6으로 이동하며, 여기서 HTTP 트래픽은 건너뛴 모든 트래픽에서 선택되어 CPCD 서비스에 따라 처리되도록 전송됩니다. 마지막으로, skip6 용어를 사용하면 나머지 비 HTTP 트래픽을 모두 건너뜁니다.
[edit] user@host# edit firewall family inet6 service-filter walled-v6-list user@host# set term portal6 from destination-prefix-list wg-list user@host# set term portal6 then skip user@host# set term http6 from destination-port [80 8080] user@host# set term http6 then service user@host# set term skip6 then skip [edit policy-options] user@host# set prefix-list wg-list 2001:db8::10.10 user@host# set prefix-list wg-list 2001:db8::10.22
로컬 및 원격 리디렉션 서버에 대한 HTTP 리디렉션 구성
벽으로 둘러싸인 정원 외부의 사이트에 대한 HTTP 요청이 이루어지면 CPCD는 인증 및 권한 부여를 위해 트래픽을 캡티브 포털로 리디렉션할 수 있습니다.
벽으로 둘러싸인 정원 외부로 향하는 트래픽에 대해 수행할 작업을 지정하는 CPCD 서비스 규칙을 구성합니다. 이 트래픽은 벽으로 둘러싸인 정원 서비스 필터에 의해 식별되어 서비스로 전달되거나 벽으로 둘러싸인 정원 서비스 규칙에 의해 식별 및 수락되었습니다. 구성하는 작업은 로컬 또는 원격 HTTP 리디렉션 서버를 사용하는지 여부에 따라 다릅니다.
라우터에서 로컬 HTTP 리디렉션 서버를 사용하는 경우 리디렉션 작업을 지정합니다.
라우터 뒤의 벽으로 둘러싸인 정원에 상주하는 원격 HTTP 리디렉션 서버를 사용하는 경우 단순히 리디렉션 URL을 지정할 수 없습니다. 이 경우 서비스 규칙은 트래픽의 IP 대상 주소를 다시 써야 합니다. 새 대상 주소는 원격 HTTP 리디렉션 서버의 주소입니다. 그런 다음 원격 서버는 트래픽을 캡티브 포털로 보내기 위한 리디렉션 URL을 제공합니다.
CPCD 서비스는 서비스 세트에 의해 서비스 인터페이스와 연관된다. 서비스 세트와 벽으로 둘러싸인 정원 서비스 필터는 모두 정적으로 구성된 인터페이스에 적용됩니다.
예를 들어, 로컬 서버에 대한 다음 구성에서 CPCD 서비스 규칙 redir-svc는 트래픽을 캡티브 포털로 http://www.portal.example.com
리디렉션합니다. 가입자가 입력한 원래 URL이 리디렉션 URL에 추가됩니다.
user@host# edit services captive-portal-content-delivery user@host# edit rule redir-svc user@host# set match-direction input user@host# set term redir1 then redirect http://www.portal.example.com/url=%dest-url%
원격 서버에 대한 다음 구성은 원래 대상 주소를 원격 서버의 주소 192.0.2.230으로 다시 쓰는 CPCD 서비스 규칙 rewr-svc를 만듭니다.
user@host# edit services captive-portal-content-delivery user@host# edit rule rewr-svc user@host# set match-direction input user@host# set term rewr1 then rewrite destination-address 192.0.2.230
서비스 프로필을 서비스 인터페이스와 연결하도록 서비스 프로파일 및 서비스 세트 구성
서비스 세트는 라우팅 엔진에 의해 수행될 하나 이상의 서비스를 정의합니다. HTTP 리디렉션 서비스의 경우 CPCD 규칙을 포함하는 CPCD 서비스 프로필을 정의합니다. 서비스 세트는 CPCD 서비스 프로파일을 특정 서비스 인터페이스에 적용합니다.
예를 들어 다음 구성은 CPCD 규칙 redir-svc를 참조하는 CPCD 서비스 프로필 redir-prof를 만듭니다. 서비스 세트 ss2는 라우팅 엔진 기반 CPCD에 대한 것으로 지정됩니다. 이 세트는 CPCD 서비스 프로필 redir-prof를 서비스 인터페이스 si-4/0/0과 연결합니다.
[edit services captive-portal-content-delivery] user@host# edit profile redir-prof user@host# set cpcd-rules redir-svc [edit services] user@host# edit service-set ss2 user@host# set service-set-options routing-engine-service user@host# set captive-portal-content-delivery-profile redir-prof user@host# set interface-service-service-interface si-4/0/0
CPCD 서비스 세트 및 서비스 필터를 논리 인터페이스에 연결
HTTP 리디렉션 서비스를 사용하려면 CPCD 서비스 세트를 논리적 인터페이스에 연결해야 합니다. 벽으로 둘러싸인 정원이 서비스 필터로 구성된 경우 서비스 세트와 동일한 인터페이스에 연결해야 합니다. 해당 인터페이스에 들어오고 나가는 트래픽은 서비스 필터에 의해 필터링됩니다. 서비스를 위해 식별된 트래픽은 CPCD 프로필이 적용되는 라우팅 엔진 서비스 인터페이스로 전송됩니다.
예를 들어, 다음 구성은 섀시 슬롯 4의 라인 카드와 라인 카드의 슬롯 0의 MIC에서 인라인 서비스를 활성화합니다. 논리적 인터페이스에 주소를 할당합니다. 그런 다음 IPv4 주소 패밀리에 대한 서비스 세트 sset2 및 서비스 필터 walled-v4를 ge-2/0/1.0에 연결합니다. 서비스 세트와 필터는 모두 인터페이스 입력 및 출력에 적용됩니다.
user@host# edit chassis fpc 4 pic 0 inline-services bandwidth 1g user@host# edit interfaces ge-2/0/1 unit 0 family inet user@host# set address 203.0.113.5 user@host# set service input service-set sset2 service-filter walled-v4 user@host# set service output service-set sset2 service-filter walled-v4
HTTP 서버가 콘텐츠 액세스를 제어하는 데 사용할 수 있는 GET 헤더 태그 삽입
경우에 따라 HTTP 서버에서 사용자가 콘텐츠에 액세스할 수 있도록 허용할지 여부를 결정할 수 있습니다. Junos OS 릴리스 19.1부터 라우팅 엔진 기반의 정적 HTTP 리디렉션 서비스 필터를 구성하여 라우팅 엔진이 이를 위해 HTTP GET 메시지의 패킷 헤더에 삽입하는 태그를 지정할 수 있습니다. 라우터 호스트 이름 또는 가입자의 MAC 주소, IPv4 주소 또는 IPv6 주소에 대한 태그를 삽입할 수 있습니다.
다음 단계는 그림 1에 해당합니다.
사용자의 디바이스인 HTTP 클라이언트는 HTTP 서버와의 TCP 핸드셰이크 시퀀스를 수행합니다.
핸드셰이크가 성공하면 클라이언트는 사용자가 요청한 URL과 함께 HTTP GET을 보냅니다.
라우팅 엔진은 /$ 및 $/로 묶인 임의의 문자 문자열을 연결하여 해당 URL을 수정합니다. 문자열 길이는 나중에 삽입할 태그의 결합된 길이와 일치합니다. 문자열은 클라이언트에서 반환될 때 식별자 역할을 합니다.
삽입할 태그의 길이가 30자이고 요청된 URL이 http://192.51.100.20/test.html 라고 가정합니다. 라우팅 엔진은 다음 예와 같이 임의의 문자 30자로 구성된 문자열로 수정된 URL을 반환합니다.
http://192.51.100.20/test.html/$IIGSbVdNDTDvnJFIAyoysXwVJawoYj$/
라우팅 엔진은 수정된 URL을 상태 코드 302(찾음) 또는 307(임시 리디렉션)로 보냅니다. 전송되는 코드는 사용 중인 HTTP 버전과 BNG의 Junos OS 버전에 따라 다릅니다. 두 코드 모두 수정된 URL을 사용하여 액세스 요청을 다시 보내야 함을 클라이언트에 나타냅니다.
라우팅 엔진은 클라이언트 및 서버와의 TCP 연결을 재설정합니다.
클라이언트는 수정된 URL에 대해 HTTP 서버와 TCP 핸드쉐이크를 수행합니다.
클라이언트는 수정된 URL을 사용하여 HTTP GET을 보냅니다.
라우팅 엔진은 연결된 문자열의 길이가 클라이언트로 전송된 것과 동일한지 확인합니다.
길이가 올바르면 URL을 원래 요청된 URL로 다시 제거하고 태그를 GET 헤더에 삽입한 다음 GET을 HTTP 서버로 전달합니다. 구성된 경우 GET은 원래 요청된 서버 대신 리디렉션 URL로 선택적으로 전달될 수 있습니다.
길이가 올바르지 않은 경우, 라우팅 엔진은 패킷을 삭제하고 드롭 카운터를 증가시킵니다.
HTTP 서버는 GET 메시지를 평가하고 액세스 권한을 부여하는 경우 상태 코드 200(OK) 또는 요청이 거부된 경우 403(사용할 수 없음)으로 클라이언트에 응답을 보냅니다.
라우팅 엔진은 클라이언트 및 서버와의 TCP 연결을 종료합니다.

태그는 구성된 순서와 동일한 순서로 헤더에 삽입됩니다. 태그 이름은 대소문자를 구분하므로 tag ABCD
및 tag abcd
은(는) 다른 이름으로 처리됩니다.
GET 헤더에 삽입할 태그를 구성하려면 다음을 수행합니다.
예를 들어, 다음 구성은 입력 인터페이스의 트래픽과 일치하는 서비스 규칙 insert-rule을 생성합니다. 용어 t1은 가입자의 MAC 주소가 포함된 x-mac-addr과 가입자의 IPv4 주소 값이 포함된 x-sub-ip라는 두 개의 태그를 삽입합니다.
[edit] user@host# edit services captive-portal-content-delivery rule insert-rule user@host# set match-direction input user@host# set term t1 then insert tag x-mac-addr tag-value subscriber-mac-addr user@host# set term t1 then insert tag x-sub-ip tag-value subscriber-ip
다음 샘플 규칙에서는 대상 주소가 198.51.100.50 또는 198.51.100.75와 일치하는 트래픽만 태그됩니다. 가입자의 IP 주소와 라우터의 호스트 이름에 태그가 삽입됩니다. 규칙의 두 번째 용어는 트래픽이 원래 요청된 URL로 전송되는 대신 전달되는 리디렉션 URL을 제공합니다.
user@host# edit services captive-portal-content-delivery user@host# set match-direction input user@host# set rule tag-redirect term t1 from destination-address 198.51.100.50 user@host# set rule tag-redirect term t1 from destination-address 198.51.100.75 user@host# set rule tag-redirect term t1 then insert tag x-sub-ip tag-value subscriber-ip user@host# set rule tag-redirect term t1 then insert tag x-hostname tag-value hostname user@host# set rule tag-redirect term t2 then redirect http://www.portal.example.com user@host# set profile http-insert-redirect cpcd-rules tag-redirect
라우팅 엔진 기반 HTTP 리디렉션에 대한 CPCD 서비스 규칙과 마찬가지로 CPCD 서비스 프로필에 규칙을 포함시킨 다음 CPCD 서비스 세트를 사용하여 프로필을 인라인 서비스 인터페이스와 연결해야 합니다. 라우팅 엔진은 규칙을 사용하여 서비스 세트와 동일한 논리적 인터페이스에서 서비스 필터에 의해 전달된 HTTP 트래픽을 처리합니다.
다음 샘플 구성을 고려하십시오. 태그 리디렉션 규칙은 입력 인터페이스의 트래픽을 일치시킨 다음 GET 헤더에 두 개의 태그, 즉 가입자의 IP 주소 값과 라우터의 호스트 이름을 삽입하도록 정의됩니다. 그런 다음 규칙은 태그가 지정된 트래픽에 대한 리디렉션 URL을 제공합니다. CPCD 서비스 프로필 http-insert-redirect는 이 규칙을 포함하도록 정의됩니다.
user@host# edit services captive-portal-content-delivery user@host# set match-direction input user@host# set rule tag-redirect term t1 then insert tag x-sub-ip tag-value subscriber-ip user@host# set rule tag-redirect term t1 then insert tag x-hostname tag-value hostname user@host# set rule tag-redirect term t2 then redirect http://www.portal.example.com user@host# set profile http-insert-redirect cpcd-rules tag-redirect
서비스 세트 sset1은 라우팅 엔진 기반 CPCD를 위한 것으로 정의됩니다. CPCD 서비스 프로필을 인라인 서비스 인터페이스에 적용합니다.
user@host# edit services service-set sset1 user@host# set service-set-options routing-engine-services user@host# set captive-portal-content-delivery-profile http-insert-redirect user@host# set interface-service service-interface si-1/1/0
서비스 필터 walled-tag는 192.0.2.100의 벽으로 둘러싸인 정원으로 보낼 HTTP 트래픽, 서비스 처리로 이동할 198.51.100.50으로 향하는 HTTP 트래픽, 건너뛸 다른 모든 트래픽의 세 가지 종류의 트래픽을 식별하고 작동합니다. 이는 서비스 규칙 대신 서비스 필터에서 대상 주소를 일치시키는 예입니다.
user@host# edit firewall family inet service-filter walled-tag user@host# set term portal from destination-address 192.0.2.100 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http-tag from destination-address 198.51.100.50 user@host# set term http-tag from destination-port 80 user@host# set term http-tag then service user@host# set term skip then skip
service-set sset1 및 service filter walled-tag는 논리적 인터페이스에 적용됩니다.
user@host# edit chassis fpc 4 pic 0 inline-services bandwidth 1g user@host# edit interfaces ge-2/0/1 unit 0 family inet user@host# set address 203.0.113.5 user@host# set service input service-set sset1 service-filter walled-tag user@host# set service output service-set sset1 service-filter walled-tag
변경 내역 테이블
기능 지원은 사용 중인 플랫폼 및 릴리스에 따라 결정됩니다. 기능 탐색기 를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.