在无头 debian 12 上,我无法通过网桥将 freepbx KVM 连接到主机网络。我缺少什么?

问题描述 投票:0回答:1

我有一个 debian 12 无头服务器,我在其中运行多个服务。我安装了 KVM 并创建了一个虚拟机来托管 freePBX。我希望可以从主机网络访问 freePBX。无头主机和虚拟机都应该有静态 IP 配置,所以我出去执行了以下操作: 我已经在主机

/etc/network/interfaces.d/br0
中创建了一个桥接配置,其中包含以下信息

auto br0
iface br0 inet static
        address 192.168.1.254
        broadcast 192.168.1.255
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4
        bridge_ports eno1
        bridge_stp off       # disable Spanning Tree Protocol
        bridge_waitport 0    # no delay before a port becomes available
        bridge_fd 0          # no forwarding delay

我从我的

/etc/network/interfaces
中删除了所有eno1信息,现在我只剩下以下内容

source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback

我在

/root/bridged.xml
中创建了一个桥接配置 xml,其中包含以下内容

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
</network>

将其加载到 KVM 中,我在 VM 配置文件中看到它。

sudo virsh net-define --file /root/bridged.xml
sudo virsh net-autostart br0
sudo virsh net-start br0
  <interface type='bridge'>
      <mac address='52:54:00:6d:2d:69'/>
      <source bridge='br0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  </interface>

虚拟机设置为静态获取 192.168.1.249 地址,但我在主机网络中仍然看不到它。

更多可能有帮助的信息:

root@box:~# brctl show
bridge name     bridge id               STP enabled     interfaces

br0             8000.82008c934457       no              eno1
                                                        vnet0
docker0         8000.0242e0629ca2       no              vethc2a76a0
                                                        vethc383b80
root@box:~#
root@box:~# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether ec:b1:d7:66:1c:da brd ff:ff:ff:ff:ff:ff
    altname enp0s25
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 82:00:8c:93:44:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.254/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 2a02:2149:8bcc:d400:8000:8cff:fe93:4457/64 scope global dynamic mngtmpaddr
       valid_lft 86240sec preferred_lft 86240sec
    inet6 fe80::8000:8cff:fe93:4457/64 scope link
       valid_lft forever preferred_lft forever
..........................................
103: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:6d:2d:69 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe6d:2d69/64 scope link
       valid_lft forever preferred_lft forever
root@box:~#

通过 ssh 隧道通过 freepbx 控制台上的 VNC 连接时,我无法从主机网络 ping 任何内容,因此目前我认为虚拟机已与网络断开,即使它位于 br0 桥中。

这是我第一次仅使用 CLI 在无头系统上设置 KVM,因此我可能会不知所措并错过一些明显的东西。我缺少什么?我该如何进一步解决该问题?

debian headless kvm freepbx
1个回答
0
投票

正如我所说,这很容易。显然我必须对主机上的网桥进行 NAT。问题解决了。

sudo iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
sudo iptables -I FORWARD 1 -i br0 -o br0 -j ACCEPT
sudo iptables -I FORWARD 1 -i br0 -o br0 -j ACCEPT
© www.soinside.com 2019 - 2024. All rights reserved.