We are implementing a Transparent Proxy for HTTPS (via TCP and QUIC).
The following rules are set in startProxy:
settings.includedNetworkRules = [
NENetworkRule(destinationNetwork: NWHostEndpoint(hostname: "0.0.0.0", port: "443"), prefix: 0, protocol: .TCP),
NENetworkRule(destinationNetwork: NWHostEndpoint(hostname: "::", port: "443"), prefix: 0, protocol: .TCP),
NENetworkRule(destinationNetwork: NWHostEndpoint(hostname: "0.0.0.0", port: "443"), prefix: 0, protocol: .UDP),
NENetworkRule(destinationNetwork: NWHostEndpoint(hostname: "::", port: "443"), prefix: 0, protocol: .UDP)
]
Handling TCP connections seems to work fine. But opening UDP flows from Chrome (or Brave) always fails with
Error Domain=NEAppProxyFlowErrorDomain Code=2 "The peer closed the flow"
(Doing the same for Firefox works!)
BTW: We first create a remote UDP connection (using the Network framework) and when it is in the ready state, we use connection?.currentPath?.localEndpoint as the localEndpoint parameter in the open method of the flow.
Is it a known issue that QUIC connections from Chrome cannot be handled by a Transparent Proxy Provider?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
Is it somehow possible to get the transport layer (UDP and TCP) payload amounts for TLS or QUIC connections established via the Network framework? (From within the app itself that establishes the connections.)
I am currently using the ntstat.h kernel socket calls, but I hope there is a simpler solution.
With ntstat, I have not yet been able to observe a specific connection. I have to search for the connection I am looking in all (userspace) connections.