我对 KVM 很陌生,在这里阅读了很多线程,但对我的情况都没有帮助。
我在 KVM 主机上有一个来宾,并希望将端口 80 从主机转发到来宾中的端口 80。我用 iptables 做到了这一点:
Guest_name=theguest
Guest_ipaddr=192.168.122.43
Host_port=( '80' )
Guest_port=( '80' )
length=$(( ${#Host_port[@]} - 1 ))
if [ "${1}" = "${Guest_name}" ]; then
if [ "${2}" = "stopped" -o "${2}" = "reconnect" ]; then
for i in `seq 0 $length`; do
iptables -t nat -D PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
iptables -D FORWARD -d ${Guest_ipaddr}/32 -p tcp -m state --state NEW -m tcp --dport ${Guest_port[$i]} -j ACCEPT
done
fi
if [ "${2}" = "start" -o "${2}" = "reconnect" ]; then
for i in `seq 0 $length`; do
iptables -t nat -A PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
iptables -I FORWARD -d ${Guest_ipaddr}/32 -p tcp -m state --state NEW -m tcp --dport ${Guest_port[$i]} -j ACCEPT
done
fi
fi
总的来说,这是可行的,但并非总是如此。对 apache 的 http 请求正在运行,因此规则似乎是正确的。如果我向 http 地址发出 wget 请求,则不会发生任何事情。如果我向 ftp 地址发出 wget 请求(使用 --user=theusername --password=thepassword),它就可以工作。
最大的问题:apt-get update 不起作用。它所做的只是:
0% [Verbindung mit de.archive.ubuntu.com (141.30.13.20)] [Verbindung mit security.ubuntu.com (91.189.91.13)]
在这个阶段只有 Ctrl-C 有帮助。
KVM xml 文件中的网络配置如下:
<interface type='network'>
<source network="default"/>
<mac address='themacaddress'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
有人可以帮忙吗?提前非常感谢!