krlvm / PowerTunnel-Android

Powerful and extensible proxy server with anti-censorship functionality for Android
GNU General Public License v3.0
1.66k stars 125 forks source link

Doesn't work on A11 #82

Closed ghost closed 2 years ago

ghost commented 3 years ago

App Version: 2.0-rc3/rc4 Device: Redmi Note 8 (ginkgo) ROM: crDroid A11

The pre-release versions do not work on A11. I have tried using the default DoT & DoH servers as well as custom dns servers. I also tried disabling chunking mode and enabling SNI Spoil (installed the certificate).

I'm currently using the latest stable release. The default DoT servers work great, but custom dns & the default DoH servers don't work.

Please let me know if there is any additional information I can provide you with.

powertunnel.log.txt powertunnel.log (1).txt

krlvm commented 3 years ago

Hello, what specific servers are you trying to use?

ghost commented 3 years ago

With the latest pre-release versions, I tried using the default Google & Cloudflare DoT & DoH. I even tried manually entering the dns hostnames in the custom field. Didn't work. It says connected in the status bar, but in chrome I get "ERR_CONNECTION_TIMED_OUT" & "Took too long to respond". Also none of my other apps connect.

krlvm commented 3 years ago

Can't reproduce the issue, make sure you follow this pattern:

ghost commented 3 years ago

I'll try that again... But, shouldn't the default dns providers work when selected?

krlvm commented 3 years ago

The pre-installed DNS providers should work: you can test them here

ghost commented 3 years ago

Tried with the latest hotfix build & my device still can't connect. I'm not sure if these logs are of any help.

powertunnel.log.txt 2021-09-02-00-19-59.log

krlvm commented 3 years ago

The crash you reported is not related to this issue, are you trying to connect to a blocked website or DNS just does not work? There's no errors in your logs, but I recently changed DNS Resolving logic, can you try v2.0-rc2? It also may be a bug in your firmware (as I understand it, you are using a custom ROM), try using Proxy mode without VPN. What exactly did you write the DNS address?

ghost commented 3 years ago

The pre-release versions just won't work. What's strange is, if there's an issue with the firmware, then the stable version shouldn't work too, but it does (except for doh).

Hopefully this recording explains it better...

https://user-images.githubusercontent.com/89892692/131788679-85a9c47c-c763-49ac-a617-265029dafef6.mp4

krlvm commented 3 years ago

There might be a problem with the VPN Interceptor, try this build: PowerTunnel-99dns2.zip

ghost commented 3 years ago

Still doesn't work i'm afraid...

krlvm commented 3 years ago

Please, open plugin manager, uninstall DNS plugin and install this version (extract .jar from .zip first), which prints debug messages, then send logs: DNSResolver-Android.zip

ghost commented 3 years ago

powertunnel.log.txt

Hope this helps...

krlvm commented 3 years ago
09-03 10:38:14.978 12450 19318 I DNSPlugin: Plugin is supported by your OS (Java >= 8)
09-03 10:38:14.979 12450 19318 I DNSPlugin: Preset: CUSTOM
09-03 10:38:14.979 12450 19318 I DNSPlugin: DNS Address:  ; ... <-----

Looks like you entered an empty DNS address

ghost commented 3 years ago

In that same log, you'll find I attempted to also use Cloudflare & Google. Here's another log.

powertunnel.log.txt

Just to clarify - If the dns address field is left blank, shouldn't my isp's dns be used as default?

krlvm commented 3 years ago

Yes, if the field is empty, your ISP DNS will be used.

one.one.one.one will not work because it is URL while you trying to use it as regular DNS server - you need to use either 1.1.1.1 for plain DNS, either https://1.1.1.1/dns-query for DoH

ghost commented 3 years ago
09-03 10:38:14.978 12450 19318 I DNSPlugin: Plugin is supported by your OS (Java >= 8)
09-03 10:38:14.979 12450 19318 I DNSPlugin: Preset: CUSTOM
09-03 10:38:14.979 12450 19318 I DNSPlugin: DNS Address:  ; ... <-----

Looks like you entered an empty DNS address

This was with the dns field empty...

ghost commented 3 years ago

Yes, if the field is empty, your ISP DNS will be used.

one.one.one.one will not work because it is URL while you trying to use it as regular DNS server - you need to use either 1.1.1.1 for plain DNS, either https://1.1.1.1/dns-query for DoH

This log is with, 1.1.1.1 & https://1.1.1.1/dns-query. powertunnel.log.txt

krlvm commented 3 years ago

Did you try to open any website in that session? I see that no request to the proxy server went through, most likely the problem is with the VPN Interceptor.

ghost commented 3 years ago

Yes... In the below log (sent earlier today), you'll see I tried connecting to dnsleaktest.com among other websites.

https://github.com/krlvm/PowerTunnel-Android/files/7103446/powertunnel.log.txt

09-03 10:33:20.758 12450 18114 I DNSListener: Client requested proxy 09-03 10:33:20.763 12450 18114 I DNSListener: Got DNS Request: www.dnsleaktest.com / 443 09-03 10:33:20.774 12450 18114 W o.x.D*.ResolverConfig: Failed to initialize provider

If you also check the recording I sent yesterday, you'll notice I tried opening dnsleaktest.com & it just won't load/open.

krlvm commented 3 years ago

After re-reading the latest log I'm sure it is a problem with VPN Interceptor, try to open an address that does not need DNS Resolving (e.g. https://1.1.1.1 - it is already resolved) in web browser: if the problem is not related to DNS, it will fail to load.

ghost commented 3 years ago

You're right... I set the custom dns to 1.1.1.1 & opened https://1.1.1.1 in chrome & it did not load.

krlvm commented 3 years ago

Can you try to load https://1.1.1.1 without the custom DNS server? I think the problem is in VPN Interceptor, looks like it intercepts its own traffic, so it goes to an endless loop.

ghost commented 3 years ago

I did, yes... & it failed to load.

Please let me know if there's anything else you'd like me to check.

krlvm commented 3 years ago

Thank you very much for the detailed information, the only change in the VPN Interceptor logic since version 1.9.1 is that now the proxy server receives the hostname instead of the IP address (#73), in order to exclude that the problem is related to the proxy server, you can put the application in Proxy mode (after that, you need to configure it in the WiFi or mobile network settings) and check if the problem is fixed.

This build has the old VPN behaviour restored: PowerTunnel-99u5.zip

ghost commented 3 years ago

Using the app in proxy mode is what I'd like to avoid... Setting up each app to use proxy is too cumbersome.

I really hope this can be fixed.

& thank you for the build with the old VPN behaviour... I'll try it once I get home.

krlvm commented 3 years ago

Attached build doesn't work?

ghost commented 3 years ago

I'll try it in some time... I'm in class right now, sorry.

ghost commented 3 years ago

@krlvm No, it doesn't work...

krlvm commented 3 years ago

This is really strange, I've tested it on five devices from different vendors and with different Android versions and can't reproduce, I've built a version with extended debugging including debug messages from VPN Interceptor: PowerTunnel-99dbg.zip

I'd suggest to clear application data and disable all plugins to test it

ghost commented 3 years ago

The build you provided with the old VPN behaviour still had version 1 preview 4 dns plugin. Which is why, I guess, didn't work.

Here are logs from the version with extended debugging. I cleared all app data & disabled plugins before collecting the logs.

powertunnel.log.txt

krlvm commented 3 years ago

The problem seems to be not in the DNS, but in the VPN and proxy connection. The logs show that the requests are correctly reaching the proxy server, but for some reason there is no response.

Please, switch to Proxy mode temporary to eliminate the possibility of a problem on the proxy server side. Since you are using Bromite it's very easy, open Settings -> Privacy -> Proxy Configuration, set "single proxy" to PROXY 127.0.0.1 and tap "Apply". Then you can easily disable it by clicking "Clear", so it shouldn't cause much inconvenience.

photo_2021-09-04_13-01-08

This build has additional debug messages which should help to diagnose the root problem. You can try with DNS Plugin off and on. Sorry for the inconvenience. PowerTunnel-99proxydbg.zip

ghost commented 3 years ago

Thank you.

I'll stick to version 1.9.1 for now.

krlvm commented 3 years ago

Ok, let me know when you test the new version.

ghost commented 3 years ago

Sure... Here's the log

powertunnel.log.txt

krlvm commented 3 years ago

Did you manage to open a website this time, or were you still getting the timeout error? It also looks like you ran it in VPN mode.

ghost commented 3 years ago

Hi! I am terribly sorry... Yes, that was in vpn mode. This is using proxy mode & I set single proxy to PROXY 127.0.0.1:8085 in bromite. Websites still wont open.

powertunnel.log.txt

krlvm commented 3 years ago

Thanks for the log, looks like responses doesn't come to the proxy server, it may be related to the way proxy handles HTTPS packets.

Are plain-HTTP websites like http://13.32.23.27/ or http://neverssl.com loading in any mode?

ghost commented 3 years ago

No, those plain-HTTP websites don't open.

powertunnel.log.txt - Proxy mode log

powertunnel.log (1).txt - vpn mode log

krlvm commented 3 years ago

Thank you, it is now clear that this is not a DNS problem: DnsLogger: onResolutionRequest(github.com -> 13.234.210.38) DnsLogger: onResolutionRequest(neverssl.com -> 205.251.253.205)

However, no responses come, while the VPN/Proxy behaviour hasn't changed since v1.9.1. There's also may be some connectivity bugs in the build i sent because it comes from the active development branch, try reinstalling the latest stable preview version.

Do you use any firewall or network monitoring tool?

I just fixed a similar bug and noticed that the behavior of the proxy server is exactly the same: it receives requests, but does not send responses, when you tried to open http://neverssl.com you had an error handled by the browser (as in the screenshot) , or you saw some kind of text error (text in the upper left corner, for example "Bad Gateway" or "Bad Host")?

1

I recall that I was getting the same problem as yours when I was developing the first version of the application over a year ago.

ghost commented 3 years ago

The error was, "ERR_TIMED_OUT".

There was no text error in the upper left corner.

0z5 commented 2 years ago

I don't know if it's a related issue, however, on my Huawei SNE-LX1 (A10) device, this app works perfectly, however on my Samsung A705FN (A11) device, it doesn't work at all. I've tried different combinations of LibertyTunnel settings and I've had no luck at all with them.

new.log.txt

Here's my log file. Note that I only get "An IOException occurred on ProxyToServerConnection: Connection reset by peer" while trying to connect to a government-blocked website, such as WikiLeaks or Pastebin. I had no issues on websites like Google, Youtube and etc.

(This is the official release version of 2.0, I'm using the 1.1.1.1 1.0.0.1 as my DNS.)

krlvm commented 2 years ago

So you can connect to unblocked sites with PowerTunnel on your Android 11 device? Can you try version 1.9.1?

0z5 commented 2 years ago

Precisely. Sadly, version 1.9.1 didn't work either, and to note as an extra, while 1.9.1 was turned on, my WhatsApp didn't work, however, websites like Google did.

krlvm commented 2 years ago

Are you using the same ISP on both devices?

0z5 commented 2 years ago

Yeah. They both are connected to my house Wi-Fi.

krlvm commented 2 years ago

Can't reproduce on Android 11+ devices. If you can still access unblocked websites when PowerTunnel is running, that means that proxy server is working correctly, do you have any other active application which monitors network activity installed on your device?