目的
以下の通信を許可すれば、WARP クライアントを使って Cloudflare Zero Trust を経由して通信ができることを Windows ファイアウォールを構成して確認します。
Windows ファイアウォールの構成
すべての「送信接続」を「ブロック」
下記リンクの allowlist での許可形式を使って進めます。
プロファイルのすべてで「送信接続」を「ブロック」に変更します。
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound
「破棄されたパケットをログに記録する」ように保存先ファイル名も含めてログ設定します。
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging filename C:\Windows\System32\LogFiles\Filrewall\pfirewall.log
wf.msc
で「セキュリティが強化されたWindowsファイアウォール」を開くと、コマンド設定を確認しながら進められます。
デフォルトで有効な「Microsoft Edge」ブラウザの送信規則を「無効化」します。
netsh advfirewall firewall set rule name="Microsoft Edge" dir=out new enable=no
そのときのエラー画面は以下のようになります。
Client orchestration API を許可
以下のコマンドで Client orchestration API を許可します。
netsh advfirewall firewall add rule ^
name="Cloudflare WARP Client orchestration API" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700:7::a29f:8969,2606:4700:7::a29f:8a69,162.159.137.105,162.159.138.105 ^
protocol=tcp remoteport=443
Client authentication endpoint を許可
認証に必要なエンドポイントを許可します。
この他にリダイレクト先 IdP へのアクセスに必要な通信も許可が必要です。
>nslookup <your-team-name>.cloudflareaccess.com
サーバー: warp-svc
Address: 127.0.2.2
権限のない回答:
名前: <your-team-name>.cloudflareaccess.com
Addresses: 2606:4700:300a::6813:c21d
2606:4700:300a::6813:c31d
104.19.195.29
104.19.194.29
netsh advfirewall firewall add rule ^
name="<your-team-name>.cloudflareaccess.com" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700:300a::6813:c21d,2606:4700:300a::6813:c31d,104.19.195.29,104.19.194.29 ^
protocol=tcp remoteport=443
WARP ingress IP を許可
以下のコマンドで WARP ingress IP を許可します。
netsh advfirewall firewall add rule ^
name="Cloudflare WARP ingress IP" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700:100::/48,162.159.193.0/24 ^
protocol=udp remoteport=2408,500,1701,4500
エラー画面は解消されたものの、Disconnected となり接続されません。
DoH IP を許可
以下のコマンドで DoH IP を許可します。
netsh advfirewall firewall add rule ^
name="Cloudflare WARP DoH IP" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700:4700::1111,2606:4700:4700::1001,162.159.36.1,162.159.46.1 ^
protocol=tcp remoteport=443
この時点で「接続済み」となります。
API Connectivity は「接続されていません」の状態ですが、このままでも使い始めることができます。
参考:api.cloudflareclient.com
を許可
API Connectivity チェックに使われているので、オプショナルで許可します。
netsh advfirewall firewall add rule ^
name="api.cloudflareclient.com" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700::6810:50e6,2606:4700::6811:8fa3,104.16.80.230,104.17.143.163 ^
protocol=tcp remoteport=443
参考:connectivity.cloudflareclient.com
を許可
トンネル内部での Connectivity チェックに使われているので、オプショナルで許可します。
netsh advfirewall firewall add rule ^
name="connectivity.cloudflareclient.com" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700:7::a29f:8a41,2606:4700:7::a29f:8941,162.159.138.65,162.159.137.65 ^
protocol=tcp remoteport=443
warp-diag
コマンドで生成される zip
ファイル内のログで以下のように通信されていることが確認できます。
====================================================================
Trace Result
====================================================================
Inside Tunnel
-------------
Trace 'connectivity.cloudflareclient.com' via 2606:4700:7::a29f:8941:
fl=382f245
h=connectivity.cloudflareclient.com
ip=2a09:bac5:4433:efa::17e:f5
ts=1715233957.54
visit_scheme=https
uag=
colo=NRT
sliver=none
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=on
gateway=on
rbi=off
kex=P-256
Trace 'connectivity.cloudflareclient.com' via 2606:4700:7::a29f:8a41:
fl=382f245
h=connectivity.cloudflareclient.com
ip=2a09:bac5:4433:efa::17e:f5
ts=1715233957.578
visit_scheme=https
uag=
colo=NRT
sliver=none
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=on
gateway=on
rbi=off
kex=P-256
Trace 'connectivity.cloudflareclient.com' via 162.159.137.65:
fl=382f245
h=connectivity.cloudflareclient.com
ip=104.28.157.31
ts=1715233957.623
visit_scheme=https
uag=
colo=NRT
sliver=none
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=on
gateway=on
rbi=off
kex=P-256
Trace 'connectivity.cloudflareclient.com' via 162.159.138.65:
fl=382f245
h=connectivity.cloudflareclient.com
ip=104.28.157.31
ts=1715233957.664
visit_scheme=https
uag=
colo=NRT
sliver=none
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=on
gateway=on
rbi=off
kex=P-256
参考:engage.cloudflareclient.com
を許可
トンネル外部での Connectivity チェックに使われているので、オプショナルで許可します。
netsh advfirewall firewall add rule ^
name="engage.cloudflareclient.com" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700:d0::a29f:c001,162.159.192.1,2606:4700:100::/48,162.159.193.0/24 ^
protocol=tcp remoteport=443
warp-diag
コマンドで生成される zip
ファイル内のログで以下のように通信されていることが確認できます。
Outside Tunnel
--------------
Trace 'engage.cloudflareclient.com' via 162.159.36.1:
fl=448f117
h=engage.cloudflareclient.com
ip=x.x.x.x
ts=1715233957.754
visit_scheme=https
uag=
colo=NRT
sliver=010-tier1
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=off
gateway=off
rbi=off
kex=P-256
Trace 'engage.cloudflareclient.com' via 2606:4700:4700::1111:
fl=408f138
h=engage.cloudflareclient.com
ip=x:x:x:x:x:x:x:x
ts=1715233957.814
visit_scheme=https
uag=
colo=NRT
sliver=010-tier1
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=off
gateway=off
rbi=off
kex=P-256
Trace 'engage.cloudflareclient.com' via 162.159.193.x:
fl=22f293
h=engage.cloudflareclient.com
ip=x.x.x.x
ts=1715233957.876
visit_scheme=https
uag=
colo=NRT
sliver=010-tier1
http=http/1.1
loc=JP
tls=TLSv1.3
sni=plaintext
warp=off
gateway=off
rbi=off
kex=P-256
参考:Tunnel Latency チェックを許可
warp-diag
コマンドで生成される zip
ファイル内のログで以下のようなエラーが確認できます。
2024-05-09T02:06:12Z|ERROR|Ping failed to WARP endpoint 162.159.193.x |Warp.UI.Connectivity.StatisticsService|`
Tunnel Latency チェックに使われているので、オプショナルで許可します。
netsh advfirewall firewall add rule ^
name="Cloudflare WARP Tunnel Latency Check" ^
dir=out action=allow enable=yes ^
remoteip=162.159.193.0/24 ^
protocol=icmpv4
参考:help.teams.cloudflare.com
を許可
トラブルシューティングに役立つ help.teams.cloudflare.com
への通信を、オプショナルで許可します。
netsh advfirewall firewall add rule ^
name="help.teams.cloudflare.com" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700::6811:815,2606:4700::6811:915,104.17.8.21,104.17.9.21 ^
protocol=tcp remoteport=443
DNS resolver のテストに every1dns.net
が使用されます。
netsh advfirewall firewall add rule ^
name="every1dns.net" ^
dir=out action=allow enable=yes ^
remoteip=2803:f800:53::1,2a06:98c1:52::1,162.159.61.1,172.64.41.1 ^
protocol=tcp remoteport=443
IPv6 接続確認に ipv6.teams.cloudflare.com
が使用されます。
netsh advfirewall firewall add rule ^
name="ipv6.teams.cloudflare.com" ^
dir=out action=allow enable=yes ^
remoteip=2606:4700::6810:6e15 ^
protocol=tcp remoteport=443
参考:Digital Experience Monitoring テストを許可
Digital Experience Monitoring テストを構成している場合は許可します。
netsh advfirewall firewall add rule ^
name="Allow WARP DEX Tests" ^
dir=out action=allow enable=yes ^
program="C:\Program Files\Cloudflare\Cloudflare WARP\warp-dex.exe" ^
protocol=any
参考:トラブルシュート
以下の要領でプロセス ID を見つけて、どのプロセスのどの通信かを確認する方法があります。
netstat -ano > netstat.txt
tasklist > tasklist.txt
また、以下の powershell
コマンドで Windows ファイアウォールログを tail -f
できます。
#Version: 1.5
#Software: Microsoft Windows Firewall
#Time Format: Local
#Fields: date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path
2024-05-09 16:13:02 DROP TCP 100.96.0.20 18.154.144.92 59946 80 - - - SEND
2024-05-09 16:13:03 DROP TCP 2606:4700:110:8d2e:5414:eca8:25fb:6b59 2001:470:1:18::115 59947 80 - - - SEND
2024-05-09 16:13:03 DROP TCP 100.96.0.20 216.218.228.115 59948 80 - - - SEND
2024-05-09 16:13:03 DROP TCP 2606:4700:110:8d2e:5414:eca8:25fb:6b59 2001:470:1:18::115 59949 80 - - - SEND
...
参考:その他諸々の通信許可
Cloudflare WARP の通信を取り出して見たいため、その他諸々の許可を入れます。
ローカル・プライベート・マルチキャスト・CGNATアドレスを許可します。
netsh advfirewall firewall add rule ^
name="Allow Local, RFC 1918, Multicast and CGNAT IP" ^
dir=out action=allow enable=yes ^
remoteip=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,224.0.0.0/4,100.96.0.0/12 ^
protocol=any
IPv6 リンクローカルアドレス fe80::/10
とユニークローカルアドレス fc00::/7
を許可します。
netsh advfirewall firewall add rule ^
name="Allow IPv6 misc" ^
dir=out action=allow enable=yes ^
remoteip=fe80::/10,fd00::/8,ff02::1:3,ff02::c,ff02::16,ff02::fb ^
protocol=any
whois
で調べて Microsoft だった IP レンジを許可します。
netsh advfirewall firewall add rule ^
name="Allow Microsoft IP" ^
dir=out action=allow enable=yes ^
remoteip=2603:1000::/24,2620:1EC::/36,20.33.0.0/16,20.36.0.0/14,20.48.0.0/12,20.40.0.0/13,20.34.0.0/15,20.128.0.0/16,20.64.0.0/10,13.96.0.0/13,13.64.0.0/11,13.104.0.0/14,20.180.0.0/14,20.184.0.0/13,52.152.0.0/13,52.160.0.0/11,52.145.0.0/16,52.146.0.0/15,52.148.0.0/14,40.126.0.0/18,40.96.0.0/12,40.74.0.0/15,40.76.0.0/14,40.120.0.0/14,40.125.0.0/17,40.112.0.0/13,40.80.0.0/12,40.124.0.0/16,4.240.0.0/12,20.192.0.0/10,204.79.195.0/24,204.79.196.0/23,4.144.0.0/12,51.104.0.0/15,68.218.0.0/15,68.220.0.0/15,40.64.0.0/13,104.40.0.0/13,51.10.0.0/15,20.0.0.0/11,52.224.0.0/11 ^
protocol=any
Microsoft で使われていると思われる CDN ベンダの IP レンジを許可します。
netsh advfirewall firewall add rule ^
name="Ignore CDN vendor IP" ^
dir=out action=allow enable=yes ^
remoteip=2600:1400::/24,2606:2800::/32,2a04:4e40::/29,2402:6800::/32,2600:1900::/28,2404:6800::/32,23.192.0.0/11,23.64.0.0/14,23.32.0.0/11,199.232.0.0/16,111.119.27.0/24,142.250.0.0/15,152.176.0.0/12,152.192.0.0/13,117.18.232.0/24,151.139.0.0/16,118.215.176.0/20,35.184.0.0/13 ^
protocol=any
参考リンク