OpenVPN + obfs3 is a popular combination for censorship circumvention, but it's getting slow nowadays. Obfs4 works great with tor, but Yawning Angel seems to not have enough time to make obfs4 spliceable with OpenVPN, so I'd like to do it myself. How would I go about doing this?
2 Answers
obfs4
and obfs3
, among others, are "pluggable transports", and the protocol they speak to Tor is well specified. You could write a program / script to implement that protocol in order to use any pluggable transport for your own purposes.
Shameless plug: I have written a Python 3 program that takes a pluggable transport binary and creates a standalone TCP tunnel, which can then be used to tunnel OpenVPN. The documentation is not done yet, but the code works.
obfs4proxy gets most of its settings via environment variables (and couple of them via socks5 authentication fields in client mode).
There is too much going on to post here but to get a better understanding, you might take a look at my blog post on this subject.
I have also developed a Bash script to make obfs4proxy work with openvpn in Linux which is available here: obfs4proxy-openvpn