主机通过 SSH 连接客户机(使用 qemu vm)

主机通过 SSH 连接客户机(使用 qemu vm)

我在使用 qemu VM 启用主机到客户机通信时遇到了麻烦。目标是通过 SSH 从主机连接到客户机 VM。

我有以下设置:

  • 主机:需要在客户虚拟机内本地访问 SSH 服务器
  • 客户机:基于 qemu 的虚拟机使用 tap 接口启动(参数,共 4 个 tap 设备):

-netdev tap,ifname=tap0,id=mw,script=no,downscript=no -device virtio-net,netdev=mw,mac=52:54:01:34:AD:EF

虚拟机通过网桥相互连接br0,而不是通过物理接口eth0

问题/假设: 我认为要让它发挥作用,我需要添加eth0到桥梁第一的第二通过创建静态路由

route add -host <any chosen internal IP, e.g. 192.168.1.2> dev tap0

我有第三eth0在通过附加内部 IP 之前分配

ip addr add <any chosen internal IP on the same subnet as route, e.g. 192.168.1.3> dev eth0

如果是这样,我的问题是我被限制于远程访问,因为一切都发生在服务器上。因此我无法通过添加/删除接口,brctl因为我会失去与服务器的 ssh 连接!

因此,我尝试将所有内容放入/etc/network/interfaces,这是我的代码:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  hostname 'actual hostname here'
  address 'actual IP here'
  netmask 'actual netmask here'
  gateway 'actual gateway IP here'

auto br0
iface br0 inet manual
   pre-up /sbin/tunctl -t tap0 -u 'actual user here' -g netdev
   pre-up /sbin/tunctl -t tap1 -u 'actual user here' -g netdev
   pre-up /sbin/tunctl -t tap2 -u 'actual user here' -g netdev
   pre-up /sbin/tunctl -t tap3 -u 'actual user here' -g netdev
   pre-up ip link set tap0 up
   pre-up ip link set tap1 up
   pre-up ip link set tap2 up
   pre-up ip link set tap3 up
   bridge-ports tap0 tap1 tap2 tap3
   bridge-stp 0
   bridge_maxwait  0
   bridge_fd       0
   post-down ip link set tap0 down
   post-down /sbin/tunctl -d tap0
   post-down ip link set tap1 down
   post-down /sbin/tunctl -d tap1
   post-down ip link set tap2 down
   post-down /sbin/tunctl -d tap2
   post-down ip link set tap3 down
   post-down /sbin/tunctl -d tap3

现在,当我添加eth0到该行时bridge-ports eth0 tap0 tap1 tap2 tap3,我无法再通过 ssh 连接到服务器。在救援并检查日志文件后,我看不到任何错误或提示为什么eth0桥接接口不起作用!?

我的错在哪里?提前谢谢您!

编辑:我也尝试过,但没有成功

auto lo
iface lo inet loopback

iface eth0 inet manual

auto br0
iface br0 inet manual
   pre-up /sbin/tunctl -t tap0 -u 'actual user here' -g netdev
   pre-up /sbin/tunctl -t tap1 -u 'actual user here' -g netdev
   pre-up /sbin/tunctl -t tap2 -u 'actual user here' -g netdev
   pre-up /sbin/tunctl -t tap3 -u 'actual user here' -g netdev

  pre-up ip link set eth0 up

   pre-up ip link set tap0 up
   pre-up ip link set tap1 up
   pre-up ip link set tap2 up
   pre-up ip link set tap3 up

  hostname 'actual hostname here'
  address 'actual IP here'
  netmask 'actual netmask here'
  gateway 'actual gateway IP here'

  bridge-ports eth0 tap0 tap1 tap2 tap3

   bridge-stp 0
   bridge_maxwait  0
   bridge_fd       0
   post-down ip link set tap0 down
   post-down /sbin/tunctl -d tap0
   post-down ip link set tap1 down
   post-down /sbin/tunctl -d tap1
   post-down ip link set tap2 down
   post-down /sbin/tunctl -d tap2
   post-down ip link set tap3 down
   post-down /sbin/tunctl -d tap3

有人知道吗?

答案1

eth0如果您桥接 eth0,则需要在桥接接口上设置 IP 地址,而不是在底层接口上设置。

相关内容