Closed as not planned
Description
Description
Currently lima sets up a "user" network, so that each VM gets host and internet access.
It would be possible to set up a second "socket" network, so that they could reach eachother.
https://wiki.qemu.org/Documentation/Networking
I'm not sure what would be the best YAML configuration, but made a small hack PoC to set it up.
Basically I added one boolean to say if it is the listen or the connect, and also the port number.
diff --git a/pkg/limayaml/limayaml.go b/pkg/limayaml/limayaml.go
index 47ac646..d91f002 100644
--- a/pkg/limayaml/limayaml.go
+++ b/pkg/limayaml/limayaml.go
@@ -22,6 +22,8 @@ type LimaYAML struct {
Probes []Probe `yaml:"probes,omitempty" json:"probes,omitempty"`
PortForwards []PortForward `yaml:"portForwards,omitempty" json:"portForwards,omitempty"`
Message string `yaml:"message,omitempty" json:"message,omitempty"`
+ SocketPort *int `yaml:"socketPort,omitempty" json:"socketPort,omitempty"`
+ SocketMain *bool `yaml:"socketMain,omitempty" json:"socketMain,omitempty"`
Networks []Network `yaml:"networks,omitempty" json:"networks,omitempty"`
Network NetworkDeprecated `yaml:"network,omitempty" json:"network,omitempty"` // DEPRECATED, use `networks` instead
Env map[string]string `yaml:"env,omitempty" json:"env,omitempty"`
diff --git a/pkg/qemu/qemu.go b/pkg/qemu/qemu.go
index d681400..8f582a7 100644
--- a/pkg/qemu/qemu.go
+++ b/pkg/qemu/qemu.go
@@ -277,6 +277,15 @@ func Cmdline(cfg Config) (string, []string, error) {
args = append(args, "-netdev", fmt.Sprintf("user,id=net0,net=%s,dhcpstart=%s,hostfwd=tcp:127.0.0.1:%d-:22",
qemu.SlirpNetwork, qemu.SlirpIPAddress, cfg.SSHLocalPort))
args = append(args, "-device", "virtio-net-pci,netdev=net0,mac="+limayaml.MACAddress(cfg.InstanceDir))
+ if y.SocketPort != nil && *y.SocketPort != 0 {
+ port := *y.SocketPort
+ if y.SocketMain != nil && *y.SocketMain == true {
+ args = append(args, "-netdev", fmt.Sprintf("socket,id=net1,listen=127.0.0.1:%d", port))
+ } else {
+ args = append(args, "-netdev", fmt.Sprintf("socket,id=net1,connect=127.0.0.1:%d", port))
+ }
+ args = append(args, "-device", "virtio-net-pci,netdev=net1,mac="+limayaml.MACAddress(cfg.InstanceDir + strconv.Itoa(port)))
+ }
if len(y.Networks) > 0 && !strings.Contains(string(features.NetdevHelp), "vde") {
return "", nil, fmt.Errorf("netdev \"vde\" is not supported by %s ( Hint: recompile QEMU with `configure --enable-vde` )", exe)
}
So the first VM goes
socketMain: true
socketPort: 1234
And the second goes
socketMain: false
socketPort: 1234
And they each can configure eth1
, to form a mutual network.
eth0 Link encap:Ethernet HWaddr 52:55:55:3F:BC:6F
inet addr:192.168.5.15 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::5055:55ff:fe3f:bc6f/64 Scope:Link
inet6 addr: fec0::5055:55ff:fe3f:bc6f/64 Scope:Site
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3692 errors:0 dropped:0 overruns:0 frame:0
TX packets:1304 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3619251 (3.4 MiB) TX bytes:131459 (128.3 KiB)
eth1 Link encap:Ethernet HWaddr 52:55:55:6D:2C:78
inet addr:10.0.2.100 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::5055:55ff:fe6d:2c78/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:25 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3261 (3.1 KiB) TX bytes:4517 (4.4 KiB)
eth0 Link encap:Ethernet HWaddr 52:55:55:C7:56:92
inet addr:192.168.5.15 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::5055:55ff:fec7:5692/64 Scope:Link
inet6 addr: fec0::5055:55ff:fec7:5692/64 Scope:Site
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3134 errors:0 dropped:0 overruns:0 frame:0
TX packets:986 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3122371 (2.9 MiB) TX bytes:92152 (89.9 KiB)
eth1 Link encap:Ethernet HWaddr 52:55:55:EA:F8:43
inet addr:10.0.2.101 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::5055:55ff:feea:f843/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23 errors:0 dropped:0 overruns:0 frame:0
TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3441 (3.3 KiB) TX bytes:4337 (4.2 KiB)
Metadata
Metadata
Assignees
Labels
No labels