Getting Rid of The US
Or that one time I tried living without access to servers in or owned by US-based companies. We all know that the US has a lot of influence over the world. The same is true on the internet. As an experiment, I decided to add block all ip addresses from the US, as well as all ip addresses from companies based in the US.
The Method
I downloaded the major IP blocks allocated to the US from here: https://www.nirsoft.net/countryip/us.csv Then, I used this list to get the names of the richest (and by extent, likely more present on the internet) companies: https://en.wikipedia.org/wiki/List_of_largest_companies_by_revenue Using this list, I used a service called SecurityTrails to get all subdomains they own. From there, I got the 200 highest ranked subdomains for each of those companies. Finally, I used an old /etc/hosts file containing domains of ad providers and of various suspicious websites. I combined this old host file with the one containing the subdomains. Then, I placed this new file as my /etc/hosts, where all those subdomains point to the ip address 0.0.0.0. As for the ip ranges, I used ip tables. First, I made a backup using ``` # iptables-save > ~/iptables_bkp ``` which can be restored using ``` # iptables-restore < ~/iptables_bkp ``` Then, in you can add all the ip ranges in iptables. ``` while IFS="" read -r range; do sudo iptables -I INPUT -s "$range" -j DROP && echo "$range" done < ips ```
First Observations
The first thing I observed after applying these changes was that discord, steam, github and duckduckgo were still all working. This is because they have servers that are outside of the US and they weren't included in the list of domains we removed. So, I added those to the list of subdomains. This does point out to a systematic issue however: a *ton* of websites and services that are US-based have servers outside of it. Moreover, they rarely specify that they are from the US. To find this out, you often need to go into their terms of services and search for either their address or mentions of the United States. That is, when they have terms of services. Finally, I took the cloudflare ip addresses from here: https://www.cloudflare.com/ips/ and removed them. This is the moment the internet broke.
What Works?
My weather radar still works. This is expected as it fetches data from the Canadian government website, which host their things themselves. Trying to go to the actual website https://weather.gc.ca , however, will fail. That is, until you reload the page. Then, the content will magically appear. Each time you change to a new page, you have to reload it to get firefox unstuck from whatever it is trying to fetch (mostly google services). While this website is visible, I would rate it as unusable. Now, let's check my newsboat. I have a bunch of websites in there, so we'll see which ones work. Obviously, youtube will not work. Drew DeVault's blog works fine, which is a pleasant surprise. Codemadness and dataswamp.org also both seem to work. Same with the Kiss Linux blog. Sadly, it has been inactive for a few months. The Arch Linux news updates also works. So, overall, most of my newsfeed, excluding youtube, works. Next, my emails. I have a mail server in France, so this works just fine too. The tor browser works fine, which means it could be used to access services that can't be accessed otherwise in a 'somewhat protected way'. A bit like wearing a condom while entering the... virulent US climate, let's say. For chatting, discord is out of the question, so I ssh'd into my server and booted the matrix server. ..Just to realize that I don't have a matrix client installed. However, the good news is that I had non-US mirrors enabled for pacman, which means I can just install element-desktop. It works! Now, there are couple more things that need to be checked. Mostly, the things related to the school I attend to and the things I need for my work. First, the school website. It worked on the first try, without any issue. Not only is this extremely surprising, but even more surprising is the fact that it loads extremely fast compared to the usual. Actually, scratch everything I say, because at the second I cleared the browser cache, it refused to load. Yep, now it's dead for good. Looking in the network tab, I see that it wants to load fonts from googleapis.com and load some content from instagram's CDN. We really never know what websites can be doing in the background if we don't check, heh? This will be a job for tor. Now, concerning my job. I program, rust, which uses libraries hosted on crates.io, which itself uses Amazon's aws to store the files. That's a bad start, but maybe not the end of the world. I already know how to locally download and use those libraries. All I need to do, is fetch the ones I need ahead of time, then use them. Except, in practice, that rarely works well. I tried self-hosting a part of the libraries, and there were always missing ones. This means that not only I would probably need to download and keep more of them on a disk, but I would also need to keep downloading the newest version of those libraries. Also, my work requires me to use github, which is already in the exclusion list. Ouch!
Conclusion
Fun experiment, but not very useful except or practical at all.