Interoperability and traffic flow when multiple Transparent Proxy providers coexist

Hello,

How does macOS handle coexistence between multiple Transparent Proxy providers from different vendors if their network rules overlap and one provider modifies the traffic?

Thank you in advance!

Answered by DTS Engineer in 881971022
How does macOS handle coexistence between multiple Transparent Proxy providers … ?

Generally, traffic in transferred from one proxy to the next to the next, but there are a couple of things to watch out for.

First, the order in which transparent proxies load isn’t specified unless the proxies are configured by the device manager with an order property.

Second, each flow received by the proxy has a metadata value. If your proxy wants to ascribe a network connection to that flow — so that subsequent subsystems in the chain understand that this network connection is ‘owned’ by the original application — it must apply that metadata to the flow. With Network framework you do that by applying the metadata to the parameters used to create the connection, using either the setMetadata(_:) method or the setMetadata(on:) method, depending on whether you’re using C or Swift.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

How does macOS handle coexistence between multiple Transparent Proxy providers … ?

Generally, traffic in transferred from one proxy to the next to the next, but there are a couple of things to watch out for.

First, the order in which transparent proxies load isn’t specified unless the proxies are configured by the device manager with an order property.

Second, each flow received by the proxy has a metadata value. If your proxy wants to ascribe a network connection to that flow — so that subsequent subsystems in the chain understand that this network connection is ‘owned’ by the original application — it must apply that metadata to the flow. With Network framework you do that by applying the metadata to the parameters used to create the connection, using either the setMetadata(_:) method or the setMetadata(on:) method, depending on whether you’re using C or Swift.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Interoperability and traffic flow when multiple Transparent Proxy providers coexist
 
 
Q