![使用虚拟机进行 Linux 网络和端口转发](https://linux22.com/image/758388/%E4%BD%BF%E7%94%A8%E8%99%9A%E6%8B%9F%E6%9C%BA%E8%BF%9B%E8%A1%8C%20Linux%20%E7%BD%91%E7%BB%9C%E5%92%8C%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91.png)
我在 RaspberryPi4 上运行了一个应用程序,它通过我的 Fedora32 笔记本电脑将传感器数据发送到 Gnome-Boxes 上我的虚拟机上的 Ubuntu 18.04。主机是 Fedora 32 笔记本电脑。Raspberry Pi 主板和我的笔记本电脑连接在同一个 wifi 网络中。
我可以使用以下命令查看 Fedora 32 的 IP 地址和到 Ubuntu VM 的虚拟桥ip a
:
3: wlp1s0: ... inet 192.168.2.20/24 brd 192.168.2.255
6: virbr0: ... inet 192.168.122.1/24 brd 192.168.122.255
我的 Raspberry Pi 的 IP 地址为:
3: wlan0: ... inet 192.168.2.21/24 brd 192.168.2.255
我的Ubuntu18.04 VM的IP是:
2: enp1s0: ... inet 192.168.122.253 brd 192.168.122.255
从 RaspberryPi 到 Fedora32 和从 Fedora32 到 RaspberryPi 的 Ping 操作均可行。从 UbuntuVM 到 Fedora32 和从 Fedora32 到 UbuntuVM 的 Ping 操作也可行。
我可以看到从 UbuntuVM 到 RaspberryPi 的连接y@ubuntu:$ ping 192.168.2.21
。但是,看不到从 RaspberryPi 到 UbuntuVM 的连接(y@rapsberry:$ ping 192.168.122.253
)。
应用程序使用此网络设置发送数据:http://192.168.122.253:11311
。
我在 Fedora32 上运行了这些命令。但是,仍然没有连接:
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -d 0.0.0.0/0 -j ACCEPT
firewall-cmd --zone=FedoraWorkstation --add-forward-port=port=11311:proto=tcp:toaddr=192.168.122.253:toport=11311
firewall-cmd --reload
回报。firewall-cmd --get-default-zone
FedoraWorkstation
cat /proc/sys/net/ipv4/ip_forward
返回 1。
我也尝试过解决方案libvirt-hook-qemu从https://superuser.com/questions/1474254/firewall-cmd-add-forward-port-dont-work/1475915#1475915.但是它还是不起作用。
连接 RaspberryPi4 和 Ubuntu18 笔记本电脑(没有 Fedora 及其 Ubuntu VM)的设置有效。有什么提示吗?