LoginSignup
0
1

Cloudflare WARP に必要な通信を Windows ファイアウォールを構成して確認する

Last updated at Posted at 2024-05-09

目的

以下の通信を許可すれば、WARP クライアントを使って Cloudflare Zero Trust を経由して通信ができることを Windows ファイアウォールを構成して確認します。

Windows ファイアウォールの構成

すべての「送信接続」を「ブロック」

下記リンクの allowlist での許可形式を使って進めます。

プロファイルのすべてで「送信接続」を「ブロック」に変更します。

cmd
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound

「破棄されたパケットをログに記録する」ように保存先ファイル名も含めてログ設定します。

cmd
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging filename C:\Windows\System32\LogFiles\Filrewall\pfirewall.log

wf.msc で「セキュリティが強化されたWindowsファイアウォール」を開くと、コマンド設定を確認しながら進められます。

image.png

デフォルトで有効な「Microsoft Edge」ブラウザの送信規則を「無効化」します。

cmd
netsh advfirewall firewall set rule name="Microsoft Edge" dir=out new enable=no 

そのときのエラー画面は以下のようになります。

image.png

Client orchestration API を許可

以下のコマンドで Client orchestration API を許可します。

cmd
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 へのアクセスに必要な通信も許可が必要です。

cmd
>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
cmd
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 を許可します。

cmd
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 となり接続されません。

image.png

DoH IP を許可

以下のコマンドで DoH IP を許可します。

cmd
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 は「接続されていません」の状態ですが、このままでも使い始めることができます。

image.png

参考:api.cloudflareclient.com を許可

API Connectivity チェックに使われているので、オプショナルで許可します。

cmd
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

image.png

参考:connectivity.cloudflareclient.com を許可

トンネル内部での Connectivity チェックに使われているので、オプショナルで許可します。

cmd
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 ファイル内のログで以下のように通信されていることが確認できます。

connectivity.txt
====================================================================
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 チェックに使われているので、オプショナルで許可します。

cmd
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 ファイル内のログで以下のように通信されていることが確認できます。

connectivity.txt
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 ファイル内のログで以下のようなエラーが確認できます。

gui-log.log
2024-05-09T02:06:12Z|ERROR|Ping failed to WARP endpoint 162.159.193.x |Warp.UI.Connectivity.StatisticsService|`

Tunnel Latency チェックに使われているので、オプショナルで許可します。

cmd
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

image.png

参考:help.teams.cloudflare.com を許可

トラブルシューティングに役立つ help.teams.cloudflare.com への通信を、オプショナルで許可します。

cmd
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 が使用されます。

cmd
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 が使用されます。

cmd
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 テストを構成している場合は許可します。

cmd
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 を見つけて、どのプロセスのどの通信かを確認する方法があります。

cmd
netstat -ano > netstat.txt
tasklist > tasklist.txt

また、以下の powershell コマンドで Windows ファイアウォールログを tail -f できます。

C:\Windows\System32\LogFiles\Filrewall\pfirewall.log
#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アドレスを許可します。

cmd
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 を許可します。

cmd
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 レンジを許可します。

cmd
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 レンジを許可します。

cmd
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

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1