How do I make reverse tethering work?
Check out Gnirehtet from Genymotion. It's the most simple solution I've come across.  There's no root required. The only requirements are that you should have Java 8 and recent version of adb configured.

Root: Not required

OS: Linux, Mac, Windows

Android device : Android 5.0+ [API 21] 

Steps


Download the latest version of gnirehtet from this link.
Extract the zip
Connect the phone to computer with usb debugging enabled
Run ./gnirehtet rt
Accept the VPN request on phone and enjoy.
To stop, Ctrl+C 




References:


https://github.com/Genymobile/gnirehtet
http://openjdk.java.net/install/index.html