meek is important to users in censored area because:
it is the only Tor pluggable transports usable in China
a coming feature that allows users to get Tor Bridges from Tor launcher/anon-connection-wizard relies on it.
However, meek has not been supported neither by Whonix nor by Tails so far. It is very likely because meek has not been packaged in to Debian as a standalone client because of its increasingly high-coupling with TBB.
sudo apt-get update && apt-get install tor obfs4proxy
Then, edit /etc/tor/torrc as follows:
(I am posting the real bridge info here because the philosophy of meek is collateral freedom, unlike the philosophy of obfs4 which is security by obscurity ):
I have not had it work in Whonix yet. This is very likely because Whonix-gateway automatically filtered the clearnet traffic, including the traffic to AWS.
I tried to use clearnet user according to the documentation, but still got the following error:
[warn] 1 connections have failed:
[warn] 1 connections died in state handshaking (TLS) with SSL state SSLv2/v3 read server hello A in HANDSHAKE
I did route my traffic to different ISPs in China when testing because different ISPs have different censorship policies. However, we need more feedback from users in China to know how well this approach work. Maybe ask users for testing?
The version of obfs4proxy package in Debian old stable is 0.0.3, which does not support acting as a meek client. It is really important to get the newer version into Debian because TPO’s repository is censored, not Debian’s. I will report a bug against it.
Document this when it is mature.
Let anon-connection-wizard support meek when it is mature.
It seems while meek-amazon worked well in censorship circumvention, meek-azure failed to do so. This is strange because both of them are using meek and meek-azure’s server seems not to be censored neither: a0.awsstatic.com in China | GreatFire Analyzer https://en.greatfire.org/ajax.aspnetcdn.com
The traffic fee reports of these two servers and the info in Atlas also show no significant difference between meek-amazon and meek-azure. Maybe ask users for testing?
It’s a DNS resolution issue most likely. /etc/resolv.conf workaround that initrigeri used in Tails should work in Whonix as well. (He mentined it in one of its last posts on this subject that you started.)
Thank you for correcting me this! 0.0.3 is for old stable.
Not a problem for Whonix 14
It’s a DNS resolution issue most likely. /etc/resolv.conf
workaround that initrigeri used in Tails should work in Whonix as
well. (He mentined it in one of its last posts on this subject that
you started.)
Thank you for pointing this out, Patrick!
I did not see the complains initigeri described, however. (Most likely
because I didn’t look into the right place):
22: connecting to the meek bridge requires working DNS
this post https://labs.riseup.net/code/issues/8243#note-12 - /etc/hosts … That’s how he made it work. Should work in Whonix as well. Basically by amending /etc/hosts we can preseed the IP result of DNS lookups. At the price of slower updates than IPs would generally update.
I don’t think we should use the above wiki links by me in production. But anyhow… If you do…
For testing… Login as user debian-tor.
sudo -u debian-tor bash
Check if DNS resolution is functional.
nslookup whonix.org
Perhaps the above wiki links are not even required. Tor is allowed to issue any traffic. Just /etc/resolv.conf on Whonix-Gateway intentionally is dysfunctional. But that’s not so important. We could have functional /etc/resolv.conf for user debian-tor, functional DNS for Tor, but still block DNS for everything else on Whonix-Gateway by default.
If this is the approach we decided to adopt, I can keep an eye on this and pull request when the IPs are changed.
Please forgive my ignorance, the hostname need to be resolved so that we can connect to the Tor network. Therefore, we can not use send the DNS request over Tor successfully in this case? In other words, we had to send the DNS request for resolving a0.awsstatic.com through clearnet?
If this is the approach we decided to adopt, I can keep an eye on
this and pull request when the IPs are changed.
Please forgive my ignorance, the hostname need to be resolved so that
we can connect to the Tor network. Therefore, we can not use send the
DNS request over Tor successfully in this case? In other words, we
had to send the DNS request for resolving a0.awsstatic.com through
clearnet?
Correct.
What above - new - instructions do is: allow Tor do resolve DNS using
clearnet with your usual DNS settings that any clearnet VM would be
using. I will think about this more, but I don’t think this has any
disadvantages. Except:
when Whonix-Firewall would be broken plus at the same time its fail
closed mechanism not work
and when the user is trying to use Whonix-Gateway as a workstation
That was I was thinking about, too. Unfortunately, no, it does not work in that way. I was planning to do a feature request, but then I was yawning saying:
It’s not immediately obvious to me if Azure does any sort of DNS based load balancing. AWS appears to be doing so.
which means, the IP may change dynamically to get the best connection performance? If so, is it still a good idea to use static IP in /etc/hosts?
This is awesome! I am a big fan of meek and its great to see it land at last.
Something I thought about but I’m not sure how relevant it is: Lets say someone installs wireshark on the gw to do some leak testing. Wireshark tends to autoresolve IPs by querying the installed DNS resolver - which would leak info about sites visited in the WS? So is there a way to control access to the GW DNS resolver (app by app basis) to stop scenarios like this from happening?
As long as wireshark does not run as user debian-tor but as user or root, as per Whonix-Gateway firewall default settings, there will still be no DNS access.
Not that I know. We have access control on a linux user account basis.
Awesome. Good to know that the user account trick works for this, so we can have our cake and eat it too. Thanks again to you and @iry for making meek for Whonix happen.
Getting meek work in Whonix14 is a great UX improvement for user in heavily censored area in my opinion. It means those users do not need any self hacking to connect to the Tor network.
Do you think it is a good idea that I write a brief Whonix Blog post about using meek in Whonix to draw more attention before the release of Whonix14?