使用 KVM/QEMU 在 NAT 上进行端口转发

Port forwarding on NAT using KVM/QEMU

我正在为访客网络使用 NAT 模式。我需要可以从访客外部访问我的机器。我已经设置了 iptables 以将主机上的特定端口转发到来宾上的端口 22,但这似乎不起作用。

我添加了这条规则:

# Port Forwardings
-A PREROUTING -i eth0 -p tcp --dport 9867 -j DNAT --to-destination 192.168.122.136:22

# Forward traffic through eth0 - Change to match you out-interface
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE 

当我从主机 ssh 192.168.122.136 时,它工作得很好,但是当我尝试 ssh 192.168.122.136 -p 9867 时,它显示 ssh: connect to host 192.168.122.1 port 9867: Connection refused

我在 /etc/ufw/sysctl.conf

上启用了端口转发

using iptables -t nat -L 表明规则是在 iptable

上设置的
DNAT       tcp  --  anywhere             anywhere             tcp dpt:9867 to:192.168.122.136:22

找到我的答案here。基本上我把上面的改成了

# connections from outside
iptables -t nat -A PREROUTING -p tcp --dport 9867 -j DNAT --to 192.168.122.136:22
# for local connection
iptables -t nat -A OUTPUT -p tcp --dport 9867 -j DNAT --to 192.168.122.136:22

# Masquerade local subnet
iptables -t nat -A POSTROUTING -s 192.168.122.0/24 -j MASQUERADE
iptables -A FORWARD -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i virbr0 -o eth0 -j ACCEPT
iptables -A FORWARD -i virbr0 -o lo -j ACCEPT