Residential Proxy with Tailscale

Tailscale version 1.14.6
Your operating system & version - linux

Hi all, I have searched how best to do this but I don’t see any comments/guides/solutions to creating a residential proxy with tailscale.

Wants:
I would like my cloud docker contained app to make external public http requests through an internal tailscale ip/port that forwards to a node on my “home” client and forward the request to the www/public internet, resolve and return the payload to the calling contained app.

Currently have:
My cloud linode service using tailscale that can actively ping my local laptop. In future this will be a raspberrypi running linux on the local network, but for starters, using my MbAir laptop.

My linode tailscale service is using a subnet ip to connect to my MbAir

On my linode server, I am running a Go app that is sending requests across a pool of proxies to make external requests. Nothing illegal here, just viewing public pages.

I would like to add my internal tailscale address to my proxy pool, to make requests through tailscale to the www/public web and return the response from my home network

Obviously (well I think anyhow) that I ill need a service listening on requests inbound on a machine in the tailscale ip addresses, or namespaces to forward on through the home network, using the same headers etc to the outside web, and returning the response.

The listener, in my case a golang server, normally listens on a port which I would prefer to be private of course, to accept and make requests.

I’m trying to work my way through this and will happily blog my steps and add to the community here. I’m just scratching at a few ways to do this currently so all/any help is appreaciated.
Thanks Team
Best K

Actually, after taking a walk this morning and thinking about what I already have, this should be trivial to complete from here. So please don’t reply to this, I will confirm my results and close this ticket as required. Probably didn’t help that I wrote this at the bar last night after a few IPA’s…but definitely good to write things down and work through =]

So from here, as all the docs read that an IP address is consistent against each of the Tailscale clients, then my app hosted on my linode instance will make requests to the ip address, and an internal port of my choosing. On the client with that IP address/port, I will have a webserver listening on the internal port which in turn will respond to the request, read any payload/url params and make an http request to the outside www public world. Then we simply return the response from that request and let it travel all the way back through Tailscale to the calling linode app.
Stay tuned =]

So it works as exactly as I thought.

  • On one of my machines, I have created a webserver to listen on an internal port of my choosing.
  • Another machine inside Tailscale makes a request (tested using cURL) to the consistent IP:Port address of the webserver.
  • The webserver handles the request and returns the response through Tailscale

This is just fabulous!

I will look at magic dns in future to resolve the requests, but this IP address is all I need. Now I will go buy a raspberry pi that in turn will run my Go binary out of my home residential internet connection. Yay!