Is there any way to host a DNS server on OpenWrt. Specifically having a router in another location, that I can connect to remotely in order to get around geo-blocking in my location? The same way SmartDNS services work.
I know I can do this with VPN, but the encryption really slows connections down, a DNS server would not.
The DNS in SmartDNS is only half of their solution. What they are doing is using DNS to redirect your access to netflix.com to another server, which then proxy's the connection from a location in a different geographical area. It's just a smart-proxy that uses DNS as an automated way to configure it. Or, in other other words, a smart VPN where only certain services are redirected through the VPN.
It's not inconceivable you could replicate it, but setting up the DNS would be, by far, the easiest part of this.
That shouldn't be the case for something like, say, wireguard. It uses chacha20, which is pretty darn fast on most hardware. If you have a router with a multi-core CPU, it's likely that wireguard would not be the rate-limiting step in a VPN.
it's fairly easy, configure the DNS to respond to all FQDNs you need proxied, with the IP of the sni host.
At the sni host, have sslh set up to listen to port 443. it'll proxy the request to the real destination, but the destination will think the requests came from the IP of the sni.
I don't use sslh myself though, but sniproxy, but it doesn't exist for openwrt.