我有一个本地构建的 Yocto 镜像,并且在 QEMU 中运行。我需要将单个端口从主机转发到localhost
QEMU 映像内部。我使用的 TAP 连接分配192.168.7.1
给主机192.168.7.2
和 QEMU 映像。
我在 QEMU 映像成功启动的主机上启动了一个服务器wget
。 QEMU 图像中的示例:-
我想在 QEMU 映像中运行的应用程序不在127.0.0.1
端口192.168.7.1
上进行通信5000
。如何通过隧道将5000
外部 IP ( ) 中的端口 ( 192.168.7.1
) 连接到本地主机?我想要的小图:-
注:
以下是我尝试过的:
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
ssh 隧道
ssh -f -N [email protected] -L 5000:localhost:5001
任何帮助将不胜感激。非常感谢 !
答案1
问题的作者在这里。答案是使用滑动连接。使用xinetd
、iptables
、等网络工具sshd
显示自己可以工作 - 但在我的情况下却没有。在详尽地检查了每一个配置之后,我发现通过从分接头连接引入新的网卡只是让我的工作变得更加困难。
如果要使用模拟操作系统的本地主机来完成网络,那么使用 slirp 网络标志会更容易。对我有用的 QEMU 标志是:
-netdev user,id=net0,hostfwd=tcp::5000-:5000,hostfwd=tcp::5001-:5001