IPv6 ENETUNREACH

We have a Node-Red install on Debian and 4G network which only support ipv6. Whenever making requests we receive an error;

RequestError: connect ENETUNREACH 142.250.200.4:80 - Local (0.0.0.0:0) : http://www.google.com

Any Ideas?

Thanks in advance

Steve

Exactly how are you making requests? How is the node doing the requests configured?

Is it a Docker install of node red or a normal install?

What happens if you run ping6 www.google.com

Its a very simple flow that does a http get from google:

[{"id":"d29d5d42.9bda6","type":"inject","z":"75ccc5ad.1762bc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":570,"y":360,"wires":[["c0c99e28.a39e5"]]},{"id":"c0c99e28.a39e5","type":"http request","z":"75ccc5ad.1762bc","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"www.google.com","tls":"","persist":false,"proxy":"","authType":"","x":740,"y":360,"wires":[["cfccedbb.6082a"]]},{"id":"cfccedbb.6082a","type":"debug","z":"75ccc5ad.1762bc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":910,"y":360,"wires":[]}]

The device is installed with Debian and Node-RED is not containerized.

[Admin edit] Added triple backticks around flow to make it importable

OK, I think I will have to pass on this one then. I think it needs input from someone who knows more about the inner workings of node-red and nodejs.

Ok Colin, Thanks for looking at it, to help more, here is the error object returned from the http request:

{"message":"Error: connect ENETUNREACH 216.58.212.228:80 - Local (0.0.0.0:0)","source":{"id":"c0c99e28.a39e5","type":"http request","count":1},"stack":"Error: connect ENETUNREACH 216.58.212.228:80 - Local (0.0.0.0:0)\n at internalConnect (net.js:882:16)\n at defaultTriggerAsyncIdScope (internal/async_hooks.js:294:19)\n at GetAddrInfoReqWrap.emitLookup [as callback] (net.js:1029:9)\n at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:61:10)"}

What happens if you run
wget http://www.google.com

It works outside Node-Red.....

But as you can see it's using an IPv6 address which I think is where my problem lies?? I'm not sure the http request node is resolving the IPv6 address. I think it's resolving IPv4 which is unreachable on the network I have.

That's my guess anyway?

I think you are probably right. Possibly something needs to be tweaked in the interface between node-red and the underlying nodejs modules that do the request.

Are you using the current release of node-red? Which version of nodejs?
Use node -v to find the nodejs version.

What happens if you request direct to the IPv6 address

image

I get this...

No, unfortunately, its part of a base image build provided by Siemens nodejs v10.23.1, I did try to upgrade but it caused some compatibility issues with some of the other flows and did not fix it. I will go down that route if we can prove it works but so far I have not been able to prove it works even with the latest version of nodejs and Node-Red.

I think that you have specified an IPv4 Address there?

image

same result

image

I meant use googles IPV6

You can get that via ping6 ipv6.google.com

image
image

intrestingly mqtt woks via the ipv6 address

And what versions are you using?

EDIT

never mind - i see you are on a siemens device - cant help any further I'm afraid.

Are you able to perform a test on an up to date system on the network to prove that that is the problem?

Ok so I've done the upgrade and it appears to now work :slight_smile: > I've now got hours of trying to work out my compatibility issues.... thanks for the support Guys!