On one side I have an Ubuntu server in a data center that has IPv6 connectivity. The
eth0 interface has a public IPv4 and also a public IPv6 /48. From that server I can ping IPv6 addresses OK.
On the other side I have a home network on an IPv4 only ISP. The router is a Mikrotik and receives a dynamic IPv4 from the ISP. Then the router serves as DHCP server for an IPv4 LAN with private addresses.
I want to build a tunnel between the server and the home network.
I want the nodes in the LAN to get IPv6 connectivity from that range attributed to the server.
It would be better if one node could act as the local end to the tunnel and also as a router (preferably the Mikrotik router but I can also dedicate an Ubuntu on the local network to that task if it is easier) and the rest of the nodes get their configuration automatically. But I am also ready to consider each local node making its own tunnel with the server if that makes more sense.
I have read about many different ways to tunnel IPv6 but none was describing this exact situation. I don't want to use Teredo, neither a tunnel broker.
I would like the server to only accept connections from the nodes on the local network which does not have a fixed IPv4 so some sort of authentication should probably occur. Maybe through OpenVPN or similar.
I can configure some nodes to a good extent like the linux ones, but there are other nodes on the LAN like an iPad that are not as easy to tweak and should receive their config automatically if possible. But if only the linux nodes are connected it is also OK.
What would be a sensible way to build it and its corresponding configuration?