netbirdio / netbird

Connect your devices into a secure WireGuard®-based overlay network with SSO, MFA and granular access controls.
https://netbird.io
BSD 3-Clause "New" or "Revised" License
10.29k stars 457 forks source link

Android 14 App doesn't connect to the peers #1347

Open nilshee opened 8 months ago

nilshee commented 8 months ago

Describe the problem The playstore version of the netbird app won't connect to the peers. The connection and login to the management server works without a problem.

To Reproduce Steps to reproduce the behavior:

  1. Download APP on an android 14 device (tested with Galaxy S23 Ultra and Pixel 7)
  2. Try to use the app

Expected behavior Connect to the peers.

NetBird status -d output: Android app

Screenshots image image image

mlsmaycon commented 8 months ago

Hello @nils1323, we are fixing an issue with IPv6 DNS addresses, can you confirm if your devices are using IPv6?

nilshee commented 8 months ago

The network, the devices are in, is ipv4 only. There is a local (fe prefix) ipv6 address in the network configuration settings of the phones. I'm not sure if that somehow interferes.

jiangslee commented 8 months ago

Hello @nils1323, we are fixing an issue with IPv6 DNS addresses, can you confirm if your devices are using IPv6?

image

Hello @mlsmaycon , I have the same problem too,According to the https://github.com/netbirdio/netbird/issues/798#issuecomment-1502430133 , I tested my TURN configuration, I think that it is affected by ipv6.

jiangslee commented 8 months ago

self host server: netbird-mgmt version 0.24.4 client: ios 0.0.1(40)/ mac 0.24.4 (on ios hostspot)

DENightOne commented 7 months ago

I have the same problem on my Android phone (Android 13), what i did notice is that it only happens when I add a route, without any routes all peers can see all peers, when I add a route, the Linux nodes can see one another but the Android app sees no other peers. I then remove the route and reconnect the android app i can see all the peers again.

If i run the exact same peers on netbird.io I have no such problem, with and without routes all peers can see all peers

Self Hosted: docker image 0.25.1 Linux client 0.25.1 Android 0.24.4

thefiredragon commented 7 months ago

Same issue here, We're using ipv6 only for external communication. Android devices also have ipv6 addresses. App shows its connected but peers are down.

thefiredragon commented 7 months ago

I have a update perhaps related to other issues here

adding to turnserver.conf:

# Allocate Address Family according
# If enabled then TURN server allocates address family according  the TURN
# Client <=> Server communication address family.
# (By default Coturn works according RFC 6156.)
# !!Warning: Enabling this option breaks RFC6156 section-4.2 (violates use default IPv4)!!
#
keep-address-family

make it possible to use netbird over ipv6. It not resolve the issue for android devices with their app. I had tested this with 2 linux devices. DNS only Point to IPv6 external address.

j007bond007 commented 7 months ago

Having same issue but with DNS (routes seem fine). Removing DNS servers causes peers to connect again.

let-lc commented 7 months ago

Same problem here, IPv4 only home network, I could see the peers connected on the android app. But I couldn't see them after I switch to mobile network which has IPv6 enabled.

I tried to disabled IPv6 by editing the APN setting but it doesn't allow me to do that like the online tutorials. If you can edit your mobile network APN settings, you can try that and see if it works after disabling IPv6. Right now I just have to wait for the new version to fix this problem.

jiangslee commented 7 months ago

@let-lc @thefiredragon @DENightOne @nilshee

Hey guys, see https://github.com/netbirdio/netbird/issues/1453#issuecomment-1887207508

add external-ip=<eip> to turnserver.conf and use docker compose up -d --force-recreate coturn

It works for me, I think you can also try it?

let-lc commented 7 months ago

@let-lc @thefiredragon @DENightOne @nilshee

Hey guys, see #1453 (comment)

add external-ip=<eip> to turnserver.conf and use docker compose up -d --force-recreate coturn

It works for me, I think you can also try it?

Sadly this doesn't work for me. I tried on my iOS device and faced the same problems.


I also found another problem when I was doing some tests, not related to IPv6, but DNS.

Both my iOS and Android devices, I added a LAN pi-hole DNS server to the WiFi setting. This doesn't cause any problem on my iOS device, but on Android, 0 of n peers connected problem happens again.

If I connect my Android to another SSID of the same router with auto DHCP (no static IP, no custom DNS), I could see the peers connected now. I'm not a network expert, so I don't know why this is happening. Just sharing my finding.

DidZ0 commented 6 months ago

Got a similar issue,

I have a small homelab with a k8s cluster and an Adguard Home instance running. I self hosted Netbird and some monitoring tools on a VPS. I'm using adguard as a DNS server on netbird as well as on my router so that all my home equipment (like wife phone) can use services without vpn.

No problem so far with linux or windows clients on netbird, but on my android phone i can see 0 of n Peers connected. Disabling custom DNS in netbird solves the issue, but no custom dns anymore, which is annoying

The DNS Server is on a VM (192.168.1.104) in my local network but it doesnt have netbird installed so I used routing to expose 192.168.1.0/24 through another machine with netbird installed, I don't know if it could be the issue.

I plan on installing netbird on the adguard machine and using it as a dns server with it's netbird ip, don't know if it's possible though.

EDIT : It looks like installing netbird on the adguard machine and using it's netbird ip to set the dns server is working, I can see my peers connected on my phone again. I'll edit the comment if the situation changes

MatteoPaier commented 6 months ago

I've a similar setup to @DidZ0 (self hosted Netbird, with adguard DNS server via custom route) and indeed the peers are not connecting.

I'm just speculating, but can it be a chicken/egg problem where the app is trying to resolve the NetBird domain with the provided DNS server? The issue seems solved if I provide another "bootstrap" nameserver that match only my NetBird domain (netbird.example.com) and resolves with a public DNS server.

penzoiders commented 5 months ago

I've found that my version of this issue "Android client not connecting with peers" is related to only specific kind of routes: as long as you route private ranges (10.0.0.0/8,192.168.0.0/16 or 172.16.0.0/12) your Android client will connect just fine.

As soon as you add a public host route (151.23.52.1/32 for example) the client won't connect anymore, remove that "faulty" route and it will eventually be able to connect, ping peers and use private routes with no issues.

Is it possible that this is an Android-specific routing permissions related thing?

nilshee commented 5 months ago

Can confirm @penzoiders findings. After removing all public networks it works for the private ones just fine

jumski commented 5 months ago

I have the same problem. Also noticed that app registers new "hostnames" after reconnect.

Luxosity commented 4 months ago

Phone: Google Pixel 6a, Android 14 Netbird Android app: v.0.0.20, Netbird Agent: 0.25.6, Netbird Selfhosted

Having the same issue. Never worked for me. Reinstalled app and have the same issue. Shows its connected in the Admin portal. It also shows there is an update to 0.26.3 but unsure how to update the agent for the android app since 0.0.20 is the latest.

Pumba98 commented 4 months ago

I can confirm the issue described by DidZ0 and MatteoPaier with a DNS Server in a local network. It works on all other platform except Android. I really hope for a fix on this, it's the only thing that blocks me from fully switching to netbird.

Is there anything we can provide to help fixing this?

Pumba98 commented 4 months ago

I can confirm the issue described by DidZ0 and MatteoPaier with a DNS Server in a local network. It works on all other platform except Android. I really hope for a fix on this, it's the only thing that blocks me from fully switching to netbird.

Is there anything we can provide to help fixing this?

Seems like I was able to fix my issue by adding a 2nd public nameserver only for "stun.netbird.io" & "turn.netbird.io".

image

In the logs I saw the client failed to resolve those dns entries when establishing a connection to the peer running in my DNS network.

adlion commented 2 months ago

+1
Pixel 7
Samsung A52 5G

mlsmaycon commented 2 months ago

Hello folks, can you please enable trace logs, reconnect and then share the logs with us for analysis?

To enable trace logs, you can go to the Advanced menu and ticky the enable trace log box:

Advanced menu