방화벽과 함께 터널 사용하기
Cloudflare Tunnel을 사용하면 모든 인그레스(ingress) 트래픽을 차단하고 cloudflared로부터의 이그레스(egress) 트래픽만 허용하는 포지티브 보안 모델을 구현할 수 있습니다. 터널 설정에 지정된 서비스만 외부 세계에 노출됩니다.
포트
방화벽 내부에서 이그레스 트래픽에 대해 아래 파라미터들을 설정할 수 있습니다. 방화벽 설정 방법은 방화벽 유형에 따라 다릅니다:
- 방화벽이 도메인 기반 규칙(FQDN 허용 목록)을 지원하는 경우, 아래 나열된 호스트 이름으로의 아웃바운드 연결을 허용할 수 있습니다.
- 방화벽이 IP 기반 규칙을 요구하는 경우, 각 도메인에 대해 나열된 모든 IP 주소로의 아웃바운드 연결을 허용해야 합니다.
TCP 및 UDP 프로토콜 모두에 대해 7844 포트가 허용되는지 확인하십시오 (http2 및 quic용).
터널 운영에 필요한 사항
cloudflared는 7844 포트에서 Cloudflare의 글로벌 네트워크에 연결됩니다. Cloudflare Tunnel을 사용하려면 방화벽이 7844 포트에서 다음 목적지로의 아웃바운드 연결을 허용해야 합니다 (QUIC 프로토콜 사용 시 UDP, HTTP/2 프로토콜 사용 시 TCP).
region1.v2.argotunnel.comregion2.v2.argotunnel.comcftunnel.com
방화벽이 SNI(Server Name Indication)를 강제하는 경우 다음 규칙도 필요합니다.
_v2-origintunneld._tcp.argotunnel.comh2.cftunnel.comquic.cftunnel.com
선택 사항
443 포트를 열면 일부 선택적 기능이 활성화됩니다. 이러한 연결을 허용하지 않으면 로그 오류가 발생할 수 있지만 cloudflared는 계속 올바르게 실행됩니다.
api.cloudflare.com:cloudflared가 소프트웨어 업데이트가 있는지 쿼리할 수 있도록 허용합니다.update.argotunnel.com:cloudflared가 소프트웨어 업데이트가 있는지 쿼리할 수 있도록 허용합니다.github.com:cloudflared가 최신 릴리스를 다운로드하고 소프트웨어 업데이트를 수행할 수 있도록 허용합니다.<your-team-name>.cloudflareaccess.com:cloudflared가 Access JWT를 검증할 수 있도록 허용합니다.pqtunnels.cloudflareresearch.com:cloudflared가 포스트-퀀텀 키 교환 오류를 Cloudflare에 보고할 수 있도록 허용합니다.
방화벽 구성
클라우드 VM 방화벽
클라우드 제공업체의 가상 머신(VM) 인스턴스에서 서비스를 호스팅하는 경우, 인스턴스 수준 방화벽 규칙을 설정하여 모든 인그레스 트래픽을 차단하고 이그레스 트래픽만 허용할 수 있습니다.
OS 방화벽
또는 운영 체제(OS) 수준의 방화벽 규칙을 사용하여 모든 인그레스 트래픽을 차단하고 이그레스 트래픽만 허용할 수 있습니다. 예를 들어, 서버가 Linux에서 실행되는 경우 iptables를 사용하여 방화벽 규칙을 설정할 수 있습니다.
- 현재 방화벽 규칙 확인:
sudo iptables -L - localhost 통신 허용:
sudo iptables -A INPUT -i lo -j ACCEPT - 이미 설정된 연결 및 관련 트래픽 허용:
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - 새 SSH 연결 허용:
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT - 다른 모든 인그레스 트래픽 차단:
경고: 다음 명령에 매우 주의하십시오. 현재 SSH 연결을 유지하거나 새 SSH 연결을 허용하지 않으면 로그아웃되어 시스템에 다시 SSH로 접속할 수 없게 됩니다.
sudo iptables -A INPUT -j DROP
연결 테스트
dig로 테스트
dig 명령을 사용하여 Cloudflare에 대한 연결을 테스트할 수 있습니다.
# IPv4 주소 확인
dig A region1.v2.argotunnel.com
# IPv6 주소 확인
dig AAAA region1.v2.argotunnel.com
PowerShell로 테스트
Windows에서는 dig를 사용할 수 없는 경우 PowerShell 명령을 사용할 수 있습니다.
# DNS 테스트
Resolve-DnsName -Name _v2-origintunneld._tcp.argotunnel.com SRV
# 포트 테스트
tnc region1.v2.argotunnel.com -port 7844