cloudflared 데몬이 사전에 Cloudflare Edge와 맺어놓은 장기 지속 연결(Long-lived persistent connection, 주로 HTTP/2 or QUIC over UDP)을 통해 데이터를 전송한다.cloudflared 데몬은 터널을 통해 들어온 데이터를 수신하고 역캡슐화하여 원본 HTTP 요청을 복원한다. 그리고 로컬 네트워크(Docker Network) 내의 서비스로 새로운 HTTP 요청을 생성하여 보낸다.
http:// 이면 80번, https:// 이면 443 포트를 기본값으로 사용하여 연결을 시도한다. 즉, 사용자가 도메인만 입력하면 브라우저는 자동으로 Destination Port: 443으로 패킷을 목적지(Cloudflare)로 보낸다.Service: http://192.168.35.100:8000이라고 명시했다.cloudflared 데몬이 중간에서 포트 번호를 변환하여 새로운 TCP 연결을 맺어주기 때문에 사용자는 8000번을 알 필요도, 입력할 필요도 없다..cloud, .com) 관리 서버(Registry)에 myserver.cloud의 네임서버가 어디인지 묻는다.프록시와 애니캐스트)📌 DNS 레코드와 CNAME의 역할
DNS 레코드란 네임서버가 가지고 있는 설정 데이터 한 줄을 의미한다. 이 도메인은 어떤 IP로 가라, 메일 서버는 어디다 같은 구체적인 지시사항이다.
그 중CNAME(Canonical Name) 레코드는 별칭을 지정하는 레코드이다.
- 기능 : 도메인의 이름을 IP 주소로 직접 연결하는 것이 아니라, 또 다른 도메인 이름으로 매핑한다.
- Cloludflare Tunnel에서의 역할
- 터널을 생성하면 Cloudflare는 내부적으로 고유한 주소를 생성한다.( ex. [UUID].cfargotunnel.com )
- 대시보드에서 website.myserver.cloud를 등록했을 때, 실제 DNS 내부에서는 website.myserver.cloud가 [UUID].cfargotunnel.com을 가리키도록 CNAME 레코드가 생성된 것이다.
- 즉, 이 도메인으로 들어오는 요청은 저 터널 주소로 토스하라는 이정표 역할을 한다.
Propagation 과정).cloud Registry에 이 도메인의 담당자가 Cloudflare NS로 바뀌었다고 신호를 보낸다. (비교적 빠름)노트북의 IP를 알 필요가 없다의 기술적 의미
Cloudflare가 내 노트북의 IP를 모른다는 말은 Layer 3의 엔드포인트 관점에서의 설명이다.
- Transport Layer (TCP/UDP) 관점
- Cloudflare는 데이터를 보낼 때 목적지를 211.200.x.x:10001 (공유기 공인 IP)로 설정해서 보낸다.
- 즉, Cloudflare는 공유기까지의 주소만 알고 있다. 공유기 뒤에 192.168.35.100이 있는지, 192.168.35.101이 있는지는 패킷 헤더에 없으므로 알지 못합니다.
- 데이터 반환 과정 (
DNAT)
- Cloudflare가 211.200.x.x:10001로 응답 패킷을 보내면, 공유기가 이를 받는다.
- 공유기는 아까 작성해 둔 NAT 테이블을 조회한다.
- 외부 포트 10001로 들어온 데이터는 내부의 192.168.35.100:54321로 보내라는 기록을 확인한다.
- 공유기가 목적지 IP를 192.168.35.100으로 다시 변환(=DNAT)하여 노트북에 전달한다.
TCP SYN 패킷 전송), 패킷은 다음과 같이 변환된다. => SNAT192.168.35.100:54321에서 나가는 요청을, 외부용 포트 10001에 매핑한다.