Networking

將網路數據包從主機轉發到 QEMU 映像

  • March 10, 2021

我有一個本地建構的 Yocto 映像,我在 QEMU 中執行。我需要將單個埠從主機轉發到localhostQEMU 映像內部。我使用的 TAP 連接分配192.168.7.1給主機,分配給192.168.7.2QEMU 映像。

我在 QEMU 映像能夠成功執行的主機上啟動了一個伺服器wget。它在 QEMU 映像中的外觀範例:- QEMU 鏡像 wget 快照

我想在 QEMU 映像中執行的應用程序127.0.0.1不在192.168.7.1port 上5000。如何5000將外部 IP ( ) 中的此埠 ( ) 隧道傳輸192.168.7.1到 localhost?我想要的小圖:- iptables

PS注意:

以下是我嘗試過的:

iptables

iptables -t nat -A PREROUTING -p tcp --dport 5000 -i eth0 -j DNAT --to-destination   127.0.0.1:5000
iptables -t nat -A POSTROUTING -p tcp --sport 5001 -o eth0 -j SNAT --to-source 192.168.7.1:5001 

iptables

SSH 隧道

ssh -f -N osboxes@192.168.7.1 -L 5000:localhost:5001

(這裡osboxes是主機的主機名) SSH 隧道

任何幫助將不勝感激。非常感謝 !

問題的作者在這裡。答案是使用slirp 連接。使用xinetd,之類iptables的網路工具sshd表明自己在工作 - 但在我的情況下不是。在詳盡地檢查了這些配置中的每一個之後,我發現我只是通過從分接頭連接中引入一個新的 NIC 來使我的工作變得更加艱難。

如果要使用模擬作業系統的 localhost 進行網路連接,則使用 slirp 網路標誌會更容易。對我有用的 QEMU 標誌是:

-netdev user,id=net0,hostfwd=tcp::5000-:5000,hostfwd=tcp::5001-:5001

引用自:https://unix.stackexchange.com/questions/632031