Towards Freedom - Networkhttps://prasannavenkadesh.github.io/blog/2017-06-18T00:00:00+05:30Join Scuttleverse2017-06-18T00:00:00+05:302017-06-18T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2017-06-18:/blog/join-scuttleverse.html<p>People are already speaking and writing about what is <strong>Scuttlebot</strong>, <strong>Scuttleverse</strong> and <strong>Patchwork</strong>. If you have not read them or heard them or tried them already, you can explore the following links,</p>
<ul>
<li><a href="https://staltz.com/an-off-grid-social-network.html">An Off-Grid Social Network</a></li>
<li><a href="https://theinitialcommit.com/2017/04/04/dominic-tarr/">An Interview with Secure-Scuttlebutt's Dominic Tarr</a></li>
<li><a href="https://softwareengineeringdaily.com/2017/05/26/off-grid-social-network-with-andre-staltz/">Audio Podcast - Off Grid Social Network with Andre …</a></li></ul><p>People are already speaking and writing about what is <strong>Scuttlebot</strong>, <strong>Scuttleverse</strong> and <strong>Patchwork</strong>. If you have not read them or heard them or tried them already, you can explore the following links,</p>
<ul>
<li><a href="https://staltz.com/an-off-grid-social-network.html">An Off-Grid Social Network</a></li>
<li><a href="https://theinitialcommit.com/2017/04/04/dominic-tarr/">An Interview with Secure-Scuttlebutt's Dominic Tarr</a></li>
<li><a href="https://softwareengineeringdaily.com/2017/05/26/off-grid-social-network-with-andre-staltz/">Audio Podcast - Off Grid Social Network with Andre Staltz</a></li>
</ul>
<p>My intention in this post is to get you started with all these. Don't worry, it's going to be a cake-walk.</p>
<ol>
<li>Download <a href="https://github.com/ssbc/patchwork/releases/latest">Patchwork</a> (if you are using GNU/Linux, right click the downloaded <code>AppImage</code> file -> properties -> permissions -> <code>tick</code> Allow executing file as program) and double click to start.</li>
<li>Edit your profile on the first run.</li>
<li>Join My Pub - paste the following invite code by clicking on <strong>Join a Pub</strong> in patchwork. <code>pub.purambokku.me:8008:@hoLKNJ54bWYEFEnkUe2Mo7VdQfMbXCaJ/Pc1zrvHh/M=.ed25519~WdHOY+V+EqF1r1pEynaIYZsnhiMdJK+gZhVWspN5gNo=</code></li>
</ol>
<p>If the invite code doesn't work or expired or invalid, do comment here, I will help you join.</p>Self Hosting Guide - Part 12017-02-11T00:00:00+05:302017-02-11T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2017-02-11:/blog/self-hosting-guide.html<p>Quoting my own words from my <a href="hello-world.html">very first post</a>.</p>
<blockquote>
<p>I can always move the site to other providers / host my own, if I at some point needed to abandon github (it's already a proprietary platform).</p>
</blockquote>
<p>Here I am, self-hosting my blog and <a href="https://code.purambokku.me">code</a> as well. When I use the word …</p><p>Quoting my own words from my <a href="hello-world.html">very first post</a>.</p>
<blockquote>
<p>I can always move the site to other providers / host my own, if I at some point needed to abandon github (it's already a proprietary platform).</p>
</blockquote>
<p>Here I am, self-hosting my blog and <a href="https://code.purambokku.me">code</a> as well. When I use the word <strong>self-hosting</strong>, I mean it. The server is sitting in a room at the place where I live currently connected to an ADSL Modem + Router which is in turn connected to Internet via my Internet Service Provider (<strong>ISP</strong>).</p>
<p><img alt="image of orangepi pc" src="http://files.linuxgizmos.com/orangepipc_angle.jpg"></p>
<hr>
<h4>Requirements</h4>
<ol>
<li>A <strong>computer with GNU/Linux operating system</strong> that has to run 24x7. When it has to run 24x7 think about power consumption. You don't need a GUI component to run a server, therefore get rid of Monitors or external displays. You can use it to setup, but beyond that avoind using a display. A SoC (System on Chip) like <strong>Raspberry Pi</strong> (or) <strong>Beaglebone Black</strong> (or) <strong>Orange Pi PC</strong>, etc., can do well. I have mine setup using Orange Pi PC.</li>
<li>A <strong>Web Server</strong> (or) a reverse proxy like <strong>Nginx</strong> or <strong>Apache</strong> or <strong>httpd</strong> to serve the applications on the Web through Internet.</li>
<li>A <strong>DSL/ADSL modem</strong> with support for <strong>port forwarding</strong>, <strong>DHCP IP Reservation for LAN</strong>.</li>
<li><strong>Dynanic DNS client</strong> like <strong>ddclient</strong> to install in the server so as to update the <strong>DNS</strong> records everytime your public IP address changes. Our home connections often do not get static IP address instead our IP addresses are dynamic, which means there is no guarentee that I will get the same IP address tomorrow. IP address are required to reach any computer on Interent, if my IP address keeps on changing everyday or after every few hours, how would my friends or others on the Internet knows that it has changed to new address? This is where DDNS comes in.</li>
<li>An <strong>account on DDNS service</strong> like <a href="https://nsupdate.info">nsupdate</a> (or) <a href="https://freedns.afraid.org">freeDNS</a>. nsupdate is completely free to use, while freeDNS has a free plan as well.</li>
<li><strong>Domain Name</strong> (optional). A name for your site can be purchased from domain registrars like bigrock or godaddy or namecheap etc., This is completely optional. If you can't afford to buy a domain name (or) if you decide you don't need a domain name, both nsupdate and freeDNS provides subdomains. It is like some people would have purchased a domain name and then added it to freeDNS or nsupdate like how I have added <strong>purambokku.me</strong> to freeDNS and also allow others to create a subdomain using this domain for them. Like for example, you can create yourname.purambokku.me or using any public domain name. This is more or less a gift economy.</li>
</ol>
<hr>
<h4>Cost of Self-Hosting (approx.)</h4>
<p>Am not including the cost of modem + Internet connection here.</p>
<ol>
<li><a href="https://www.crazypi.com/single-board-computers-india/orange-pi-india/orange-pi-pc-india">Orange Pi PC</a> - Rs. 2000/-</li>
<li>RJ45 Ehternet Cable 1 - usually around Rs.70-100/-</li>
<li>Class 10 32Gb MicroSD card 1 - Rs. 600-800/-</li>
<li>Domain Name (optional) - starting from Rs. 70/-</li>
</ol>
<p>Apart from optional domain name, the above are one time cost, not something like paying monthly rent to someone. In the next part, I will be writing about preparing your computer for self-hosting.</p>Marx, Wikipedia & Torrents2016-06-17T00:00:00+05:302016-06-17T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2016-06-17:/blog/marx-wiki-torrents.html<ul>
<li><a href="https://en.wikipedia.org/wiki/Karl_Marx">Karl Marx</a> - 19th Century Philosopher, Economist, Sociologist, Journalist and an Revolutionary Socialist.</li>
<li><a href="https://en.wikipedia.org/wiki/Wikipedia">Wikipedia</a> - An Internet encylopedia available in many languages built by people around the world.</li>
<li><a href="https://en.wikipedia.org/wiki/BitTorrent">BitTorrent</a> - A Peer-to-Peer file sharing protocol / program that is used by most of the people around the world.</li>
</ul>
<p>So why did I pick these …</p><ul>
<li><a href="https://en.wikipedia.org/wiki/Karl_Marx">Karl Marx</a> - 19th Century Philosopher, Economist, Sociologist, Journalist and an Revolutionary Socialist.</li>
<li><a href="https://en.wikipedia.org/wiki/Wikipedia">Wikipedia</a> - An Internet encylopedia available in many languages built by people around the world.</li>
<li><a href="https://en.wikipedia.org/wiki/BitTorrent">BitTorrent</a> - A Peer-to-Peer file sharing protocol / program that is used by most of the people around the world.</li>
</ul>
<p>So why did I pick these three? What is so common about these three topics and how are these topics related to each other? For quite sometime, I was reading works based on Marx and was also reading materials that took a marxist approach on analysing the free software and other technologies. It is under this context, I am writing this post.</p>
<h2>Marx & Engels</h2>
<p>Karl Marx is well known for his work on analysing and understanding <strong>Capitalism</strong> and is also known for his famous work along with his comrade <a href="https://en.wikipedia.org/wiki/Friedrich_Engels">Friedrich Engels</a>, <strong><a href="https://www.marxists.org/archive/marx/works/1848/communist-manifesto/index.htm">The Communist Manifesto</a></strong>. As a sociologist, economist and philosophers they both had a vision to change the world. That vision echoed in their famous statement,</p>
<blockquote>
<p>"<strong><a href="https://en.wikipedia.org/wiki/From_each_according_to_his_ability,_to_each_according_to_his_needs">From each according to his ability, To each according to his needs</a></strong>"</p>
</blockquote>
<p>i.e the society they envisioned will revolve around this central theme where people can contribute something to the commons according to their ability or capacity and they can take back from the commons based on how much they need. Whenever people discuss about communism or socialism they miss this central theme and the discussion always gets diverted to the failure of U.S.S.R and other attempts of 20th century.</p>
<p>Marx was also right about capitalism that, </p>
<blockquote>
<p>"It will take science and technology to greater level in order to increase their productivity and it will do wonders". </p>
</blockquote>
<p>And today we are seeing this live all around us and our next generations will continue to see more.</p>
<h2>Wikipedia</h2>
<p>Now heading to Wikipedia. It is no doubt that Wikipedia has disrupted the knowledge sector, especially the Intellectual Property Rights and Copyrights of the encyclopedia industry. Today Wikipedia is one of the world's largest Digital Commons (i.e belongs to everyone) available and continues to grow into many more projects like Wiktionary, Wikibooks, Wikidata, etc., It is also well known fact that Wikipedia is built by people all around the world. We approach wikipedia whenever we wanted to lookup for something (search engines doesn't matter, all of them point to wikipedia) and if I know about something, I can also contribute back to Wikipedia by creating or editing an existing article. This is exactly the same vision of Marx and Engles, taking what is necessary and giving back based on the ability.</p>
<h2>Torrents</h2>
<p>Let's focus on Torrents. People using torrents definitely would have encountered these words, "seeding" and "peers". When we download from a torrent file, we look for more peers. Peers are those people who already have these files in their computers. If those peers upload what they have in their computers to other people who wanted to download the same file through this torrent file, then we call this process as seeding and those peers who does seeding are termed as seeders. While we expect more peers during the download, we look for more seeders. Downloading what you need and seeding back what you can!</p>
<p>These are just two examples. this is the same case with how a free software is also developed. Of course, one can point out and say "hey, the examples you have pointed out are immaterial things. what about material things?". Indeed they are right, Marx's works were based on 19th century capitalism and even with that he is able to pin-point a lot of things about capitalism beyond his age. We shouldn't miss to see the fact that today Capitalism is also riding on these immaterial stuff which in turn reflects on their material wealth. For mens (Marx & Engels) who have developed their framework based on <a href="https://www.marxists.org/reference/archive/stalin/works/1938/09.htm">Dialectical Materialism</a>, they wouldn't be stupid to deal with material stuffs either, for they did not leave any readymade blueprint, rather they left their vision to be carried by the actors of the corresponding age.</p>
<p>Whether the society goes towards dystopia or utopia, we are all collectively responsible for it. So don't stay neutral, pick you side and act.</p>Learning Basics of Radio Physics for Meshnet2016-02-12T00:00:00+05:302016-02-12T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2016-02-12:/blog/learning-basics-radio-physics-meshnet.html<p>I don't exactly remember when & by whom I first came across the idea of meshnet, but I do remember the video that inspired me to work towards meshnet.</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/1tEkyLOh-tY?rel=0" frameborder="0" allowfullscreen></iframe>
<p>From then on, I started to explore more and more links on the web about meshnet and this is how I aggregated …</p><p>I don't exactly remember when & by whom I first came across the idea of meshnet, but I do remember the video that inspired me to work towards meshnet.</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/1tEkyLOh-tY?rel=0" frameborder="0" allowfullscreen></iframe>
<p>From then on, I started to explore more and more links on the web about meshnet and this is how I aggregated the list of various resources, community knowledge base & community meshnet projects.</p>
<p>Out of these resources, I consider a book named <a href="http://wndw.net/" target="_blank">WNDW - Wireless Network in Developing World</a> to be one of the most important resource. The reason I consider it to be important is because this book is a practical guide to build a wireless network written by field experts covering every basics including radio physics, telecommunication basics, antennnas, networking, installation & maintenance. The digital copy of this book is available under <a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">CC-BY-SA</a> and you can download the <a href="http://wndw.net/book.html" target="_blank">free digital copy</a> of this book.</p>
<p>I am finding this book extremely useful and have started learning Radio Physics since the meshnet that we are trying to build is a wireless meshnetwork using 802.11 (Wifi). WiFi signals are electromagnetic radiations (EMR) also known as Radio Signals that operate at 2.4GHz and 5GHz frequency (license exempt bands).</p>
<p>Setting up meshnet involves setting up wireless nodes, antennas that propogates the signals and in order to do that we need to understand the basics of radio physics not just computer applications & protocols.</p>
<p>Any node or host machine has to satisfy certain requirements in order to be able to join a network. These requirements are labelled traditionally as layers like in OSI Layering & TCP/IP Layering.</p>
<p>No matter what layering model, the Physical layer forms the foundation which denotes the signal carrier & the medium of transmission. It is this physical layer that deals mostly with the property of radio physics namely frequency, bandwidth, wavelength, phases, etc., If we proceed without understanding these basics we might end up with a poor network infrastructure.</p>The Internet As We Know2016-02-02T00:00:00+05:302016-02-02T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2016-02-02:/blog/the-internet-as-we-know.html<p><strong>Note</strong>: Links for community initiatives, projects, discussion, articles on meshnet are listed at the end of this post.</p>
<p>Internet (இணையம்) as you know is defined as "network of networks". These networks are setup by users and communities. But inter-connecting these networks across street, cities, state, countries and the world …</p><p><strong>Note</strong>: Links for community initiatives, projects, discussion, articles on meshnet are listed at the end of this post.</p>
<p>Internet (இணையம்) as you know is defined as "network of networks". These networks are setup by users and communities. But inter-connecting these networks across street, cities, state, countries and the world are done by corporations. The corporation could be either a public corporation (driven by Government like BSNL in India) or private corporation (driven by private interests for profit, like Airtel, Reliance, Tata, etc.).</p>
<p>Corporations who inter-connect these simple networks to global network are called Internet Service Providers (ISPs). There are also small scale ISPs who depend on the large corporations for lines and cover only smaller area (for example ACT in Bangalore & Chennai).</p>
<p>The purpose of creating a network is to communicate. This communication could be anything from simple text message, real time chats, VOIP calls, sharing pictures, videos (or) any digital content. So if I have a network in my place and you have a network in your place, it is based on our interests to decide what to share between ourselves.</p>
<p>The problem with the Internet starts here. I have understood 3 major flaws with the current network,</p>
<ol>
<li>Censorship</li>
<li>Mass Surveillance</li>
<li>Violation of Net Neutrality</li>
</ol>
<p><strong>Problem 1 (Censorship)</strong></p>
<p>As I already pointed out above, "it is based on our interests to decide what to share between ourselves" in a network. Since the ISPs are inter-connecting the networks, they automatically gain a power to decide whether to allow data from one network to reach the other network or not. If I send you anything and you are not able to receive only from me or some specific person, there is a lot of possibility that either the ISP that you are connected to or the ISP that I am connected to is censoring communication, thus preventing us from communicating.</p>
<p>Not just that, if you are not able to access any website which you have previously visited and you still know it is accessible from other parts of the world, then you can be very sure that your ISP is censoring you from accessing that website (or) content.</p>
<p>When ISPs can do censorship, how does this statement of "it is based on our interests to decide what to share between ourselves" is true anymore?</p>
<p>This problem can be overcome by using tunnels like VPN, TOR, I2P, Psiphon, etc., But this doesn't remove the porblem. These are just an workaround. The problems still exist.</p>
<p><strong>Problem 2 (Mass Surveillance)</strong></p>
<p>When we already have censorship, it's very clear that ISPs can also inspect or read what we are sending to others & the vice-versa (they can also read what we receive). We think our communications are happening only between ourselves, but since ISPs are in the middle of you and me, it means whatever we send & receive is also visible to the ISPs.</p>
<p>If ISPs can listen and continuously monitor our communications they can also store it permanently in their servers. This is also true with proprietary web platforms like Facebook, Google, Amazon, etc., This is violation of an user's privacy.</p>
<p>Privacy means whoever owns the data should decide when, where and to whom they should reveal that data (i.e the control is with the user). If ISPs (or) the proprietary platform can gain access to these data which you are actually sending it to your friend or relatives this is what we call surveillance. Instead of targeting suspicious users, if everyone are targetted then we call it as mass surveillance and this is a potential threat to Democrarcy.</p>
<p>Imagine a country or a world where everything you do, wherever you go, whoever you meet is monitored or surveilled, would you be the same? Won't the sense of someone monitoring affect your thought process? or how you do things? Is that really you? Are we trying to build a society based on fear instead of mutual consent? </p>
<p>There goes a famous dialogue from the movie <strong>V for Vendetta</strong></p>
<blockquote>
<p>People should not be afraid of their governments. Governments should be afraid of their people.</p>
</blockquote>
<p>By monitoring (or) surveilling the institutions are enforcing obedience into our minds. Most of us won't even bother to point out the mistakes of institutions, there would be no freedom of speech. Everything will boil down to self-censorship.</p>
<p>Obviously, like the previous case we can overcome this by protecting our online communications with the use of mathematics & encryption. The problem with the current Internet is that encryption & decryption are not embedded into the design, rather they have become the burden for the users.</p>
<p><strong>Problem 3 (Violation of Net Neutrality)</strong></p>
<p>We have seen this a lot in our country. We have seen how Facebook along with Reliance & Airtel tried to build a walled garden in the name of Free basics (Internet.org) & Airtel Zero. The strategy they followed is termed as differential pricing / zero rating (i.e charging differently for different services like messenger, VOIP, etc., (or) allowing only certain sites registered with them for free). </p>
<p>Most important thing to note here is how these mega-corporations tried to manipulate and mislead the people through their platforms. In fact, TRAI (Telecom Regulatory Authority of India) has condemned their act as "Platform Abuse".</p>
<p>The above 3 problems are fair enough to destroy the democratic nature and therefore curtain the freedom of the Internet.</p>
<p>Now that we have identified the problems with the Internet, we need to think about solving these problems and to come up with a network design which will not have these problems in first place. People around the world are already into the research of designing such networks. It's called Mesh Networks. There are various communities online, especially the <a href="https://www.reddit.com/r/darknetplan">darknetplan</a> subreddit on reddit.com, the <a href="http://hyperboria.net/">hyperboria</a> community and more.</p>
<p><strong>Articles</strong></p>
<ol>
<li><a href="http://www.wired.com/2014/01/its-time-to-take-mesh-networks-seriously-and-not-just-for-the-reasons-you-think/">It's time to take mesh networks seriously - Wired.com</a></li>
<li><a href="https://www.newscientist.com/article/mg21929294.500-meshnet-activists-rebuilding-the-internet-from-scratch">Meshnet activists rebuilding the Internet from Scratch</a></li>
</ol>
<p><strong>Discussions & Resources</strong></p>
<ol>
<li><a href="http://discuss.fsftn.org/t/is-internets-centralized-architecture-a-problem/133">Problems with the Centralized Architecture</a></li>
<li><a href="http://discuss.fsftn.org/category/engineering-programming/project-meshnet">FSFTN Discussion Forum on Meshnet</a></li>
<li><a href="discuss.fsftn.org/t/free-the-network-hackers-take-back-the-web/557/">Free The Network - Documentary on Meshnet</a></li>
<li><a href="http://p2pfoundation.net/Mesh_Networks">Introduction to meshnet - p2pfoundation.net</a></li>
<li><a href="http://wirelessafrica.meraka.org.za/wiki/index.php/DIY_Mesh_Guide">Mesh Guide - Wireless Africa</a></li>
<li><a href="http://wndw.net/">Wireless Networking in the developing world</a></li>
<li><a href="https://reddit.com/r/darknetplan">Darknetplan - Mesh community on Reddit.com</a></li>
</ol>
<p><strong>Community Initiatives & Projects</strong></p>
<ol>
<li><a href="https://thefnf.org/">The Free Network Foundation</a></li>
<li><a href="http://guifi.net">Guifi.net - Largest mesh network operating from Spain</a></li>
<li><a href="http://freifunk.net/en/">Freifunk - free radio networks group operating from Germany</a></li>
<li><a href="http://project-byzantium.org">Project Byzantium - A live GNU/Linux distribution to create Ad-hoc mesh</a></li>
<li><a href="https://openwrt.org/">OpenWRT - Linux distribution for embedded devices</a></li>
<li><a href="http://www.dd-wrt.com/site/index">DDWRT - Fork of OpenWRT</a></li>
<li><a href="https://librecmc.org/librecmc/home">LibreCMC - Libre Embedded GNU/Linux distribution</a></li>
<li><a href="http://disruptedsystems.org">Rumble - Off the grid, Delay Tolerant Networking</a></li>
<li><a href="http://commotionwireless.net/">Commotion Wireless Mesh</a></li>
<li><a href="http://metamesh.org">Metamesh</a></li>
<li><a href="https://seattlemesh.net/">Seattle Meshnet</a></li>
<li><a href="https://nycmesh.net/">NewYork Meshnet</a></li>
<li><a href="portlandmeshnet.org">Portland Meshnet</a></li>
</ol>Do You Have A URL?2015-12-19T00:00:00+05:302015-12-19T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2015-12-19:/blog/revolt-against-free-basics.html<h3>1. Do I have a (web)site / blog?</h3>
<blockquote>
<p>Yes, I do. You are reading it and also I have some other blogs too.</p>
</blockquote>
<h3>2. Can you access it?</h3>
<blockquote>
<p>Answer 1: <strong>Yes</strong>, if you are connected to the global network called Internet.</p>
<p>Answer 2: <strong>No</strong>, if you are trying to access …</p></blockquote><h3>1. Do I have a (web)site / blog?</h3>
<blockquote>
<p>Yes, I do. You are reading it and also I have some other blogs too.</p>
</blockquote>
<h3>2. Can you access it?</h3>
<blockquote>
<p>Answer 1: <strong>Yes</strong>, if you are connected to the global network called Internet.</p>
<p>Answer 2: <strong>No</strong>, if you are trying to access from Free Basics by Facebook.</p>
</blockquote>
<h3>3. Why is my blog / site not accessible through Free Basics?</h3>
<blockquote>
<p>Becuase to make my site / blog accessible through Free Basics, I need to register my site URL to them (Facebook).</p>
</blockquote>
<h3>4. Why did I not add my URL to Facebook? Is it a paid service?</h3>
<blockquote>
<p>No, it's not a paid service. Even though it's free to register my URL, I am not going to add there. <strong>Why should I add my site to them, when my URL is already on the Internet? There is only one Internet. Free Basics !== Internet</strong></p>
<p>Facebook is trying to take over the control of the global network in their hands and establish their empire in it. This is nothing short of Monopoly.</p>
<p>The Internet is always Free (Free as in Freedom) and Facebook is trying to put a chain on those free hands.</p>
<p>To understand the context better, there are two ways of Censoring in Internet:</p>
<ol>
<li>Blacklisting - list of sites not to allow (blocked sites).</li>
<li>Whitelisting - list of allowed sites.</li>
</ol>
<p><strong>Free Basics is a WHITELIST CENSORSHIP</strong> which divides / breaks the Internet into fragments.</p>
</blockquote>
<h3>5. What do we need to do now?</h3>
<blockquote>
<p><strong>Revolt against Freebasics</strong>! If you have a (WEB)site or blog take a Stand. Do not add your Website / Web-blog / Web Application / Web Service to Free Basics List.</p>
</blockquote>
<h3>Let us Stand for Internet Freedom.</h3>Uncensored - Circumventing Censorship2015-10-12T00:00:00+05:302015-10-12T00:00:00+05:30Prasanna Venkadeshtag:prasannavenkadesh.github.io,2015-10-12:/blog/uncensored.html<p>It's been 2 months since I have enrolled myself for the post graduate course in Networks & Internet Engineering (NIE) at Pondicherry University. The campus is a beautiful place to be and has rich bio-diversity preserved inside. It is also a Wi-Fi enabled campus scaling to various schools from engineering to …</p><p>It's been 2 months since I have enrolled myself for the post graduate course in Networks & Internet Engineering (NIE) at Pondicherry University. The campus is a beautiful place to be and has rich bio-diversity preserved inside. It is also a Wi-Fi enabled campus scaling to various schools from engineering to management, Life Sciences to Performing Arts, Social Sciences to Medical Sciences, etc.,</p>
<p>I belong to Department of Computer Science which comes under School of Engineering & Technology and the funny part is our department receives very poor Wi-Fi signal at class rooms, sometimes not even that. As a student of NIE, I feel the classroom is powerless without even access to wireless networks (at times, we do form ad-hoc networks).</p>
<h3>The Problem (Status Quo)</h3>
<p>Ok, let's focus on the censorship part from here on. Even if one can get a strong wi-fi signal or access to the wired network, not all the websites over the internet are accessible through the network. Social networks like Facebook, Video streaming platforms like Youtube, etc., are blocked in a temporal manner (i.e these sites cannot be accessed during class hours). The problem here is, not everyone have uniform class hours. So if one set of people are inside classrooms, some other set of people at some other department will be idle and they won't be able to access websites that are blocked. These rules are applicable even on weekends when the university is not functioning.</p>
<p>There are also other issues like,</p>
<ul>
<li>torrent downloads are blocked.</li>
<li>downloading files more than a specific size are blocked (for eg, when the free software users group were preparing to organize a GNU/Linux installation fest inside the campus and we wanted to download the latest / stable iso images of distributions like Ubuntu, Fedora, Trisquel, Mint, etc., we were not allowed to download since the file size were large).</li>
<li>a GNU/Linux user could not use the package management tools like <strong>apt-get</strong> (or) <strong>dnf</strong> to update or download tools from the distributions repository which is really irritating, since this is the most preferred way of installing a package (or) software in gnu/linux distributions.</li>
</ul>
<h3>The Solution (Moving Forward)</h3>
<p>With technology, there are always ways to circumvent blockades. I would like to remind you incidents like <a href="http://mashable.com/2011/01/27/bypass-twitter-facebook-block-egypt/">this</a> and <a href="http://www.wired.com/2014/10/firechat-hong-kong-usage/">this</a>. Using web proxy seems to be a easy option for most of them to access sites that are blocked. But proxy sites will soon hit it's limitations, in our scenario described above, using web proxy one cannot download large files, web proxy sites has no connection with respect to torrent downloads & solving apt-get or package download problem. Also if certain sites are blocked in the country that the web proxy site is located, then that would be the dead end.</p>
<p>Our university uses a proxy server that sits in between the local networks (i.e the campus network) and the rest of the Internet and this proxy server is powered by a software named <strong><a href="http://www.squid-cache.org/">squid</a></strong> which is a <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>. Every request made from a computer connected to a university network will have to pass or go through the proxy server. The proxy server would inspect the packets header and match it against with the rules written to allow / drop the packets by the network administrator. They could write complex rules combining multiple parameters like the url pattern, response size & type, etc.,</p>
<p>Like everyone else in the campus, I was also confronted with these problems, so I decided to share what works for me, so that you people could use it to circumvent it, especially gnu/linux users.</p>
<p>I have seen most of the people inside the campus are using an application in their android phones called <strong><a href="https://psiphon.ca/">Psiphon</a></strong> which also is a free software. But Psiphon is limited to only Android and Windows currently and so other platforms are left out especially gnu/linux users. Since Psiphon is free software, we can attempt to build our own client for the platforms that are left out.</p>
<p>I use <strong><a href="https://torproject.org">Tor</a></strong> network to bypass the censorship. Tor is a <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a> project aimed to provide anonymity for users, journalists, activists, etc., around the world and also used to bypass the censorship. This <a href="https://www.youtube.com/watch?v=JWII85UlzKw">video</a> will better explain the idea behind tor.</p>
<p>Both Psiphon and Tor's objective are completely different. Psiphon's objective is to <code>bypass censorhip</code> while Tor's objective is to provide <code>anonymity</code> and the fact that tor can also bypass censorship is just a <strong>side-effect of it's network architecture</strong>. So with tor one can stay anonymous while circumventing censorship too. Moreover Tor is cross-platform. It has clients for GNU/Linux, Windows, Mac & Android. Tor also has got a <code>Tor browser</code> for desktops which is a fork of Firefox browser and tweaked to be compatible for Tor and released.</p>
<p>I am using Fedora 22 in my laptop and I have installed Tor daemon and have configured my existing firefox browers to use socks proxy. To install Tor in gnu/linux distributions we need access to uncensored internet at the first place, since apt-get (or) dnf yum won't be able to download through the censored network here. So if you visit your friends house with Internet access (or) if you have other means of connecting to internet like mobile data, you can use that to install tor.</p>
<p>Instructions to,</p>
<ul>
<li>install Tor in <a href="https://www.torproject.org/docs/rpms.html.en">Fedora / CentOS</a>.</li>
<li>install Tor in <a href="https://www.torproject.org/docs/debian.html.en">Debian / Ubuntu / LinuxMint</a></li>
</ul>
<p>Once you have installed tor successfully, also install another tool named <code>proxychains</code> (usage is explained below).</p>
<p>Instructions to install proxychains,</p>
<ul>
<li>fedora:<blockquote>
<p>sudo dnf -C install proxychains</p>
</blockquote>
</li>
<li>debian / ubuntu / mint:<blockquote>
<p>sudo apt-get install proxychains</p>
</blockquote>
</li>
</ul>
<p>Follow these instructions to set it up and start tor.</p>
<ul>
<li>search for <code>terminal</code> in applications and open it.</li>
<li>if your network is behind a proxy server, we need to enter the proxy location in torrc file. In our university we are sitting behind a squid proxy server and the location is <code>http://10.10.80.11:3128</code> and <code>https://10.10.80.11:3128</code></li>
<li>copy both (http and https) url and enter the following in terminal which will open the torrc file in nano text editor<blockquote>
<p>sudo nano /etc/tor/torrc</p>
</blockquote>
</li>
<li>scroll down to the end of the file and type the following</li>
</ul>
<blockquote>
<p>HTTPProxy 10.10.80.11:3128</p>
<p>HTTPSProxy 10.10.80.11:3128</p>
</blockquote>
<p>press <code>ctrl+x</code> then <code>Y</code> and press <code>Enter</code> to save and quit. The edited file should look like the image below</p>
<p><img src="https://ipfs.io/ipfs/QmYdULp2HnNir4d9EUnr2pcQYLAiinZEdRKN4VTDn3RLJe"/></p>
<p>Now that we have successfully configured <code>tor</code> to use the network proxy, let's start using tor.</p>
<ol>
<li><code>tor</code> will be started automatically in the background for ubuntu / debian / mint. Let's stop it first through terminal.<blockquote>
<p>sudo service tor stop</p>
</blockquote>
</li>
<li>Now let's start the <code>tor</code> again. This is a common step for both fedora and debian based distributions.<blockquote>
<p>tor</p>
</blockquote>
</li>
<li>You should be seeing some outputs in number of lines like Bootstrapped 0% (refer the image below). When tor reaches <code>Bootstrapped 100%: done</code> it means our computer can now participate in the tor network.</li>
<li><code>tor</code> is pre-configured to run on port 9050 in your computer.</li>
</ol>
<p><img src="https://ipfs.io/ipfs/QmcJf5qhgDf9DMHU7N4qhJ5vYPyxum6AHKc5YWyiDrcqsD"/></p>
<p>Note: The reason why stopped and started tor is that, by default tor will be running in the background if started automatically, when we invoke <code>tor</code> via command line manually, we will be able to see the logs and can check if tor is successfully establishing the connection or struck somewhere so that we can try to debug.</p>
<p>Just leave the terminal open with tor running and let's open <code>firefox</code> browser to use tor.</p>
<ul>
<li>in firefox, go to <code>Edit</code> > <code>preferences</code> > <code>Advanced</code> > <code>Network</code> > <code>Settings</code> > <code>Manual Proxy configuration</code></li>
<li>find <code>SOCKS Host</code> and enter <code>localhost</code> in the first field and <code>9050</code> in the port field.</li>
<li>click on <code>ok</code> and now you should be able to visit websites that are blocked previously.</li>
</ul>
<p>Website censorship is solved, now let's focus on package manager. Remember we installed <code>proxychains</code>? This is where we will make use of it.</p>
<ul>
<li>Open <code>/etc/proxychains.conf</code> file using <code>nano</code> editor like how we opened the <code>/etc/tor/torrc</code> file.</li>
<li>scroll down to the end of the file and you could find <code>#socks4 127.0.0.1 9050</code>.</li>
<li>if there is a <code>#</code> like above, just delete that character alone, save and quit the editor.</li>
</ul>
<p>With <code>tor</code> running in the background, now if we invoke any program from the <code>terminal</code> using <code>proxychains</code> we can make that program to redirect the traffic through <code>tor</code>. For example,</p>
<blockquote>
<p>sudo proxychains apt-get install uget</p>
</blockquote>
<p>will install uget download manager and install it in your debian based machines. I hope you got the key point here. If you want to redirect any application to use tor, you will have to set <code>SOCKS proxy</code> for the application. the proxy address would be <code>localhost:9050</code> or <code>127.0.0.1:3128</code> where <code>localhost</code> or <code>127.0.0.1</code> is the address and <code>3128</code> is the port number. For applications which doesn't support SOCKS proxy yet, you can use <code>proxychains</code>.</p>
<p>Also you can use <strong><a href="http://ugetdm.com/">uGet Download Manager</a></strong> to download files (uget has support for SOCKS proxy, so remember to start tor and set socks 4 proxy in uget preferences before starting your download).</p>
<p>The above chain of solutions solves the following problems that I already mentoned above:</p>
<ul>
<li>bypassing website censorship.</li>
<li>downloading and installing software (or) package management in gnu/linux distributions.</li>
<li>downloading large files.</li>
</ul>
<p>The only problem that relies unanswered is <code>torrent downloads</code>. Using <code>torrent</code> downloads via <code>tor</code> traffic is a <a href="https://blog.torproject.org/blog/bittorrent-over-tor-isnt-good-idea">bad idea</a>.</p>
<h3>Endnote</h3>
<blockquote>
<p>While the State exists there can be no freedom; when there is freedom there will be no State - V.I. Lenin</p>
</blockquote>
<p>Right from the beginning we have been encountering names of software like <code>squid</code>, <code>psiphon</code>, <code>tor</code>, <code>proxychains</code>, <code>uget</code>, <code>fedora</code>, <code>debian</code>, <code>ubuntu</code>, etc., all of them are <strong>Free Software</strong>. Amidst the fact that <code>free software</code> stresses the freedom of user, it doesn't completely libreate or free the masses from oppression.</p>
<p>Here we are seeing two classes of people, one is the <code>oppressing</code> class and the other is the <code>oppressed</code> class both are using Free Software for their purposes. In our case <code>squid</code>, a free softwrae is used to enforce censorship and <code>psiphon</code>, <code>tor</code>, <code>proxychains</code>, etc., which are free softwrae too, are used to fight back. But not everyone are liberated. <code>You and I</code> can be exceptions, but exceptions cannot become mainstream.</p>
<p><strong>Science & Technology</strong> can be used as tools and catalyst while fighting for freedom, but they alone cannot bring about freedom or revolution. We also need to be <strong>politically aware</strong>.</p>