These VPN providers are the best to use in countries with internet censorship:
- ExpressVPN (fast, excellent customer support) — uses a confidential method of packet obfuscation
- VPN.AC uses TLS authentication to mask OpenVPN handshake packets (thus hiding them from Deep Packet Inspection)
If you need an introduction to VPNs (Virtual Private Networks), please see this article.
Avoiding Deep Packet Inspection
“Deep Packet Inspection” is usually done at the ISP (internet service provider) level on behalf of a government. A “packet” is a chuck of computer data sent over a network. Packet Inspection involves examining your internet traffic and determining what you are doing (for example, using a VPN).
To avoid Deep Packet Inspection, you must hide the fact that you are using a VPN. One of the simplest ways to do this is to forward your OpenVPN traffic through port 443. OpenVPN uses port 80 by default, which is usually heavily monitored by firewalls. When you switch to port 443, your traffic will be camouflaged. This is because 443 is the default port for HTTPS, and web browsers heavily use this protocol for secure connections. Whenever you see “HTTPS” in a web browser address (for example, while accessing an online bank or accessing a web-based email), your browser uses an HTTPS connection on port 443.
So using port 443 makes a lot of sense because it is very difficult to detect your traffic amongst all the other secure traffic on this port.
However, some governments (China and Iran) are now using methods to detect the difference between “normal” SSL encryption and VPN encryption. In cases like this, you will need more sophisticated cloaking techniques (see below).
Avoiding Advanced Deep Packet Inspection
There are several ways to avoid advanced deep packet inspection, but they will probably require cooperation from your VPN providers, and they will slow down your internet connection.
Commonly used techniques include:
- Using the Obfsproxy tool
- Using OpenVPN through an SSL tunnel
- Using OpenVPN through an SSH tunnel
Obfsproxy is a tool designed to make VPN connections difficult to detect. It was created by the Tor network when China started blocking Tor nodes — but it can be used outside of the Tor network to mask VPN connections.
To use Obfsproxy, you must install it on your computer, and it must be installed on the VPN server you are connecting to. In most cases, you’ll have to ask your VPN provider to set it up.
Obfsproxy does not encrypt your traffic, but it also does not require much overhead, so it is useful in countries with limited bandwidth (e.g., Syria or Ethiopia).
There are instructions for setting up Obsfproxy with OpenVPN on this page.
Using OpenVPN through an SSL tunnel
Another method of avoiding Advance Deep Packet Inspection is to use OpenVPN through an SSL tunnel to wrap your data in another layer of encryption. This makes your OpenVPN traffic virtually indistinguishable from regular SSL traffic because Deep Packet Inspection cannot penetrate this additional layer of encryption.
One provider — AirVPN does this by default; they state:
We offer OpenVPN on ports 80 TCP / UDP, 443 TCP / UDP and 53 TCP / UDP. Additionally, every Air server supports directly OpenVPN over SSH and OpenVPN over SSL. This means that even the most brutal techniques of monitoring, censorship, throttling and traffic shaping will fail against AirVPN, because your ISP and your government will see only TCP or UDP traffic (as you prefer) on a unique port.
Please note that using an SSL tunnel will slow down your internet connection.
OpenVPN through an SSH tunnel
Using OpenVPN with an SSH tunnel is similar to using it with an SSL tunnel. The difference is that you wrap your OpenVPN traffic with SSH encryption instead of SSL encryption. SSH is the “secure shell” software used to make connections to shell accounts in Unix. You can find SSH clients for most operating systems — see PuTTY, for example.