T Techclick ← All lessons
Zscaler · ZIA · Traffic flow · Interactive lesson

ZIA traffic flow — user to internet, with proof

The ticket says “internet is down.” The laptop can ping 8.8.8.8. Half the time the user is not on Zscaler at all. The other half they are on a Public Service Edge, but SSL is Do Not Inspect so later engines never see the body. This lesson walks one HTTPS request hop by hop, then proves the hop on ip.zscaler.com and Web Insights.

18 min read · L2 primary · Quiz at end

After this page you can

Quick answer (say this out loud)

ZIA is an inline Public Service Edge — a full proxy, not a tap. Traffic must be forwarded (Client Connector, GRE, IPSec, or PAC). The edge opens two TLS sessions (client↔PSE and PSE↔server), then SSMA inspects once in shared memory. Web-module order is Firewall → SSL Inspection → ATP → AV → Cloud App Control → URL Control → File Type → DLP → Sandbox; the first violation stops the rest. Prove it: ip.zscaler.com shows the PSE virtual IP and hostname; Logs → Insights → Web Insights → Logs shows User, Location, Traffic Forwarding, SSL Inspected (Yes/No), and Policy Action.

Hero · user to ZIA to internet
Laptop user connects through a ZIA Public Service Edge before reaching the internet
The user never talks to the destination first. The Public Service Edge terminates the client session, inspects, then opens a new session to the internet.

Why the hop order matters

Legacy networks backhaul the branch to a stack of boxes, then hairpin out. ZIA flips that: you forward the packet to a Public Service Edge and break out from there. If the packet never arrives, no policy exists. If it arrives but SSL is Do Not Inspect, later engines see ciphertext.

Help’s own example: File Type Control that blocks PDFs fires before DLP. A PDF with SSNs is blocked as a file type. DLP never runs, so the auditor is never notified. Order is not decoration — it is why the ticket looks “wrong.”

What forwarding does

Steers the packet to a Public Service Edge. No steer = direct internet. ZIA never saw it.

What the PSE does

Full proxy. Firewall module first for outbound web, then the web module. SSMA scans once; engines act in parallel.

Mental model — five hops

Memorize five parts before you open Admin. Most “Zscaler is down” tickets fail on hop 2 or hop 4.

  1. User / device — browser or app. Identity is still empty until authentication (or a Location fallback).
  2. Forwarding — Z-Tunnel, GRE, IPSec, or PAC. This is how the packet reaches ZIA.
  3. Public Service Edge — the inline proxy (Help still maps this to the old ZEN name). Packets sit in shared memory.
  4. SSL + policy engines — decrypt if the SSL rule says Inspect, then apply the web-module order.
  5. Internet / SaaS — a new TLS session from the PSE to the destination. The reply returns to the same edge.
Flow 1 · five hops
1 · User browser / app 2 · Forward ZCC / GRE / PAC 3 · Public SE inline proxy shared memory · SSMA 4 · SSL + policy two TLS legs 5 · Internet Reply comes back to the same Public Service Edge, then down the existing forward path. Proof: ip.zscaler.com (hop 3) · Web Insights (hops 4–5)

Read left → right. Policy does not start until hop 3. DLP does not start until hop 4 says Inspect.

Say this out loud

Forwarding is transport. The Public Service Edge is the proxy. SSL Inspection is the door that lets later engines read the body. Logs close the ticket — not a green VPN icon.

Path · five stages
Five-stage journey: User, Forward, Edge, Inspect, Internet
Same five hops as the SVG. Use the diagram in interviews; use ip.zscaler.com and Web Insights in the lab.

How traffic reaches the PSE

Help’s default mix is tunneling + PAC files + Surrogate IP + Zscaler Client Connector. Pick the method from who owns the device and whether you need all ports — not from what the last project used.

Flow 2 · choose forwarding
Who owns the path to the Public Service Edge? Managed laptop Zscaler Client Connector prefer Z-Tunnel 2.0 Office / branch GRE (or IPSec if /47 blocked) two DCs + Location Browser only PAC file web ports, no agent Every method still lands on a Public Service Edge. Prove with ip.zscaler.com.

Diamond first. Cloud workloads use Cloud Connector — same idea, different owner.

MethodUse whenWhat it carriesHelp note
Z-Tunnel 2.0 (Client Connector)Managed laptops and phonesAll ports and protocols over DTLS UDP/443 or TLS TCP/443iOS: TLS only. Can fall back to TLS if DTLS is unstable.
Z-Tunnel 1.0Fallback / proxied web onlyCONNECT, typically ports 80/443Behaves like a classic proxy. Not a full tunnel.
GREOffice with protocol 47 allowedSite internet to two Public Service EdgesHelp: two tunnels, two data centers. Up to 1 Gbps per tunnel when internal IPs are not behind NAT.
IPSec IKEv2GRE blocked, or the path must be encryptedSame site goal over IKE + ESPHelp: ~400 Mbps per public source IP. Bind VPN credentials to a Location.
PACBrowser-only, or to fill gapsWhat the PAC return statement sends to a proxy hostConfirm with ip.zscaler.com. Pair with tunnels + Client Connector.
Hard words before the runbook

Public Service Edge (PSE) is the inline proxy that inspects (Help still documents the older ZEN name). SSMA is Single-Scan Multi-Action: one pass in shared memory, many engines. My IP Address is ip.zscaler.com. SSL Inspected is the Web Insights Yes/No that tells you whether hop 4 actually decrypted. Traffic Forwarding is the log column that names the method that delivered the session.

Inside the Public Service Edge

Primary source: Zscaler Help ZIA Policy Leading Practices Guide — “Zscaler Service Modules” and “Order of Operations.”

Each Public Service Edge has a firewall module and a web module. Outbound web (HTTP/HTTPS on 80/443 or other HTTP ports) hits the firewall module first. If it is not blocked there, it enters the web module. Outbound non-web skips the web module. The reply for a web GET/POST is evaluated again on the way in.

Flow 3 · engines inside the PSE
Inbound session from forwarding Firewall module block here = both logs Blocked Web module (HTTP/HTTPS only) if this blocks later, Firewall Insights still says Allowed SSL Inspect? ATP AV Cloud App Control URL File Type DLP Sandbox SSL Inspection = two TLS tunnels: client ↔ PSE and PSE ↔ server Zscaler intermediate CA, or your custom intermediate. Weekly-rotated Zscaler Intermediate Root CA (zscaler.net) (t) signs the server cert. First web-module violation blocks immediately. Later engines do not run. Help example: File Type blocks a PDF → DLP never sees the SSNs → auditor is not notified.

Firewall first, then SSL, then the rest. If SSL is Do Not Inspect, ATP / AV / DLP / Sandbox are blind on that HTTPS body.

What you seeWhat it means
Firewall Insights Blocked and Web Insights BlockedThe firewall module stopped it. Web engines never ran.
Firewall Insights Allowed and Web Insights BlockedFirewall passed it. A later web policy (URL, Cloud App, File Type, DLP, …) stopped it. This is expected, not a log bug.
Web Insights SSL Inspected = NoThe SSL/TLS Inspection rule was Do Not Inspect (or the session could not be intercepted). Later content engines did not see plaintext.
No Web Insights row at allThe session likely never reached a Public Service Edge — start at ip.zscaler.com, not at URL Filtering.
Do not invent a sixth hop

There is no separate “return tunnel.” The destination answers the PSE. The PSE inspects the reply in the web module and writes it back on the client TLS leg. If the user “gets the page but downloads are empty,” you are still on hop 4 — look at File Type and DLP on the response, not at GRE.

Proof runbook — Side A / B / C

Primary source: Zscaler Help Verifying a User’s Traffic is Being Forwarded to the Zscaler Service, plus About SSL/TLS Inspection Policy and Web Insights Logs: Columns.

Side A — Endpoint: is this user on a Public Service Edge?

  1. Open My IP Address

    On the user’s device, browse https://ip.zscaler.com. Help calls this the My IP Address service. You want the page that says the traffic is going through the Zscaler service — not a raw public-IP lookup.

  2. Read the two identity fields

    Write down the virtual IP address of the Public Service Edge and the Zscaler hostname of that edge. Those two fields are hop 3. If they are missing, forwarding failed — do not debug URL Filtering yet.

  3. Read username if you expect auth

    After SAML (or another method) succeeds, the same status window can show the username. No username + unknown location is a different ticket: see the authentication lesson.

  4. Note the public egress IP

    Help’s forwarding runbook uses ip.zscaler.com to note the public egress IP of a GRE path, then hunt the matching Web Insights rows. Keep that IP next to the hostname.

IPv6 caveat (Help)

Zscaler’s My IP Address service might not recognize IPv6 the way you expect. If the client is IPv6-first and the page looks “off,” verify the data center has an IPv6 virtual IP on the Zscaler config page, then corroborate in Web Insights — do not close the ticket on the browser page alone.

Side B — Admin: can the engines see HTTPS?

  1. Open SSL/TLS Inspection Policy

    Path: Policies → Common Configuration → SSL/TLS Inspection → SSL/TLS Inspection Policy. Click Add Rule (or edit the recommended rule you already have).

  2. Set Rule Action

    Rule Action is Inspect or Do Not Inspect. For Do Not Inspect, Help also exposes Evaluate Other Policies vs Bypass Other Policies — that choice decides whether later web engines still run on what they can see.

  3. Scope the rule

    Documented criteria include Locations, Location Groups, Users / Groups / Departments, URL Categories, Cloud Applications, and Destination Groups. Pilot on one Location first — Help’s deploy guide says enable SSL on a small location or lab before the whole org.

  4. Trust the intermediate CA

    The PSE builds a TLS session to the server and a second TLS session to the browser. It signs the browser-facing cert with the Zscaler intermediate or your custom intermediate. If that CA is not in the endpoint trust store, users see cert errors and apps with certificate pinning fail — Help states the PSE cannot detect pinning.

  5. Activate

    Save is not live. Activate the change, then re-test the same URL from the Side A device.

https://admin.zscaler.net/#policies/ssl-inspection/add
Training mock · not live

Policies → Common Configuration → SSL/TLS Inspection → SSL/TLS Inspection Policy → Add Rule

Add SSL/TLS Inspection Rule

Pilot-Inspect-Office-HTTPS
Enabled
Inspect
Mumbai-HQ (example)
Any (narrow later)
Any

Do Not Inspect Action (when used): Evaluate Other Policies · Bypass Other Policies. Intermediate CA: Zscaler intermediate or custom intermediate. Activate after Save.

Cancel Save

Source: Zscaler Help — About SSL/TLS Inspection Policy. Training mock — field names from that page, not a live tenant.

Side C — Logs: does Web Insights agree with the page?

  1. Open Web Insights Logs

    Path: Logs → Insights → Web Insights → Logs. Set the time window to the last 15 minutes around the ip.zscaler.com test.

  2. Filter the transaction

    Search the test URL or user. Help’s site-access runbook compares User, Group, Location, and Policy Action for the same domain.

  3. Read the five columns that close the ticket

    User (authenticated name, or empty). Location (site object). Traffic Forwarding (ZCC / GRE / PAC / …). SSL Inspected (Yes or No). Policy Action (Allowed / Blocked and the reason). Add Public Service Edge and match it to the hostname from Side A.

  4. If the page was blocked, check both log types

    Firewall Insights Allowed + Web Insights Blocked means hop 4 (web module) stopped it. Both Blocked means hop 3’s firewall module stopped it. That single pair of values tells you which engine to open next.

https://admin.zscaler.net/#logs/insights/web/logs
Training mock · not live

Logs → Insights → Web Insights → Logs · last 15 minutes

Web Insights Logs

alex@example.com
ip.zscaler.com
User Location Fwd SSL Action PSE
alex@example.com Mumbai-HQ GRE Yes Allowed bom1 (example)
alex@example.com Mumbai-HQ GRE Yes Allowed bom1 (example)

Columns from Help: User, Location, Traffic Forwarding, SSL Inspected (Yes/No), Policy Action, Public Service Edge. Values are training placeholders (example.com, RFC-style names).

Source: Zscaler Help — Web Insights Logs: Columns / NSS Feed Output Format: Web Logs. Training mock — not live.

Ops · proof desk
Operations desk used to verify a session after ip.zscaler.com and Web Insights
Green VPN is not proof. Close with My IP Address fields plus the five Web Insights columns.
Green success = these fields together
Pilot checklist (say each line out loud)
1. Browse https://ip.zscaler.com on the pilot device
2. Copy PSE virtual IP + Zscaler hostname (+ username if auth is on)
3. Hit a known-good HTTPS URL and a known-blocked URL
4. Logs → Insights → Web Insights → Logs  (last 15 min)
5. Confirm User · Location · Traffic Forwarding · SSL Inspected · Policy Action
6. If blocked: compare Firewall Insights vs Web Insights (Allowed/Blocked pair)
7. Only then open the policy that the reason field names

Classic fails

SymptomFirst checkUsually the fix
Internet “works” but no ZIA policy, no Web Insights rowip.zscaler.com — no PSE VIP / hostnameForwarding is missing or bypassed. Fix ZCC / GRE / PAC before any URL rule.
Tunnel green, wrong policy stackWeb Insights Location empty or unexpectedGRE static IP or VPN credentials not bound to a Location. See the GRE / IPSec lesson.
DLP / AV “not working” on HTTPSSSL Inspected = NoSSL rule is Do Not Inspect, CA not trusted, or pinning. Decrypt first.
Auditor never got the SSN alert on a blocked PDFPolicy orderFile Type fired first. DLP never ran. Expected per Help’s example — change File Type or accept the order.
Firewall Insights Allowed, user still blockedWeb Insights Policy ActionA web-module rule blocked later. Not a firewall bug.
ip.zscaler.com looks wrong on IPv6 clientsHelp IPv6 noteDo not trust My IP Address alone. Confirm the DC IPv6 VIP and the Web Insights row.
SAML redirect loop after “internet is down”Is the IdP hairpinned through the tunnel?Exempt IdP / ACS from PAC or tunnel. That is the authentication lesson — different hop.

Knowledge check

Six judgment items. Map each one back to a hop or a proof field. Check answers, then Reset if you miss any.

Q1

A user says “internet is down.” Some public sites still load. What is the first proof step?

Correct: b. If hop 2 failed, ZIA never saw the packet. Help’s verify article starts on the device at ip.zscaler.com (My IP Address). Re-read Side A.
Q2

File Type Control blocks PDFs. DLP is supposed to alert on SSNs. A user uploads a PDF that contains SSNs and is blocked — but the auditor is never notified. Why?

Correct: c. Help’s Policy Leading Practices example: File Type blocks the PDF, DLP is not triggered, auditor is not notified. Re-read Inside the Public Service Edge.
Q3

Firewall Insights shows Allowed. Web Insights shows Blocked for the same transaction. What happened?

Correct: a. Help states this pair explicitly. Use it to pick the next menu (URL / Cloud App / File Type / DLP), not to rebuild the tunnel. Re-read the log-pair table.
Q4

You need Client Connector to carry DNS, SSH, and HTTPS for a roaming laptop. Which forwarder matches Help?

Correct: d. Z-Tunnel 1.0 is CONNECT for typical 80/443. Z-Tunnel 2.0 is the full tunnel. iOS is TLS-only. Re-read How traffic reaches the PSE.
Q5

A user uploaded a spreadsheet to a personal file-host. DLP did not fire. Web Insights shows SSL Inspected = No. What do you do first?

Correct: b. SSL Inspected = No means hop 4 never decrypted. DLP sits after SSL in the web-module order. Re-read Side B and the engine SVG.
Q6

Which pair actually closes “is this user on ZIA, and did policy see the session?”

Correct: c. Help’s verify article plus Web Insights columns are the two proofs this lesson is built on. Re-read Side A and Side C.

Sources

Related: ZIA GRE & IPSec tunnels · ZIA forwarding methods · ZIA authentication · SSL inspection & file type · Logs, ZDX, troubleshooting