While a convenient method of internet connectivity, hotel Wi-Fi is generally insecure, with wireless networks without any form of encryption and also not knowing who or what is between the access point and the rest of the internet. For the security conscious, using these networks can pose too much of a risk.
I have been using a GL.iNet travel router for my last couple of holidays, originally I purchased it to prevent having to authenticate against a captive portal on all of my devices when arriving at a hotel – but I soon saw the other benefits of this device, such as its robust VPN support.
Initially I had configured the router as a WireGuard peer with my home Mikrotik router, which worked great – I was able to route specific traffic back to my house as required, just as if I was there. I was able to access my Plex server, check in on my home lab and use Home Assistant.
More recently I have been playing with Cloudflare’s WARP Zero Trust Network Access (ZTNA) as another connectivity option between mine and my parents house, and other remote devices – which got me thinking, can I also use WARP as a free VPN service to encrypt all my traffic egressing my travel router when it’s connected to a network that I don’t trust? Cloudflare has an extensive network, meaning that no matter where I travel to, I’m surely going to be pretty close to one of their POPs.
WARP can be used as a pseudo VPN service, and if you’re only looking to encrypt your traffic between your router and the Cloudflare POP, it’s a great option. You obviously will not get all the features other commercial VPN providers provide, such as bypassing geo-blocking by selecting your exit node – but as a low latency encryption method, the price is right. The Cloudflare WARP ZTNA service is free for up to 50 users, with no bandwidth restrictions that I have come across.
To connect my Mikrotik routers to WARP I followed this guide Setup Cloudflare WARP Connector on MikroTik, essentially using the wgcf-connector Docker image to create a WireGuard compatible config file to connect to Cloudflare network – rather than having to use the WARP client, particularly important for devices that don’t support it.
After creating a new tunnel for my travel router, I followed the same guide as above to the point where a wgcf-connector.conf file is created. With this file I followed the GL.iNet guide to setup a WireGuard client manually.
Once the WireGuard client is successfully created on the travel router, I then ensured that the VPN policy sent all traffic via the Cloudflare tunnel, and finally – using the Hurricane Electric BGP Toolkit I ensured that the ISP ASN is Cloudflare’s. Additionally using Cloudflare’s Speed Test site, you can see additional information about the connection, including the throughput of the connection.
This setup has worked successfully for me in a number of hotels, I simply connect the GL.iNet to the hotel’s SSID or via an ethernet port in the room, authenticate via the captive portal – and as soon as the router detects internet connectivity, the VPN connection is established and traffic is routed over it – hidden away from other guests, or the hotel itself.