helium / erlang-libp2p

An Erlang implementation of libp2p swarms
https://helium.github.io/erlang-libp2p
Apache License 2.0
121 stars 34 forks source link

"listen_addrs" changes to a random IP address, gossiping wrong IP address to the Helium Network #384

Open 604WW opened 3 years ago

604WW commented 3 years ago

Experiencing a weird issue where my listen_addrs is changing to a random IP address. Here's my RAKv2 miner api

https://api.helium.io/v1/hotspots/name/rough-fuzzy-weasel

My real IP is 198.47.45.143 and I've completed the port forwarding, DHCP reservation, UPNP disabling. Tests confirm it is open. ISP IP is dynamic but it hasn't changed at all.

But for some reason the API is showing someone else's public IP

    "listen_addrs": [
      "/ip4/70.189.158.93/tcp/44158"
    ],

70.189.158.93 is not mine.

This also happened just over 24 hours ago with the IP 67.241.40.128, but when you do a port 44158 test on this IP the port is open. So it looks like it's another miners IP.

I spoke to BFGNeil on discord and he helped to check it out, and he tried the following:

A few variables i should mention.

  1. I have a sensecap that is syncing on the same network, though not asserted. Sensecap dashboard says the NAT is symmetric
  2. When the listen_addrs IP is correct, discovery works without issues, getting 200-250+ responses. But when listen_addrs is pointing to an incorrect IP, I will either get 0 responses or unable to initiate session.

Can anyone help to determine why I'm getting these random IP's and what I can do to stop gossiping a wrong IP address?

zmedic21 commented 3 years ago

I would also like a solution to this. experiencing the same issue with Sensecap Miner as well.

El-livo commented 3 years ago

I managed to solve this by powering down the miner for 30 mins then powering up, the Listen IP information on the sensecap dashboard updated to the correct public IP address by the following morning. The issue began when I tried to sync a Bobcat on the same network.

KryptoMyner commented 3 years ago

I'm having the same issue with my SenseCap (Faithful Velvet Hawk). My actual IP is in Southern California (70.181.99.198) and the dashboard recognizes it as my public IP, but my listen IP is in Dubai (/ip4/2.49.88.216/tcp/44158) and it's showing that I'm relayed in the dashboard but not on the explorer (/p2p/112TA9p8di1K1498HawobGX1WY3D1MeXtprtgzYWffTZXz3f9xEy/p2p-circuit/p2p/112g73euGzEvtNk3q32FWW8znkrokdMyCc77gNJStYvVsyxpwsXk). I have no relationship with that IP address. As with the OP, my actual public IP is dynamic, but hasn't changed in a while. I'm using a reserved IP inside, port forwarding is correct. I can telnet into my miner using my actual public IP and port, but I can also telnet into the Dubai address and port.

Vagabond commented 3 years ago

I've seen this before but I had hoped I had resolved it. I will take another look at it.

604WW commented 3 years ago

I've seen this before but I had hoped I had resolved it. I will take another look at it.

Hello Vagabond. Just to update my miner is now showing the correct listen_addrs, and has been for just under 48 hours. I had to reboot the miner twice, second time leaving it off for about 2-3 mins then turning it back on. Seems OK now but no idea if it will happen again or not.

Vagabond commented 3 years ago

386 should fix this

604WW commented 3 years ago

386 should fix this

now my miner is showing relayed and a p2p string for the listen_addrs. Confirming my IP port 44158 is still open. Rough Fuzzy Weasel

198.47.45.143

Helium Hiker peerbook still shows the correct IP as well

+----------------------------+ | listen_addrs (prioritized) | +----------------------------+ |/ip4/198.47.45.143/tcp/44158| +----------------------------+

Any reason for the API/Explorer to switch to relay when its in fact not?

Edit:

Ok now my miner status is relayed on both explorer/api and also checked via helium hiker. +--------------------------------------------------------------------------------------------------+ | listen_addrs (prioritized) | +--------------------------------------------------------------------------------------------------+ |/p2p/112f6CqqoQoHN2j49gEzJNipJcYw5oGJoo6thtxKY3Xg4D3whnMw/p2p-circuit/p2p/11hfYiTC7mmfbtdEMYH7isVV| +--------------------------------------------------------------------------------------------------+

but, my port forwarding test still shows my public IP is open. I've already rebooted to try to get my miner to gossip my public IP but no luck.

How is it that the port forwarding for my public IP 198.47.45.143 is confirmed open but I"m still gossiping a p2p address?

madninja commented 3 years ago

This usually means that your port forwarding did not work. Check your port forwarding settings again?

604WW commented 3 years ago

This usually means that your port forwarding did not work. Check your port forwarding settings again?

ports are open and BFGNeil on discord also helped to confirm everything is as it should be. He was also able to run some command and showed that my miner had the correct listen_address, but Helium Hiker and API are showing the wrong info.

{ "addr": "/p2p/11hfYiTC7mmfbtdEMYH7isVVQVybSbvshYYji6Xz5DfFHk96Uon", "latency": 123, "up": true }, "last_updated": "85.334", "listen_addr_count": 1, "listen_addresses": [ "/ip4/198.47.45.143/tcp/44158"

This was from BFGNeil. So my port 44158 is open, he confirmed it, but I'm still on relayed with over 50% in activity reduction, and discovery doesn't work now since it says it's relayed.

andy210000 commented 3 years ago

this is happening to my device also /ip4/51.9.28.37/tcp/44158