-
-
Save ShapeShifter499/2aed7b6975b31341ea606ad8fea3fc09 to your computer and use it in GitHub Desktop.
| #!/storage/xbin/bash | |
| # This script should help forward VPN over any tethered connection on a Android device. Turn on tethering, then enable VPN, then run this script. | |
| # Inital variable setup | |
| tethering=0 | |
| # Setup iptables before forwarding VPN | |
| iptables -A POSTROUTING -o tun0 -j MASQUERADE -t nat | |
| # Check if bluetooth is tethered, if so forward VPN | |
| blue=$(/system/bin/ifconfig bt-pan 2>/dev/null | grep "UP" | wc -l) | |
| blueIP=$(ifconfig bt-pan | grep "inet addr" | cut -d":" -f2 | cut -d' ' -f1 | cut -d'.' -f1-3) | |
| if [[ "$blue" -gt 0 ]]; | |
| then | |
| iptables -A FORWARD -i tun0 -o bt-pan -m state --state RELATED,ESTABLISHED -j RETURN | |
| iptables -A FORWARD -i bt-pan -o tun0 -m state --state INVALID -j DROP | |
| iptables -A FORWARD -i bt-pan -o tun0 -j RETURN | |
| ip rule add from $blueIP.0/24 lookup 61 | |
| ip route add default dev tun0 scope link table 61 | |
| ip route add $blueIP.0/24 dev bt-pan scope link table 61 | |
| ip route add broadcast 255.255.255.255 dev bt-pan scope link table 61 | |
| blueTethered=1 | |
| tethering=1 | |
| echo "Set up VPN on Bluetooth sucessfully" | |
| else | |
| blueTethered=0 | |
| echo "Not tethering on Bluetooth" | |
| fi | |
| # Check if USB is tethered, if so forward VPN | |
| usb=$(/system/bin/ifconfig rndis0 2>/dev/null | grep "UP" | wc -l) | |
| usbIP=$(ifconfig rndis0 | grep "inet addr" | cut -d":" -f2 | cut -d' ' -f1 | cut -d'.' -f1-3) | |
| if [[ "$usb" -gt 0 ]]; | |
| then | |
| iptables -A FORWARD -i tun0 -o rndis0 -m state --state RELATED,ESTABLISHED -j RETURN | |
| iptables -A FORWARD -i rndis0 -o tun0 -m state --state INVALID -j DROP | |
| iptables -A FORWARD -i rndis0 -o tun0 -j RETURN | |
| ip rule add from $usbIP.0/24 lookup 61 | |
| ip route add default dev tun0 scope link table 61 | |
| ip route add $usbIP.0/24 dev rndis0 scope link table 61 | |
| ip route add broadcast 255.255.255.255 dev rndis0 scope link table 61 | |
| usbTethered=1 | |
| tethering=1 | |
| else | |
| usbTethered=0 | |
| echo "Not tethering on USB" | |
| fi | |
| # Check if WIFI is tethered, if so forward VPN | |
| wifi=$(dumpsys wifi | grep curState=TetheredState | wc -l) | |
| wifiIP=$(ifconfig wlan0 | grep "inet addr" | cut -d":" -f2 | cut -d' ' -f1 | cut -d'.' -f1-3) | |
| if [[ "$wifi" -gt 0 ]]; | |
| then | |
| iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j RETURN | |
| iptables -A FORWARD -i wlan0 -o tun0 -m state --state INVALID -j DROP | |
| iptables -A FORWARD -i wlan0 -o tun0 -j RETURN | |
| ip rule add from $wifiIP.0/24 lookup 61 | |
| ip route add default dev tun0 scope link table 61 | |
| ip route add $wifiIP.0/24 dev wlan0 scope link table 61 | |
| ip route add broadcast 255.255.255.255 dev wlan0 scope link table 61 | |
| wifiTethered=1 | |
| tethering=1 | |
| echo "Set up VPN on WIFI successfully" | |
| else | |
| wifiTethered=0 | |
| echo "Not tethering on WIFI" | |
| fi | |
| # Clean up if no tethering is occuring | |
| if [[ "$tethering" -eq 0 ]]; | |
| then | |
| iptables -D POSTROUTING -o tun0 -j MASQUERADE -t nat | |
| if [[ "$blueTethered" -gt 0 ]]; | |
| then | |
| iptables -D FORWARD -i tun0 -o bt-pan -m state --state RELATED,ESTABLISHED -j RETURN | |
| iptables -D FORWARD -i bt-pan -o tun0 -m state --state INVALID -j DROP | |
| iptables -D FORWARD -i bt-pan -o tun0 -j RETURN | |
| ip rule add from $blueIP.0/24 lookup 61 | |
| ip route add default dev tun0 scope link table 61 | |
| ip route add $blueIP.0/24 dev bt-pan scope link table 61 | |
| ip route add broadcast 255.255.255.255 dev bt-pan scope link table 61 | |
| fi | |
| if [[ "$usbTethered" -gt 0 ]]; | |
| iptables -D FORWARD -i tun0 -o rndis0 -m state --state RELATED,ESTABLISHED -j RETURN | |
| iptables -D FORWARD -i rndis0 -o tun0 -m state --state INVALID -j DROP | |
| iptables -D FORWARD -i rndis0 -o tun0 -j RETURN | |
| ip rule delete from $usbIP.0/24 lookup 61 | |
| ip route delete default dev tun0 scope link table 61 | |
| ip route delete $usbIP.0/24 dev rndis0 scope link table 61 | |
| ip route delete broadcast 255.255.255.255 dev rndis0 scope link table 61 | |
| fi | |
| if [[ "$wifiTethered" -gt 0 ]]; | |
| iptables -D FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j RETURN | |
| iptables -D FORWARD -i wlan0 -o tun0 -m state --state INVALID -j DROP | |
| iptables -D FORWARD -i wlan0 -o tun0 -j RETURN | |
| ip rule delete from $wifiIP.0/24 lookup 61 | |
| ip route delete default dev tun0 scope link table 61 | |
| ip route delete $wifiIP.0/24 dev wlan0 scope link table 61 | |
| ip route delete broadcast 255.255.255.255 dev wlan0 scope link table 61 | |
| echo "Cleaned up iptables rules since we are not tethering" | |
| else | |
| echo "Sucessfully forwarding VPN over tethering" | |
| fi |
xsXasccd
Turn hotspot first or vpn first ?
@dimaslanjaka I posted this so long ago that I'm not even sure it's valid anymore for newer android devices. I'd recommend people here try another method or maybe this application https://f-droid.org/en/packages/be.mygod.vpnhotspot/
your script still working. hotspot > vpn on > run script.
thanks
your script still working. hotspot > vpn on > run script.
thanks
Hello bro, where should i put this script on the path?
Hello bro, where should i put this script on the path?
@ibnusaja. Taruh dimana saja. asal call root dahulu.
# misal di sdcard
su
cd sdcard
sh vpn-hotspot.sh #/sdcard/vpn-hotspot.sh
# OR
su
sh /sdcard/vpn-hotspot.sh
# OR termux dynamic shell script
bash <(curl -s https://gist.githubusercontent.com/ShapeShifter499/2aed7b6975b31341ea606ad8fea3fc09/raw/68907a15616c68578e303542c34596504cdfc8fc/vpn-hotspot.sh)Wlan0 bt-pan usb ip failed to get it here i am replace with this ,its workit on my device
ifconfig wlan0 | egrep -o 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | cut -d' ' -f2 | cut -d'.' -f1-3
But there was no internet aces to the client when using this script ,event not edited script ,and thats was make my phone bootloop
Ilang postingan gue joss
dear friend,
i use adb shell to connect to my android6.0 cell phone , type the shell commands. but it doesnot work. can you help me ?