Reverse Tether from Linux to Android

0
1523

We all have heard the name of tethering, right? It’s the method using which an Android device can work as the source of internet connection to a system. It’s super useful for situations when your system doesn’t have a Wi-Fi adapter (rare case, of course) or for some other reasons, you need your phone’s connectivity on your desktop/laptop/notebook etc.

Reverse tethering, as the name suggests, is the opposite of tethering. In this scenario, the Android phone is there to enjoy the internet connectivity from the desktop/laptop. Previously, it was super difficult as we had to undergo a seriously complex procedures using iptables, bridged connections etc. Thanks to the hard work of a developer, there’s an easy tool for Linux systems to reverse tether without any of those complexities. The tool has a nice, difficult name – Gnirehtet.

Important – Before going further, make sure that your Android has root unlocked. This is a must or much of the tool’s functionalities won’t work. Rooting an Android device, in many cases, will cause warranty void and other possible issues like bricking the phone. Check out your phone model on XDA Developers forum for a reliable method to root.

Don’t forget to check out this Android threat ADB.Miner that uses the open ADB ports.

Preparing the system

It’s time to setup Gnirehtet. First, we need the essential Android tools. Run the following command –

  • Ubuntu
sudo apt install android-tools-adb android-tools-fastboot

  • Debian
sudo apt-get install android-tools-adb android-tools-fastboot
  • OpenSUSE
sudo zypper in android-tools-adb android-tools-fastboot
  • Fedora
sudo dnf install android-tools-adb android-tools-fastboot
  • Arch Linux
sudo pacman -S android-tools-adb android-tools-fastboot
  • Generic Linux instructions

If your system isn’t listed above, you have to get the compressed package of the command line tools only. Then, extract the folder to a suitable place and add the path to the system’s environment variable.

Check out your ADB version –

adb version

Installing Gnirehtet

It’s finally time to get the tool. Run the following command –

wget https://github.com/Genymobile/gnirehtet/releases/download/v2.2.1/gnirehtet-rust-linux64-v2.2.1.zip

Note that there’s also a Java version, but it’s not recommended. It will cause higher CPU and memory usage and may not work properly.

wget https://github.com/Genymobile/gnirehtet/releases/download/v2.2.1/gnirehtet-java-v2.2.1.zip

After downloading, extract the archive.

unzip gnirehtet-rust-linux64-v2.2.1.zip
OR
unzip gnirehtet-java-v2.2.1.zip

Switch the working directory to the Gnirehtet directory.

cd gnirehtet-rust-linux64

Configuring Android for reverse tethering

At first, from the Android device, go to Settings >> Developer options and enable “USB Debugging”.

Connect the device via USB and run the command on Linux terminal –

su -
OR
sudo -s

adb start server

Once your device is unlocked, return to the terminal and run this command –

adb kill-server

Using Gnirehtet

Start the terminal and run the following commands –

su -
OR
sudo -s

./gnirehtet autorun

You’ll get this notification in the Android phone. Allow the connection.

You’ll notice this icon at the top.

Re-connecting Android

Sometimes, the USB port may disconnect without warning or you may have to disconnect it as well. In that case, reconnect the device via USB and run these commands –

cd ~/gnirehtet
sudo ./gnirehtet restart

Stopping Gnirehtet

If you want to stop the reverse tethering connection, run this command –

cd ~/gnirehtet-*

sudo ./gnirehtet stop

Sometimes, this command won’t kill the reverse tethering programs properly. You have to run the following commands for properly killing the tool –

pidof ./gnirehtet

sudo kill -9 <process_number>

Enjoy!

LEAVE A REPLY

Please enter your comment!
Please enter your name here