您可以通过阻止所有入站流量并仅允许来自 cloudflared 的出站流量,从而利用 Cloudflare Tunnel 实现积极的安全模型。只有您隧道配置中指定的服务才会暴露给外部世界。
可以针对防火墙内部的出站流量配置以下参数。
如何配置防火墙取决于防火墙类型:
- 如果您的防火墙支持基于域的规则(FQDN 允许列表),您可以允许发往以下所列主机名的出站连接。
- 如果您的防火墙需要基于 IP 的规则,请允许发往每个域所有列出 IP 地址的出站连接。
确保针对 TCP 和 UDP 协议均允许端口 7844(分别用于 http2 和 quic)。
cloudflared 在端口 7844 上连接到 Cloudflare 的全球网络。要使用 Cloudflare Tunnel,您的防火墙必须允许在端口 7844 上发往以下目的地的出站连接(如果使用 quic 协议,则通过 UDP;如果使用 http2 协议,则通过 TCP)。
| IPv4 | IPv6 | 端口 | 协议 |
|---|---|---|---|
198.41.192.167 198.41.192.67 198.41.192.57 198.41.192.107 198.41.192.27 198.41.192.7 198.41.192.227 198.41.192.47 198.41.192.37 198.41.192.77 |
2606:4700:a0::1 2606:4700:a0::2 2606:4700:a0::3 2606:4700:a0::4 2606:4700:a0::5 2606:4700:a0::6 2606:4700:a0::7 2606:4700:a0::8 2606:4700:a0::9 2606:4700:a0::10 |
7844 | TCP/UDP (http2/quic) |
| IPv4 | IPv6 | 端口 | 协议 |
|---|---|---|---|
198.41.200.13 198.41.200.193 198.41.200.33 198.41.200.233 198.41.200.53 198.41.200.63 198.41.200.113 198.41.200.73 198.41.200.43 198.41.200.23 |
2606:4700:a8::1 2606:4700:a8::2 2606:4700:a8::3 2606:4700:a8::4 2606:4700:a8::5 2606:4700:a8::6 2606:4700:a8::7 2606:4700:a8::8 2606:4700:a8::9 2606:4700:a8::10 |
7844 | TCP/UDP (http2/quic) |
如果您的防火墙强制执行服务器名称指示 (SNI),还要允许通过端口 7844 访问这些主机名:
| 主机名 | 端口 | 协议 |
|---|---|---|
_v2-origintunneld._tcp.argotunnel.com |
7844 | TCP (http2) |
cftunnel.com |
7844 | TCP/UDP (http2/quic) |
h2.cftunnel.com |
7844 | TCP (http2) |
quic.cftunnel.com |
7844 | UDP (quic) |
使用 --region us 标志时,请确保您的防火墙允许通过端口 7844 (TCP/UDP) 发送到这些美国区域(US-region)目标的出站连接。
| IPv4 | IPv6 | 端口 | 协议 |
|---|---|---|---|
198.41.218.1 198.41.218.2 198.41.218.3 198.41.218.4 198.41.218.5 198.41.218.6 198.41.218.7 198.41.218.8 198.41.218.9 198.41.218.10 |
2606:4700:a1::1 2606:4700:a1::2 2606:4700:a1::3 2606:4700:a1::4 2606:4700:a1::5 2606:4700:a1::6 2606:4700:a1::7 2606:4700:a1::8 2606:4700:a1::9 2606:4700:a1::10 |
7844 | TCP/UDP (http2/quic) |
| IPv4 | IPv6 | 端口 | 协议 |
|---|---|---|---|
198.41.219.1 198.41.219.2 198.41.219.3 198.41.219.4 198.41.219.5 198.41.219.6 198.41.219.7 198.41.219.8 198.41.219.9 198.41.219.10 |
2606:4700:a9::1 2606:4700:a9::2 2606:4700:a9::3 2606:4700:a9::4 2606:4700:a9::5 2606:4700:a9::6 2606:4700:a9::7 2606:4700:a9::8 2606:4700:a9::9 2606:4700:a9::10 |
7844 | TCP/UDP (http2/quic) |
在 FedRAMP High ↗ 环境中部署 cloudflared 时,cloudflared 会根据 Tunnel 令牌自动路由到 FedRAMP 数据中心。确保您的防火墙允许通过端口 7844 (TCP/UDP) 发送到这些 FedRAMP 特定目标的出站连接。
| IPv4 | IPv6 | 端口 | 协议 |
|---|---|---|---|
162.159.234.1 162.159.234.2 162.159.234.3 162.159.234.4 162.159.234.5 162.159.234.6 162.159.234.7 162.159.234.8 162.159.234.9 162.159.234.10 |
2a06:98c1:4d::1 2a06:98c1:4d::2 2a06:98c1:4d::3 2a06:98c1:4d::4 2a06:98c1:4d::5 2a06:98c1:4d::6 2a06:98c1:4d::7 2a06:98c1:4d::8 2a06:98c1:4d::9 2a06:98c1:4d::10 |
7844 | TCP/UDP (http2/quic) |
| IPv4 | IPv6 | 端口 | 协议 |
|---|---|---|---|
172.64.234.1 172.64.234.2 172.64.234.3 172.64.234.4 172.64.234.5 172.64.234.6 172.64.234.7 172.64.234.8 172.64.234.9 172.64.234.10 |
2606:4700:f6::1 2606:4700:f6::2 2606:4700:f6::3 2606:4700:f6::4 2606:4700:f6::5 2606:4700:f6::6 2606:4700:f6::7 2606:4700:f6::8 2606:4700:f6::9 2606:4700:f6::10 |
7844 | TCP/UDP (http2/quic) |
打开端口 443 可启用一些可选功能。如果未允许这些连接,可能会引发日志错误,但 cloudflared 仍将正确运行。
允许 cloudflared 查询是否有可用的软件更新。
| IPv4 | IPv6 | Port | Protocols |
|---|---|---|---|
104.19.192.29 104.19.192.177 104.19.192.175 104.19.193.29 104.19.192.174 104.19.192.176 |
2606:4700:300a::6813:c0af 2606:4700:300a::6813:c01d 2606:4700:300a::6813:c0ae 2606:4700:300a::6813:c11d 2606:4700:300a::6813:c0b0 2606:4700:300a::6813:c0b1 |
443 | TCP (HTTPS) |
允许 cloudflared 查询是否有可用的软件更新。
| IPv4 | IPv6 | Port | Protocols |
|---|---|---|---|
104.18.25.129 104.18.24.129 |
2606:4700::6812:1881 2606:4700::6812:1981 |
443 | TCP (HTTPS) |
允许 cloudflared 下载最新版本并执行软件更新。
| IPv4 | IPv6 | Port | Protocols |
|---|---|---|---|
| GitHub's IPs ↗ | GitHub's IPs ↗ | 443 | TCP (HTTPS) |
允许 cloudflared 验证 Access JWT。仅在启用 access 设置时才需要。
| IPv4 | IPv6 | Port | Protocols |
|---|---|---|---|
104.19.194.29 104.19.195.29 |
2606:4700:300a::6813:c31d 2606:4700:300a::6813:c21d |
443 | TCP (HTTPS) |
允许 cloudflared 向 Cloudflare 报告后量子密钥交换 ↗错误。
| IPv4 | IPv6 | Port | Protocols |
|---|---|---|---|
104.18.4.64 104.18.5.64 |
2606:4700::6812:540 2606:4700::6812:440 |
443 | TCP (HTTPS) |
| IPv4 | IPv6 | Port | Protocols |
|---|---|---|---|
| Not applicable | Not applicable | Not applicable | Not applicable |
对此主机名执行 TXT 记录的 DNS 查询允许 cloudflared 确定在通过 quic 协议连接时使用哪个版本的 UDP 数据报。如果您的防火墙按 FQDN 过滤出站 DNS 查询,您可能需要允许对该域的查询,以确保最佳的 quic 性能。
如果您在云提供商的虚拟机 (VM) 实例上托管您的服务,您可以设置实例级的防火墙规则来阻止所有入站流量,并仅允许出站流量。例如,在 Google Cloud Platform (GCP) 上,您可以删除所有入站规则,仅保留相关的出站规则。这是因为 GCP 的防火墙会拒绝入站流量,除非它匹配一条显式的规则。
或者,您可以使用操作系统(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 -
丢弃所有其他入站流量。
sudo iptables -A INPUT -j DROP -
设置防火墙规则后,使用此命令检查当前的
iptables设置:sudo iptables -L -
运行您的隧道并检查所有配置的服务是否仍可通过隧道访问,但不能通过服务器的外部 IP 地址访问。
-
默认情况下,您通过
iptables命令添加的规则仅存储在内存中,在重启时不会持久存在。根据您的 Linux 发行版,有许多不同的方法可以保存和重新加载您的防火墙规则。例如,在 Debian 上,您可以使用iptables-persistent↗ 软件包:sudo apt install iptables-persistent sudo netfilter-persistent save
要测试您与 Cloudflare 的连接性,您可以使用 dig 命令来查询上面列出的主机名。注意,cloudflared 默认使用 IPv4 进行连接。
dig A region1.v2.argotunnel.com;; ANSWER SECTION:
region1.v2.argotunnel.com. 86400 IN A 198.41.192.167
region1.v2.argotunnel.com. 86400 IN A 198.41.192.67
region1.v2.argotunnel.com. 86400 IN A 198.41.192.57
region1.v2.argotunnel.com. 86400 IN A 198.41.192.107
region1.v2.argotunnel.com. 86400 IN A 198.41.192.27
region1.v2.argotunnel.com. 86400 IN A 198.41.192.7
region1.v2.argotunnel.com. 86400 IN A 198.41.192.227
region1.v2.argotunnel.com. 86400 IN A 198.41.192.47
region1.v2.argotunnel.com. 86400 IN A 198.41.192.37
region1.v2.argotunnel.com. 86400 IN A 198.41.192.77
...dig AAAA region1.v2.argotunnel.com...
;; ANSWER SECTION:
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::1
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::2
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::3
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::4
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::5
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::6
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::7
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::8
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::9
region1.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a0::10
...dig A region2.v2.argotunnel.com;; ANSWER SECTION:
region2.v2.argotunnel.com. 86400 IN A 198.41.200.13
region2.v2.argotunnel.com. 86400 IN A 198.41.200.193
region2.v2.argotunnel.com. 86400 IN A 198.41.200.33
region2.v2.argotunnel.com. 86400 IN A 198.41.200.233
region2.v2.argotunnel.com. 86400 IN A 198.41.200.53
region2.v2.argotunnel.com. 86400 IN A 198.41.200.63
region2.v2.argotunnel.com. 86400 IN A 198.41.200.113
region2.v2.argotunnel.com. 86400 IN A 198.41.200.73
region2.v2.argotunnel.com. 86400 IN A 198.41.200.43
region2.v2.argotunnel.com. 86400 IN A 198.41.200.23
...dig AAAA region2.v2.argotunnel.com...
;; ANSWER SECTION:
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::1
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::2
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::3
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::4
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::5
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::6
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::7
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::8
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::9
region2.v2.argotunnel.com. 86400 IN AAAA 2606:4700:a8::10
...在 Windows 上,如果 dig 不可用,您可以使用 PowerShell 命令。
测试 DNS:
Resolve-DnsName -Name _v2-origintunneld._tcp.argotunnel.com SRVName Type TTL Section NameTarget Priority Weight Port
---- ---- --- ------- ---------- -------- ------ ----
_v2-origintunneld._tcp.argotunnel.com SRV 112 Answer region2.v2.argotunnel.com 2 1 7844
_v2-origintunneld._tcp.argotunnel.com SRV 112 Answer region1.v2.argotunnel.com 1 1 7844测试端口:
tnc region1.v2.argotunnel.com -port 443ComputerName : region1.v2.argotunnel.com
RemoteAddress : 198.41.192.227
RemotePort : 443
InterfaceAlias : Ethernet
SourceAddress : 10.0.2.15
TcpTestSucceeded : Truetnc region1.v2.argotunnel.com -port 7844ComputerName : region1.v2.argotunnel.com
RemoteAddress : 198.41.192.227
RemotePort : 7844
InterfaceAlias : Ethernet
SourceAddress : 10.0.2.15
TcpTestSucceeded : True