KVM桥接网络无法正常工作

我刚按照这个指南在我的Ubuntu服务器上安装了KVM:https://help.ubuntu.com/community/KVM/Installation 然后按照这里所示准备了一个桥接网络:https://help.ubuntu.com/community/KVM/Networking 接下来,我使用virt-manager创建了一个虚拟机。我尝试了几次,但是客户机无法连接到网络!有什么帮助吗?
ifconfig:
      br0       Link encap:Ethernet  HWaddr d0:27:88:b0:e4:38  
                inet addr:192.168.20.100  Bcast:192.168.20.255  Mask:255.255.255.0
                inet6 addr: fe80::d227:88ff:feb0:e438/64 Scope:Link
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:62 errors:0 dropped:0 overruns:0 frame:0
                TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:10493 (10.4 KB)  TX bytes:8433 (8.4 KB)

      eth0      Link encap:Ethernet  HWaddr d0:27:88:b0:e4:38  
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                RX packets:62 errors:0 dropped:0 overruns:0 frame:0
                TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:1000 
                RX bytes:11361 (11.3 KB)  TX bytes:8479 (8.4 KB)
                Interrupt:41 

      lo        Link encap:Local Loopback  
                inet addr:127.0.0.1  Mask:255.0.0.0
                inet6 addr: ::1/128 Scope:Host
                UP LOOPBACK RUNNING  MTU:16436  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

      virbr0    Link encap:Ethernet  HWaddr 5a:8c:57:95:af:3b  
                inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
                UP BROADCAST MULTICAST  MTU:1500  Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:0 
                RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

brctl show:
 bridge name    bridge id      STP enabled    interfaces
 br0       8000.d02788b0e438   no        eth0
 virbr0         8000.000000000000   yes  

brctl showmacs br0:
 port no   mac addr       is local? ageing timer
   1  5c:d9:98:67:b6:28   no          48.33
   1  d0:27:88:b0:e4:38   yes          0.00
   1  e0:2a:82:f9:6c:09   no           0.00

IP路由:

 default via 192.168.20.1 dev br0  metric 100 
 192.168.20.0/24 dev br0  proto kernel  scope link  src 192.168.20.100 
 192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

*在客户机中 *我无法复制粘贴来自客户机的信息,因为无法通过ssh连接到它。它没有从DHCP获取任何IP地址。即使手动设置也不起作用。


我可以建议您提供以下命令的输出吗?在主机上:ifconfigbrctl showbrctl showmacs br0ip route。在客户机上:ifconfigip routeping 8.8.8.8ping <您的互联网路由器>traceroute 8.8.8.8。我不能说我已经按照您的方式配置了kvm,但是我已经成功使用kvm命令进行了桥接。我确实不得不断开无线连接,以便我的主机能够连接到互联网,并且正如您引用的说明所说,您需要使用以太网连接到互联网。 - John S Gruber
@JohnSGruber 刚刚添加了你要求的信息。但是我无法从访客那里复制粘贴信息,因为无法通过SSH连接到它。它没有从DHCP获取任何IP地址。即使手动设置也无法工作。 - THpubs
你分配给客户端的MAC地址是否在上面的brctl showmacs br0列表中? - John S Gruber
我没有手动添加MAC地址..但是让我检查一下它获取到的MAC地址。 - THpubs
@JohnSGruber 不,我这里没有看到那台MAC! - THpubs
3个回答

准备工作

以下方法适用于Ubuntu 12.04。在测试过程中,您应该禁用计算机的防火墙,以免干扰。

/etc/default/qemu-kvm文件应保持原始安装状态。

您需要安装bridge-utils安装bridge-utilsqemu-kvm安装qemu-kvmlibvirt-bin安装libvirt-bin。任何使用虚拟机的用户都应该添加到libvirtd组中。

似乎不再需要添加CAP_NET_ADMIN权限。

网络设置

默认的网络模式是用户模式,也称为SLIRP。它使用预定义的virbr0桥接,该桥接通过NAT路由到宿主机。NAT路由使用内核的ip_forwarding功能和iptables。桥接模式使用虚拟桥接连接到客户机上的(未编号的)以太网接口,宿主机和客户机都在这个接口上有自己的网络接口。

以下图示可能更清晰地解释了不同之处:

Network diagrams

你可以看到如何使用以下代码定义默认的用户网络:
virsh net-dumpxml default

我可以通过以下方法设置桥接模式:
在/etc/network/interfaces文件中(从您在问题中提到的桥接部分):
自动 lo iface lo inet loopback #自动 eth0 #iface eth0 inet dhcp 自动 eth0 iface eth0 inet manual 自动 br0 iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
重新启动,并确保无线网络处于非活动状态。使用ip route命令检查默认IP路由。它必须使用br0接口。
注意:如果在进行此更改时未连接以太网,您需要将以太网电缆插入并获得载波,否则启动将停顿两分钟,并且您将无法进行网络操作。这是因为eth0接口在此文件中,必须在启动正常进行之前启动。
注意:通常情况下,您不能使用无线网络替代eth0,因为它们无法使用多个MAC地址(我推断它们需要第二个MAC地址用于桥接)。
作为一种替代方案,您可以禁用以太网的使用,并确保它没有IP地址,也没有使用ip route设置默认路由。然后:
 sudo ifconfig eth0 0.0.0.0 up
 sudo brctl addbr br0
 sudo brctl addif br0 eth0
 sudo ifconfig br0 up
 sudo dhclient br0 &

您也可以在此处提供静态IP地址,并定义默认路由和DNS地址。 对于此示例,dhclient将执行此操作。

这是我的路由表:

$ip route list
default via 192.168.1.1 dev br0  metric 100 
169.254.0.0/16 dev br0  scope link  metric 1000 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.45 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1

使用kvm

然后我可以使用以下命令启动一个桥接的kvm虚拟机:

 $ sudo kvm -name Quantal -m 1024 -hda foo.qcow2 --soundhw ac97 -device virtio-net,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0

-netdev tap参数使sudo成为必需品。当启动虚拟机时,qemu-kvm运行以下命令:

ifconfig vnet0 0.0.0.0 up
brctl addif brctl addif br0 vnet0

这是通过/etc/qemu-ifup完成的。

将虚拟机的vnet0接口添加到br0桥接器中,因为上面的默认路由使用了该桥接器接口。如果没有它,tap接口将被添加到virbr0接口中。在我的实验中,由于virbr0接口未连接到互联网,因此会使用NAT将虚拟机连接到主机和互联网。您可以在/etc/default/qemu-kvm中将vnet0定向到特定的桥接器。在下面的virt-manager中,您可以明确指定连接到哪个桥接器。

由于qemu-kvm发出的上述命令以及-netdev tap,id=tunnel,ifname=vnet0参数,该虚拟机与vnet0隧道连接,并且该隧道与br0桥接器相连。

我现在可以从我的网络上的另一台计算机直接ssh登录到这个虚拟机。

我的主机ifconfig(注意运行虚拟机时出现的vnet0接口):

$ifconfig br0 链路类型: 以太网 硬件地址: 00:1e:33:88:07:e5 IP地址: 192.168.1.45 广播地址: 255.255.255.255 子网掩码: 255.255.255.0 IPv6地址: fe80::21e:33ff:fe88:7e5/64 范围: 链路 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 接收数据包:6526 错误:0 丢弃:0 过载:0 帧:0 发送数据包:7543 错误:0 丢弃:0 过载:0 载波:0 冲突:0 发送队列长度:0 接收字节:2712940 (2.7 MB) 发送字节:1071835 (1.0 MB)
eth0 链路类型: 以太网 硬件地址: 00:1e:33:88:07:e5 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 接收数据包:7181 错误:0 丢弃:0 过载:0 帧:0 发送数据包:7740 错误:0 丢弃:0 过载:0 载波:0 冲突:0 发送队列长度:1000 接收字节:2974585 (2.9 MB) 发送字节:1096580 (1.0 MB) 中断:43 基址:0x6000 lo 链路类型: 本地环回 IP地址: 127.0.0.1 子网掩码: 255.0.0.0 IPv6地址: ::1/128 范围: 主机 UP LOOPBACK RUNNING MTU:16436 Metric:1 接收数据包:10 错误:0 丢弃:0 过载:0 帧:0 发送数据包:10 错误:0 丢弃:0 过载:0 载波:0 冲突:0 发送队列长度:0 接收字节:664 (664.0 B) 发送字节:664 (664.0 B)
vnet0 链路类型: 以太网 硬件地址: ca:0c:73:c3:bc:45 IPv6地址: fe80::c80c:73ff:fec3:bc45/64 范围: 链路 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 接收数据包:226 错误:0 丢弃:0 过载:0 帧:0 发送数据包:429 错误:0 丢弃:0 过载:0 载波:0 冲突:0 发送队列长度:500 接收字节:26919 (26.9 KB) 发送字节:58929 (58.9 KB)
virbr0 链路类型: 以太网 硬件地址: d6:18:22:db:ff:93 IP地址: 192.168.122.1 广播地址: 192.168.122.255 子网掩码: 255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 接收数据包:0 错误:0 丢弃:0 过载:0 帧:0 发送数据包:0 错误:0 丢弃:0 过载:0 载波:0 冲突:0 发送队列长度:0 接收字节:0 (0.0 B) 发送字节:0 (0.0 B)

在运行VM时,我的桥接配置如下:

$brctl show
bridge name bridge id       STP enabled interfaces
br0             8000.001e338807e5       no              eth0
                                                        vnet0
virbr0          8000.000000000000       yes

请注意,虚拟机的vnet0接口和eth0接口都连接到br0桥接器。

而且,在br0接口上的MAC地址为:

$brctl showmacs br0
端口编号 MAC地址    是否本地    过期计时器
  1   00:05:5d:cf:64:61   否         2.54
  1   00:19:d2:42:5d:3f   否        36.76
  1   00:19:df:da:af:7c   否         2.86
  1   00:1e:33:88:07:e5   是        0.00
  1   00:60:0f:e4:17:d6   否         0.79
  2   52:54:00:12:34:56   否         0.80
  1   58:6d:8f:17:5b:c0   否         5.91
  1   c8:aa:21:be:8d:16   否       167.69
  2   ca:0c:73:c3:bc:45   是        0.00

请注意,br0接口将我的主机连接到由客户机使用的同一网桥。

你可以通过使用traceroute 8.8.8.8来检查你是否是通过桥接而不是NAT路由连接到自己的网络。如果第一个节点是你网络的路由器而不是客户端的IP地址,那么你的网络应该正常工作。
请参考这份文档
确保你已经安装了virt-managerhalhal软件包是virt-manager的建议依赖项,并且在创建或编辑虚拟机时用于确定系统的网络配置。
在上述定义了br0桥接的情况下,我使用virt-manager创建了一个虚拟机,步骤如下:

enter image description here enter image description here enter image description here enter image description here enter image description here

我能直接从这个访客连接到我的家庭网络和互联网。我还能够从我家网络上的其他(非主机、非访客)Ubuntu计算机通过ssh登录到它。
以下是由virt-manager运行的非常长的kvm命令(供与EApubs或其他遇到问题的人进行比较):
/usr/bin/kvm -S -M pc-1.0 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name precise -uuid f057a729-eda6-4b85-84dc-f100c9ae3789 -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/precise.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -drive file=/media/natty/home/gruber/ubuntu-kvm/tmpW8gSGB.qcow2,if=none,id=drive-ide0-0-0,format=qcow2 -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=18,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:0e:da:9b,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 127.0.0.1:0 -vga cirrus -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
这是在/etc/libvirt/qemu/quantal.xml中虚拟机描述的网络部分。
    <interface type='bridge'>
      <mac address='52:54:00:b0:8e:aa'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

根据this链接,为了提高性能和可靠性,最好将网络设备模型设置为virtio。您可以通过在virt-viewer中按下i按钮,进入NIC设置,并将"Device model"设置为virtio来实现这一点。您还可以通过添加以下行到上面的XML中来实现此功能:
      <model type='virtio'/>

总结

在12.04上所需的全部步骤如下:

  1. 安装virt-manager、bridge-utils、qemu-kvm和相关软件包。
  2. 确保每个希望使用kvm的用户都在libvirtd组中。
  3. 将/etc/network/interfaces定义为上述内容(与引用的文章相匹配)。
  4. 重新启动计算机,确保以太网已连接,并关闭无线网络(如果有的话)。
  5. 要么直接对镜像运行kvm,例如:-device e1000,netdev=tunnel -netdev tap,id=tunnel,ifname=vnet0,要么使用virt-manager创建一个虚拟机,在第4步->高级选项面板下指定网络桥接br0。

网络、功能、模板或配置不需要进行进一步更改。

要将新客户机中的服务暴露给互联网,您应该执行以下操作:

  1. 准备并配置所需的防火墙服务。
  2. 在客户机配置或DHCP服务中分配静态地址。
  3. 如果使用NAT路由器,请打开一个端口,将其指向正在实施的服务,并将其定向到客户机的IP地址。
记得测试并重新启用防火墙服务,以便为您的主机计算机转发流量可能需要的任何条目。
请参阅https://help.ubuntu.com/community/KVM/Installationhttps://help.ubuntu.com/community/KVM/Networkinghttps://help.ubuntu.com/12.04/serverguide/libvirt.html

嗨,那台机器上没有无线网卡,只有以太网 :) - THpubs
我知道你没有无线网络,但是其他阅读这个问题的人可能有。我已经发布了一个virt-manager部分,因为那是你使用的工具。在创建虚拟机时,在第4步高级选项中,你是否指定了桥接到br0?启动virt-manager时,kvm命令中的网络参数是否与我的匹配?(你可以通过运行“ps aux | grep kvm”来查看) - John S Gruber
嗨,在使用virt manager创建虚拟机时,在高级选项中,我没有看到eth0和br0。 - THpubs
这很可能是问题所在 - 它是让 virt-manager 正常工作的关键。你是在托管它的机器上运行吗(并且在您的问题中像 brctl show 中定义的 br0)?您正在运行哪个版本的 Ubuntu?也许这就是区别所在。virt-manager 的版本是多少?(我的是 0.9.1-1ubuntu5.1)。 - John S Gruber
我正在运行Ubuntu 12.04和virt-manager 0.9.1-1ubuntu5.1。实际上,我在主机上没有安装virt-manager。我将其安装在一台远程机器上,并使用它连接到主机。这是我遇到的问题吗? - THpubs
我不明白那台远程机器怎么会知道br0,除非它是在你已经设置好的主机上运行。br0是一个完全随意的名称。我认为这可能是你问题的核心所在。也许你可以尝试在已定义了br0桥接的主机上安装它,并在那里使用virt-manager创建一个新的虚拟机? - John S Gruber
在主机上使用virt-manager时遇到了同样的问题。但是在这里,我看到高级选项的下拉列表旁边有一个红色感叹号。当鼠标悬停时,它显示“无法初始化用于接口列表的HAL:org.freedesktop.Hal未提供任何.service文件”。 - THpubs
1)我不得不想知道virt-manager是否真的在远程主机上构建机器。 2)看起来你可以将桥名指定为共享设备,即使虚拟机正在准备时桥不存在。 3)看起来您可以指定复选框“安装前自定义配置”并获得更多选项。 4)HAL不是最近的Ubuntu版本的一部分。您在主机上使用哪个版本的Ubuntu,virt-manager? - John S Gruber
Ubuntu 12.04 和 virt-manager 0.9.1-1ubuntu5.1。我通过选择“指定共享设备名称”来设置了 br0,但仍然无法正常工作。 - THpubs
我错了,运行virt-manager需要一个hal软件包。你能检查一下它的版本吗?你能检查一下文件/etc/dbus-1/system.d/hal.conf中的内容吗?在启动virt-manager后,你在ps aux命令中是否有/usr/sbin/hald程序正在运行? - John S Gruber
没有hal.conf文件,/usr/sbin/hald也没有运行 :( - THpubs
你是否已经安装了 hal 包?它的版本是多少?如果是的话,建议你使用 sudo apt-get --reinstall install hal 重新安装一下。如果没有安装 hal 包,我建议你重新安装 virt-manager,这样它会将 hal 作为依赖项一起安装。 - John S Gruber
让我们在聊天中继续这个讨论。 - John S Gruber
非常出色的回答,先生! - jwbensley

如果您所见的行为是主机可以访问客户端,客户端可以访问主机,但客户端无法访问网络上的其他计算机或反之亦然... 可能是主机的防火墙阻止了访问。

请参阅:https://bugs.launchpad.net/ubuntu/+source/ufw/+bug/573461

具体来说,这个部分: "最后一步是禁用桥接器上的netfilter:

# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF

我刚刚遇到了这个问题,10年后。我将一个服务器从Ubuntu 20.04升级到22.04,但是没有数据传递给虚拟机。我发现很奇怪的是,我需要修改sysctl.conf文件,尽管在之前的操作系统中它已经设置好了,并且IPv4转发也已经启用,不需要在sysctl.conf中添加net.ipv4.ip_forward = 1。这篇帖子就是导致这一发现的原因。 - Jarad Downing

这是我用来为 qemu-kvm 创建桥接的两个脚本。
首先,让主机成为一个IP路由器。
脚本 ip-router.sh
#!/bin/bash

internetinterface="eth0"

username=`whoami`

if [ "x$username" != "xroot" ] ; then

    echo    
    echo "You must be root in order to run this script..."
    echo    

    exit    

fi  

if [ "x$1" != "x" ] ; then
    internetinterface="$1"
fi  

if [ "x$1" == "xdel" ] || [ "x$2" == "xdel" ] ; then
    disable="1"
else
    disable="0"
fi  

if [ "$disable" == "0" ] ; then
    echo "Enabling IP forward and setting up masquerade NAT on interface $internetinterface"

    echo 1 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -A POSTROUTING -o $internetinterface -j MASQUERADE
else
    echo "Disable IP forward and setting down masquerade NAT on interface $internetinterface"

    echo 0 > /proc/sys/net/ipv4/ip_forward

    iptables -t nat -D POSTROUTING -o $internetinterface -j MASQUERADE
fi  

然后,创建 tun-tap 接口,并将其与您的默认接口(通常是具有互联网连接的接口)进行桥接。
脚本 create-qemu-bridged-tuntap.sh
#!/bin/bash

bridgename=br0
tapinterface=tap0
outinterface=eth1

if [ "x$1" != "x" ] ; then
    outinterface="$1"
fi  

ifaces=`awk -F: '{print $1}' /proc/net/dev | tail -n +3`
iffound="0"

for i in $ifaces
do  
    if [ "$outinterface" == "$i" ] ; then
            iffound="1"
    fi  
done

if [ "$iffound" == "0" ] ; then
    echo
    echo "Can't find the output interface."
    echo
    exit 1
fi  

outifaceip=`ifconfig | grep -A1 $outinterface | tail -1 | awk -F: '{print $2}' | awk '{print $1}'`
outifaceiptokens=`echo $outifaceip | awk -F \. '{print NF}'`

if [ "$outifaceiptokens" != "4" ] ;  then
    echo
    echo "The selected output interface $outinterface doesn't seem to have a valid IP address."
    echo
    exit 1
fi  

hostaddress="192.168.1.1"
guestaddress="192.168.1.95"

sudo tunctl -t $tapinterface

sudo brctl addbr $bridgename
sudo brctl addif $bridgename $tapinterface

sudo ip link set $bridgename up
sudo ip addr add $hostaddress/24 dev $bridgename

sudo route add -host $guestaddress dev $bridgename
sudo parprouted eth1 $bridgename

sudo ~/scripts/ip-router.sh $outinterface

我每天都使用这些脚本,所以它们对你来说应该也能很好地工作。为了使所有这些正常运行,你需要安装一些软件包。使用:
dlocate `which COMMAND`

你可以看到需要哪个软件包来使用`COMMAND`。例如,如果要查看需要哪个软件包才能使用`brctl`,只需运行以下命令:
dlocate `which brctl`

然后你就会拥有:

bridge-utils: /sbin/brctl

使用这些脚本中的所有命令都采用相同的方式,您至少应该运行以下aptitude命令行:
sudo aptitude install dlocate iproute parprouted iptables uml-utilities bridge-utils net-tools

最后,您可以以普通用户身份启动主脚本:

#> create-qemu-bridged-tuntap.sh eth0
Set 'tap0' persistent and owned by uid 0
Enabling IP forward and setting up masquerade NAT on interface eth0

运行ip addr命令,您应该看到一个名为br0的接口,其IP地址为192.168.1.1,正如在create-qemu-bridged-tuntap.sh脚本中指定的一样:

#> ip addr
8: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 36:76:ee:d6:63:b2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 scope global br0

这是客户端看到的主机地址。反之,客户端将拥有IP地址192.168.1.95(同样,在主脚本中可以很容易地进行更改)。
现在,使用virt-manager,您只需设置客户端网络接口使用br0作为物理接口即可。

virt-manager-br0-nic

guest内部,你只需要给eth0一个IP地址192.168.1.95,一切都应该正常运行。
Slackware13:~> ifconfig 
eth0      Link encap:Ethernet  HWaddr 52:54:00:F7:6A:78  
          inet addr:192.168.1.95  Bcast:192.168.1.255  Mask:255.255.255.0

虽然你正在使用桥接来实现,但在我看来,你正在创建一个NAT转发设施。不过,如果你能够端口转发特定的主机端口,也许可以满足EApubs的需求。非常有趣且非常有用的回答,无论如何。 - John S Gruber
谢谢,它完美地满足了我的需求。但事实上,我并不需要远程访问我的虚拟机,我以为EApubs只是想在其虚拟机上获得互联网访问。 - Avio
@Avio 不不不我的朋友,我需要遠程訪問我的機器。如果我設置NAT並創建虛擬機,它就能正常運行。 - THpubs
这里有一个线索,解决了我遇到的一个问题,即IP转发关闭了,cat /proc/sys/net/ipv4/ip_forward显示为0。启用并持久化它解决了我的问题,在这篇帖子中有说明 - Jake Cobb

  • 相关问题