我对KVM很陌生并在这里阅读了很多帖子,但在我的案例中没有一个是有用的。
我在KVM主机上有一个guest虚拟机,并希望将端口80从主机转发到guest虚拟机中的端口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>
有人可以帮忙吗?非常感谢提前!