GNS3 / gns3-gui

GNS3 Graphical Network Simulator
http://www.gns3.com
GNU General Public License v3.0
2.17k stars 436 forks source link

Cannot connect to Secondary remote server if Main server is also remote #2922

Open tbeecherii opened 4 years ago

tbeecherii commented 4 years ago

Client : GNS3 2.2.5 OS X 10.14.6

Remote Servers : 2x Ubuntu 18.04.3 LTS

Environment : Due to restrictions, both servers are reached via a local ssh port forward through a jumphost.

image

Symptoms :

When configuring client with a single remote main server, I am able to connect to each server independently.

Server 1: image

Server2: image

When configuring client with one server as the remote main, and the other as an additional remote, the additional remote server does not connect.

server1 as the remote main, server2 as an additional remote image

server2 as the remote main, server 1 as an additional remote image

Local Wireshark captures on laptop show that no communication occurs on the port that the additional remote server is configured on during these configurations.

If the Main Server is set to Local, and the two additional servers are configured on the appropriate ports, all 3 will connect successfully. The C02TK... device here is the laptop.

image image

In some cases, when switching these configs around, the GUI displayed old config from other attempts. In those cases the client was closed and restarted with the displayed configs to ensure nothing leftover became a factor.

My desired behavior is to have the single main remote server, and multiple additional remote servers, without having to have the local server enabled. The context here is that this is intended to be a shared lab environment with multiple individuals working with topologies saved on the main server, with the additional remote servers there for compute as necessary.

candlerb commented 4 years ago

This still occurs with 2.2.8 as described above - thank you for taking the time to document this clearly. I have the same use case: my main server is remote, and I want to run larger topologies distributed over additional servers.

After setting main server to "Enable local server", the two remotes I've added go green in the "Servers Summary" listing. Perhaps for now this just needs to documented as a requirement. The only documentation I could find on remote servers was this which is very minimal.

The way you assign nodes to servers seems a bit awkward, unless I've missed something:

I had a question: when creating a project which uses multiple servers, where is its project.gns3 file stored - on the main server, or the remotes, or everywhere?

To test this, I created a project with two nodes, from two templates each bound to different remote servers. What I found was:

Therefore it appears that the "main" server has the job of holding the project file, even if it's not doing any execution work. Maybe that's why the local server has to be enabled - although in principle I don't see why a remote main server couldn't do this.

A similar question arises for snapshots. I found they are stored on the local "main" server, where the snapshot is a zipfile containing the states of the both nodes from both remotes.

The other question I had was whether you can use portable projects for distributed topologies. What I found with the above two-node two-server configuration was:

This meant I was unable to re-import it (since on my laptop "Enable local server" is checked, but "Enable the GNS3 VM" is unchecked).

I think it's perfectly reasonable that a distributed topology is exported "flat" - since the recipient of the project file might not have the same number of servers, or with the same names. However, it would be useful if you could assign nodes to servers, either at the time of importing the project, or being able to move them later.