QEMU 客户机可以访问 HTTPS 站点,但不能访问 HTTP

QEMU 客户机可以访问 HTTPS 站点,但不能访问 HTTP

因此,我使用 virt-manager 在我的 Debian Wheezy 服务器上配置 QEMU 客户机。

作为访客,我已经安装了 Ubuntu 14.04.1 服务器。

该服务器包含以下 iptables 规则:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3080
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 3080

这是从 serverfault 问题中获取的“如何以 Linux 上的普通用户身份在端口 80 上运行服务器?

因此,到 Debian 主机的端口 80 上的传入 HTTP 请求被重定向到正确的应用程序。

但是,副作用是,来自我的 QEMU 客户端的传出请求也被重定向到那里。我该如何修复?

答案1

规则

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3080

意味着重定向一切目标端口为 80,端口为 3080,匹配所有 HTTP 流量。您需要输入 IP 地址或接口才能具体说明:如果您的 IP 地址是 1.2.3.4,则此操作将执行:

iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j REDIRECT --to-port 3080

-d 1.2.3.4标志指定目标地址,并且只有对您的 IP 的请求才会被重定向。

另一个选择是使用网络接口,因此如果您的互联网连接已打开eth0,则可以使用:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3080

这也行得通,因为-i匹配传入接口上的流量eth0,例如向您的计算机发出的请求。

您甚至可以组合过滤器(例如,您有多个 NIC 和多个 IP,但您只想在一对上运行该站点)

iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.4 -p tcp -j REDIRECT --to-port 3080

如果您需要精细控制谁被重定向、谁被阻止等,您应该查阅 iptables 手册。

相关内容