Zoom の推奨確認
Zoom によると VPN 利用時は、以下の通信に対して VPN を通らないように Split Tunnel のリストに追加することが推奨されています。
When VPN services are used, to optimize the traffic flow Zoom recommends enabling Split Tunneling with the following:
- Allow UDP 8801-8810
- Allow TCP 443
- Destination to Zoom specific IP ranges (https://assets.zoom.us/docs/ipranges/ZoomMeetings.txt) and/or *.zoom.us.
Cloudflare Zero Trust で Split Tunnel エントリを追加するには?
上記の IP リストを見ると、300 以上の IP レンジを登録する必要があります。
% curl -s https://assets.zoom.us/docs/ipranges/ZoomMeetings.txt | grep -c ''
310
ただ 2023年4月28日現在では、Cloudflare Zero Trust ダッシュボードからバルクでインポートする処理は見当たらないため、API から追加する方法が効率的です。
Split Tunnel エントリ追加 API
PATCH
メソッドがないため、PUT
メソッドによる上書きが必要です。
Split Tunnel のデフォルトエントリ を含めて、PUT
するのが以下のコマンドになります。
返答として、大量のエントリと "success":true
が返ってきていれば OK です。
export ACCOUNT_ID='YOUR_ACCOUNT_ID'
export EMAIL='YOUR_EMAIL'
export APIKEY='YOUR_API_KEY'
curl -s https://assets.zoom.us/docs/ipranges/ZoomMeetings.txt | jq -Rs '[ split("\n")[] | select(length > 0) | split(",") | {address: .[0]} ] | . + [{"address":"10.0.0.0/8"},{"address":"100.64.0.0/10"},{"address":"169.254.0.0/16"},{"address":"172.16.0.0/12"},{"address":"192.0.0.0/24"},{"address":"192.168.0.0/16"},{"address":"224.0.0.0/24"},{"address":"240.0.0.0/4"},{"address":"255.255.255.255/32"},{"address":"fe80::/10"},{"address":"fd00::/8"},{"address":"ff01::/16"},{"address":"ff02::/16"},{"address":"ff03::/16"},{"address":"ff04::/16"},{"address":"ff05::/16"}]' | \
curl -X PUT https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/policy/exclude \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $APIKEY" \
-H "Content-Type: application/json" \
--data @-
API 操作が完了すると、エントリの数が 326(デフォルトエントリ 16 + Zoom IP レンジ 310)になっていることが確認できます。
プロファイル指定
先ほどの例はデフォルトプロファイルに対しての設定になります。
デフォルトプロファイル以外にも、プロファイルがある場合には
以下の API からプロファイルの ID を取得し、
% curl -sX GET https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/policies \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $APIKEY" \
-H "Content-Type: application/json" | jq -r '.result|map(. |= {policy_id, enabled, name, match, precedence, default}) |.[]'
{
"policy_id": "f4475b76-1f90-489d-872a-f500a385cbdc",
"enabled": true,
"name": "Office User",
"match": "network in {\"Tokyo Office Network\"}",
"precedence": 1000,
"default": false
}
{
"policy_id": null,
"enabled": true,
"name": null,
"match": null,
"precedence": null,
"default": true
}
ID を指定してエントリ追加のコマンドを実施すれば、個別のプロファイルにも対応できます
export POLICY_ID='f4475b76-1f90-489d-872a-f500a385cbdc'
curl -s https://assets.zoom.us/docs/ipranges/ZoomMeetings.txt | jq -Rs '[ split("\n")[] | select(length > 0) | split(",") | {address: .[0]} ] | . + [{"address":"10.0.0.0/8"},{"address":"100.64.0.0/10"},{"address":"169.254.0.0/16"},{"address":"172.16.0.0/12"},{"address":"192.0.0.0/24"},{"address":"192.168.0.0/16"},{"address":"224.0.0.0/24"},{"address":"240.0.0.0/4"},{"address":"255.255.255.255/32"},{"address":"fe80::/10"},{"address":"fd00::/8"},{"address":"ff01::/16"},{"address":"ff02::/16"},{"address":"ff03::/16"},{"address":"ff04::/16"},{"address":"ff05::/16"}]' | \
curl -X PUT https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/policy/$POLICY_ID/exclude \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $APIKEY" \
-H "Content-Type: application/json" \
--data @-
【参考】Cloudflare Zero Trust の Split Tunnel のデフォルトエントリ
こちらになります。