Score:0

Setting up a VPN with ROS 2, seamless

ie flag

I want to run some "power-hungry" ROS 2 nodes in a desktop PC located at my home with my laptop connected to my university network. I successfully set up a WireGuard VPN with Docker which is working well. This server is running on a tiny pc which is in the same local network as the desktop PC I want to use. I've tested ping, ssh (Including X11 forwarding) among so other things to both server and desktop PC. All machines involved are running Ubuntu 22.04 LTS (Server-flavour in the case of the server :) )

For those who are not familiar with ROS 2, is just a middleware to work with robots. I think that the key here is that ROS 2 uses UDP broadcasting to discover machines over the network which are running any ROS node (A.K.A. a program). In a nutshell, ROS works with "topics", any node can "publish" in a topic (Which is essentially UDP broadcast a message) as well as suscribe to that topic (Which is essentially not discard those broadcast whenever you receive one :) )

I could get it working inside the same local network, but as soon as I turn on VPN, all machines become invisible to each other in terms of ROS, because the remaining processes continues to work with no issues.

I am asking here because I suspect that the issue is about the network config and not about ROS at all, my guess is that as soon as I am able to "emulate" a local network (And machines "are not aware" of it, seamless) it will work. For example, I do not believe that UDP broadcast is that straightforward through a VPN, and I suspect that in my current setup/config this is not possible and I have to tweak it a little bit... But my knowledge about networks is currently limited. I've also tried to connect that desktop PC to the VPN with no luck.

Of course I have fully access to the server itself, so any kind of config could be applied. I am not aware of any kind of traffic or port is blocked by the ISP of the University (Eduroam btw), but as a last resort I could use my mobile connection too.

Here is the GitHub repo which I've used to set up the VPN, I mostly have all config as default like seen on the repo. Not only I have to deal with the VPN itself, but also with Docker. Actually I do not know if this is an issue at all, but just info.

How can I get my laptop to be "seamless" connected to my local network through WireGuard? Is that a really a thing?

I know that WireGuard has his own subnet, but as example, I do not know how I can access the desktop PC through its local IP Adress from my laptop outside the network (VPN On of course). Is the WireGuard server routing me there?

Can I use UDP broadcast through WireGuard? Can I bridge WireGuard to the local network?

I aware of commercial solution for this issue, like Husarnet, but I would like to manage it myself. I know I am not being very precise... Sorry for that. Any details you may need please ask.

Thanks in advance! Cheers.

A.B avatar
cl flag
A.B
directed broadcast is disabled by default on the last-hop router: https://www.rfc-editor.org/rfc/rfc2644#section-3 . So the special setting to override this should be done on the vpn system connected to the LAN. Now if the application is expecting to do this on its own LAN, without router involved, I guess the reality is not so easy.
I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.