Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Shells Virtual Desktop
BMail.ag - Secure Email Service
Server.net
CPLicense.net
VPS Server
Buy VPN
Vultr
VMs for AI
HostDare
ReliableSite White-Label Dedicated Hosting for Resellers
InterServer VPS
BMail.ag - Secure Email Service
Best VPN
High-Performance Bare Metal Server Solutions
Karvl.com
Server Mania Cloud Hosting
DataWagon Hosting
AlphaVPS Hosting
Evoxt.com
Clouvider
VPS Hosting with NVMe
Residential IPs in the US & 4G Mobile Proxies in EU & US with Unlimited Bandwidth
ReliableSite White-Label Dedicated Hosting for Resellers
Rabisu - Hosting Solutions
Shells Virtual Desktop
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

CDN (or similar) that allows retrieving client connection information?

Bit of a weird request, but I intend to run a networking experiment where I need to collect information about a client's connection to the server, such as the HTTP version, supported TLS ciphers, and TCP rtt/cwnd sizes.

I can easily spin up nginx instances and have them forward $tcpinfo_rtt, $ssl_ciphers and the likes, but having to manage updates in this setup is a pain. You'd have to switch DNS records, drain connections on the old server, and finally shut it down.

Is there a global managed HTTP service, such as a CDN, which would allow me to receive this information at the origin? Even though it's a personal project, pricing is of no concern (unless its Akamai or somesuch asking for three/four figure sums upfront.)

Comments

  • szymonpszymonp Member

    I think cloudflare has api's to read that

  • bulbasaurbulbasaur Member
    edited May 2022

    @szymonp said: I think cloudflare has api's to read that

    They don't forward this information to the origin by default, how do you actually retrieve this information? From within workers?

  • emghemgh Member, Megathread Squad
    edited May 2022

    @stevewatson301 said:

    @szymonp said: I think cloudflare has api's to read that

    They don't forward this information to the origin by default, how do you actually retrieve this information? From within workers?

    x-forwarded

  • bulbasaurbulbasaur Member
    edited May 2022

    @emgh said:

    @stevewatson301 said:

    @szymonp said: I think cloudflare has api's to read that

    They don't forward this information to the origin by default, how do you actually retrieve this information? From within workers?

    x-forwarded

    x-forwarded-for is for the client's IP, which I already know :)
    I'm referring to the client's connection properties, such as the HTTP version and TLS ciphers.

  • emghemgh Member, Megathread Squad

    @stevewatson301 said:

    @emgh said:

    @stevewatson301 said:

    @szymonp said: I think cloudflare has api's to read that

    They don't forward this information to the origin by default, how do you actually retrieve this information? From within workers?

    x-forwarded

    x-forwarded-for is for the client's IP, which I already know :)
    I'm referring to the client's connection properties, such as the HTTP version and TLS ciphers.

    y-forwarded

    Thanked by 2bruh21 caracal
  • eva2000eva2000 Veteran

    Cloudflare Enterprise plan allows you to use Logpush to save all logged requests. Zone scoped log datasets available for you https://developers.cloudflare.com/logs/reference/log-fields/zone/. You'd be interested in HTTP request dataset's log fields https://developers.cloudflare.com/logs/reference/log-fields/zone/http_requests/. I usually send my Cloudflare Logpush logs to S3 storage for analysis and processing on my own servers.

    With Cloudflare Enterprise plan if you're fine with GUI access only for moment in time like display/streamed display, Cloudflare paid plans have Instant logs too accessed via Cloduflare Logs section https://developers.cloudflare.com/logs/instant-logs/

    You can also do this with Cloudflare Workers too fields available https://developers.cloudflare.com/workers/runtime-apis/request/#incomingrequestcfproperties which include TLS ciphers and other connection properties etc. So don't need Enterprise plan for that.

    Or some can be done via Cloudflare Transform Rule request header modifications https://developers.cloudflare.com/rules/transform/ where you can setup rules to add custom request headers with the info derived at CF Edge server and have them passed onto your origin for logging and analysis. Some of the fields available to be passed on at https://developers.cloudflare.com/rules/transform/request-header-modification/reference/fields-functions/. I use Cloudflare Tranform request header modifications to pass on Cloudflare Enterprise Firewall's JA3 Fingerprints https://developers.cloudflare.com/bots/concepts/ja3-fingerprint/ for each request to my origin servers.

    Hope that helps

    Thanked by 1bulbasaur
  • eva2000eva2000 Veteran

    @stevewatson301 said: rtt/cwnd sizes

    For those specifically, probably best to just log them from Nginx server - only place I've been able to log those which aren't available on Cloudflare at least.

  • yoursunnyyoursunny Member, IPv6 Advocate

    For Cloudflare, use Fetch API to receive /cdn-cgi/trace, and then post the response to your beacon server.
    Example: https://www.cloudflare.com/cdn-cgi/trace

  • @stevewatson301 said: I can easily spin up nginx instances and have them forward $tcpinfo_rtt, $ssl_ciphers and the likes

    Thanks for introducing me to TCPINFO, I didn't know about that metric before. Seems like it can be used to detect VPNs and other discrepancies.

    BTW. Regarding your other project that sends massive number of DNS queries, I could not replicate your results. I've written a Python script that sends several thousand DNS queries per second and left it overnight with no error responses whatsoever - all I got was rate limiting, from ~50 rps on Google Public DNS to above 1000 rps on Cloudflare (which seemed more like a bottleneck in my program rather than Cloudflare). Perhaps I need to go even faster in order to get these SERVFAILs?

  • @dane_doherty said: all I got was rate limiting

    Not sure why you're trying to get this thread derailed, but the ratelimiting that I observed was in the form of servfail responses. (I'd generally have asked you to PM, but knowing that you're tinyweasel and generally up to no good, I can't assist you further.)

    Thanked by 1TimboJones
  • bulbasaurbulbasaur Member
    edited May 2022

    @eva2000 said:
    You can also do this with Cloudflare Workers too fields available https://developers.cloudflare.com/workers/runtime-apis/request/#incomingrequestcfproperties which include TLS ciphers and other connection properties etc.

    Seems like the best option, apart from the fact that Cloudflare really likes to block users at the drop of a hat, as I’ve experienced many times without paying up for enterprise.

    Do you happen to know if they allow getting the entire ClientHello or only the finally negotiated cipher and curve?

    Also, is this information also available to functions that are classified as “workers unbound”?

  • @stevewatson301 said:
    I'd generally have asked you to PM, but knowing that you're tinyweasel and generally up to no good, I can't assist you further.

    Assist? I'm not the one who's trying to do something weird. I'm just not able to replicate problems you've run into.

    Since:

    • you mocked my programming skills
    • are still accusing me of being somebody else (though you're right that I'm generally up to no good)
    • it's glaring you have a lot of knowledge that has no legitimate white-hat use

    I decided to scrutinize some of your claims, the same way you try to scrutinize me.

  • bulbasaurbulbasaur Member
    edited May 2022

    deleted

  • eva2000eva2000 Veteran

    @stevewatson301 said: Do you happen to know if they allow getting the entire ClientHello or only the finally negotiated cipher and curve?

    Also, is this information also available to functions that are classified as “workers unbound”?

    Don't think you can get the entire ClientHello. You can ask on CF Workers forum https://community.cloudflare.com/c/developers/workers/40 or their CF Discord channel which is where all the CF Worker staff and users hang out more. They may have more ideas or someone probably has already done something similar.

Sign In or Register to comment.