일반 라우팅 캡슐화(GRE)는 직접 지점 간 네트워크 연결을 설정하기 위해 보조 데이터 패킷 내부에 데이터 패킷을 래핑하는 프로토콜입니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
일반 라우팅 캡슐화(GRE)는 다른 프로토콜의 패킷 내에서 하나의 라우팅 프로토콜을 사용하는 데이터 패킷을 캡슐화하기 위한 프로토콜입니다. "캡슐화"는 상자를 다른 상자 안에 넣는 것처럼 한 데이터 패킷을 다른 데이터 패킷 안에 래핑하는 것을 의미합니다. GRE는 개별 네트워크 간의 연결을 단순화하기 위해 네트워크를 통해 직접 지점 간 연결을 설정하는 한 가지 방법입니다. GRE는 다양한 네트워크 계층 프로토콜과 함께 작동합니다.
GRE를 사용하면 패킷이 지원되는 프로토콜을 사용하는 다른 패킷 내에 래핑되므로 네트워크에서 일반적으로 지원하지 않는 프로토콜을 사용할 수 있습니다. 이것이 어떻게 작동하는지 이해하려면 자동차와 페리의 차이점에 대해 생각해보세요. 자동차는 육지의 도로를 주행하고 페리는 바다에서 항해합니다. 자동차는 일반적으로 바다에서 이동할 수 없지만, 그렇게 하려면 자동차를 페리에 실으면 됩니다.
이 비유에서와 같이 환경 유형은 특정 라우팅 프로토콜을 지원하는 네트워크와 같고 차량은 데이터 패킷과 같습니다. GRE는 한 유형의 운송수단(자동차)이 다른 유형의 운송수단(페리)에 로드되어 다른 방법으로는 할 수 없는 환경에서 이동하는 것처럼, 첫 번째 패킷이 일반적으로 통과할 수 없는 네트워크를 통과할 수 있도록 다른 유형의 패킷 내에 한 유형의 패킷을 로드하는 방법입니다.
예를 들어 어느 회사에서 두 사무실에 있는 근거리 통신망(LAN) 간에 연결을 설정해야 한다고 가정해보겠습니다. 두 LAN 모두 최신 버전의 인터넷 프로토콜인 IPv6을 사용합니다. 그러나 한 사무실 네트워크에서 다른 사무실 네트워크로 이동하려면 트래픽이 타사에서 관리하는 네트워크를 통과해야 하며, 이 네트워크는 다소 구식이고 구형의 IPv4 프로토콜만 지원합니다.
GRE를 사용하면 IPv4 패킷 내에 IPv6 패킷을 캡슐화하여 이 네트워크를 통해 트래픽을 보낼 수 있습니다. 비유를 다시 든다면 IPv6 패킷은 자동차, IPv4 패킷은 페리, 타사 네트워크는 바다입니다.
패킷을 다른 패킷 내에 캡슐화하는 것을 "터널링"이라고 합니다. GRE 터널은 일반적으로 두 라우터 간에 구성되며 각 라우터는 터널의 한쪽 끝처럼 작동합니다. 라우터는 GRE 패킷을 서로 직접 보내고 받도록 설정됩니다. 이 두 라우터 사이에 있는 라우터는 캡슐화된 패킷을 열지 않으며, 캡슐화된 패킷을 둘러싼 헤더만 참조하여 캡슐화된 패킷을 전달합니다.
이것이 "터널링"이라고 불리는 이유를 이해하기 위해 비유를 약간 달리 할 수 있습니다. 자동차가 산의 한쪽에 있는 A 지점에서 다른 쪽의 B 지점으로 통과해야 하는 경우 가장 효율적인 방법은 단순히 산을 통과하는 것입니다. 그러나 일반 자동차는 단단한 바위를 똑바로 통과할 수 없습니다. 따라서 자동차는 산 주위를 완전히 돌아가야만 A 지점에서 B 지점으로 이동할 수 있습니다.
그러나 산을 통해 터널을 뚫었다고 상상해보세요. 이제 자동차는 A 지점에서 B 지점으로 직진할 수 있으며 훨씬 빨리 갈 수 있습니다. 터널 없이는 할 수 없는 일입니다.
이제 지점 A를 네트워크 장치로, 지점 B를 다른 네트워크 장치로, 산을 두 장치 사이의 네트워크로, 자동차를 지점 A에서 지점 B로 이동해야 하는 데이터 패킷으로 생각해보세요. 산을 통과하려는 자동차처럼 데이터 패킷은 산을 통과할 수 없으며 추가 네트워크를 통해 우회하므로 훨씬 더 오래 걸릴 수 있습니다.
그러나 GRE는 데이터 패킷이 통과할 수 있도록 "산" 네트워크를 통해 가상 "터널"을 생성합니다. 터널이 자동차가 땅속을 직진할 수 있는 방법을 만드는 것처럼 GRE(및 기타 터널링 프로토콜)는 데이터 패킷이 이를 지원하지 않는 네트워크를 통과하는 방법을 만듭니다.
네트워크를 통해 전송되는 모든 데이터는 패킷이라는 더 작은 조각으로 나뉘며 모든 패킷에는 페이로드와 헤더라는 두 부분이 있습니다. 페이로드는 패킷의 실제 내용이며, 전송되는 데이터입니다. 헤더에는 패킷의 출처와 패킷이 속한 패킷 그룹에 대한 정보가 있습니다. 각 네트워크 프로토콜은 각 패킷에 헤더를 연결합니다.
GRE는 각 패킷에 GRE 헤더(4바이트 길이)와 IP 헤더(20바이트 길이)라는 두 헤더를 추가합니다. GRE 헤더는 캡슐화된 패킷에서 사용하는 프로토콜 유형을 나타냅니다. IP 헤더는 원래 패킷의 헤더와 페이로드를 캡슐화합니다. 이는 GRE 패킷에는 일반적으로 원래 패킷에 대한 IP 헤더와 GRE 프로토콜에 의해 추가된 두 개의 IP 헤더가 있음을 의미합니다. GRE 터널의 양쪽 끝에 있는 라우터만 원래의 비 GRE IP 헤더를 참조합니다.
MTU 및 MSS는 다리를 건너는 자동차의 중량 제한과 마찬가지로 네트워크를 통해 이동하는 데이터 패킷의 크기를 제한하는 측정 수단입니다.MTU는 헤더를 포함한 패킷의 총 크기를 측정합니다. MSS는 페이로드만 측정합니다.MTU를 초과하는 패킷은 네트워크를 통과할 수 있도록 분편화되거나 더 작은 조각으로 나뉩니다.
다른 프로토콜과 마찬가지로 GRE를 사용하면 데이터 패킷 크기에 몇 바이트가 추가됩니다. 이는 패킷에 대한 MSS 및 MTU 설정에 반영되어야 합니다. MTU가 1,500바이트이고 MSS가 1,460바이트인 경우(필요한 IP 및 TCP 헤더의 크기를 고려하기 위해) GRE 24바이트 헤더를 추가하면 패킷이 MTU를 초과하게 됩니다.
1,460바이트[페이로드] + 20바이트[TCP 헤더] + 20바이트[IP 헤더] + 24바이트[GRE 헤더 + IP 헤더] = 1,524바이트
따라서 패킷이 분편화됩니다. 분편화되면 패킷 전달 시간이 늦어지고 MTU를 초과하는 패킷을 분해한 다음 다시 조립해야 하므로 사용되는 컴퓨팅 능력의 양이 늘어납니다.
MSS를 줄여 GRE 헤더를 수용함으로써 이를 방지할 수 있습니다. MSS가 1,460이 아닌 1,436으로 설정된 경우, GRE 헤더가 고려되고 패킷은 MTU 1,500을 초과하지 않습니다.
1,436바이트[페이로드] + 20바이트[TCP 헤더] + 20바이트[IP 헤더] + 24바이트[GRE 헤더 + IP 헤더] = 1,500바이트
분편화는 방지되지만, 결과적으로 페이로드가 약간 작아지므로 데이터를 전달하는 데 추가 패킷이 필요합니다. 예를 들어 150,000바이트의 콘텐츠(또는 약 150kB)를 제공하는 것이 목표이고 MTU가 1,500으로 설정되어 있으며 다른 계층 3 프로토콜이 사용되지 않는 경우 GRE를 사용할 때와 사용하지 않을 때 필요한 패킷 수를 비교해보겠습니다.
추가되는 두 패킷 때문에 데이터 전송에 몇 밀리초의 지연이 추가됩니다. 그러나 GRE를 사용하면 이러한 패킷이 다른 방법보다 더 빠른 네트워크 경로를 이용할 수 있으므로 손실된 시간이 만회됩니다.
분산 서비스 거부(DDoS) 공격에서 공격자는 정크 네트워크 트래픽으로 대상 서버 또는 네트워크를 압도하려고 시도합니다. 이는 합법적인 고객에게 서비스를 제공할 수 없을 때까지 식당에 가짜 배달 주문을 퍼붓는 것과 비슷합니다.
GRE는 다른 네트워킹 프로토콜과 마찬가지로 DDoS 공격을 수행하는 데 사용될 수 있습니다. 기록상 가장 대규모의 DDoS 공격 하나가 2016년 9월에 발생했습니다. 이 보안 공격은 어느 연구원의 웹 사이트를 대상으로 Mirai 봇넷을 사용하여 수행되었습니다. 해당 웹 사이트는 GRE 프로토콜을 사용하는 패킷으로 압도되었습니다.
다른 프로토콜과 달리 GRE 패킷의 소스는 위조되거나 스푸핑될 수 없습니다. (그렇지 않은 프로토콜의 예는 SYN 폭주 및 DNS 증폭 공격에 대한 글을 참조하세요.) 대규모 GRE DDoS 공격을 수행하려면 공격자는 봇넷에서 대량의 실제 컴퓨팅 장치를 제어해야 합니다.
Cloudflare에서는 GRE를 사용한 공격 등 모든 종류의 네트워크 계층 DDoS 공격으로부터 보호합니다.Cloudflare Magic Transit은 Cloudflare 전역 네트워크의 DDoS 완화 기능을 네트워크 인프라로 확장하여 온프레미스, 클라우드, 하이브리드 네트워크를 보호합니다.모든 공격 네트워크 트래픽은 합법적인 트래픽 속도 저하 없이 필터링됩니다.
Magic Transit에서 고객의 네트워크 트래픽을 보호하고 가속화하려면 Cloudflare 네트워크가 고객의 내부 네트워크에 안전하게 연결되어 있어야 합니다.GRE 터널링은 이를 위해 아주 유용합니다.GRE 터널링을 통해 Magic Transit은 공용 인터넷을 이용하여 Cloudflare 고객의 네트워크에 안전하게 직접 연결할 수 있습니다.
Magic Transit은 Cloudflare Anycast 네트워크를 기반으로 구축되었습니다.즉, 모든 Cloudflare 서버가 단일 IP 주소를 사용하여 GRE 터널의 엔드포인트 역할을 할 수 있으므로 GRE 터널 연결에 대한 단일 실패 지점이 제거됩니다(Cloudflare는 이 접근 방식을 사용하여 Magic WAN 고객을 연결합니다).Magic Transit의 작동 방식에 대해 자세히 알아보려면 Magic Transit 제품 페이지를 참조하세요.