我向您解释我的配置:
- 安装了 Debian 8 和 Proxmox 的服务器。它有一个本地地址(eth0:10.0.0.100)并通过代理访问互联网;
- 一个使用 Centos 7 的客户端,地址为 192.168.0.100。我给了它所有的代理配置,它可以毫无问题地访问互联网。
Proxmox 主机和 Centos 客户机之间的本地网络是通过主机上的 vmbr0 接口(192.168.0.254)。
我的目标是从 10.0.0.0 网络访问任何虚拟机。例如,通过 SSH 访问 10.0.0.100 机器没有问题。有了良好的 NAT 规则,通过 SSH 访问 192.168.0.100 也没有问题。
但我的问题如下:当我想访问安装在 CentOS 客户机上的 Web 服务器 (Foreman) 时,无法从 10.0.0.0 网络访问它。可以通过以下方式访问 Foreman 管理页面:https://foreman.mycompany.org(例如)。我已配置 /etc/hosts 文件,以便将 192.168.0.100 映射到域名 foreman.mycompany.org。从 10.0.0.100 机器,使用 lynx :没有问题,会出现 Foreman 管理页面。但从任何 10.0.0.0 网络机器,都无法访问该页面。
我已经尝试通过 iptables 定义许多 NAT 规则,通过 apache2 定义反向代理,但都没有成功。:/
请问您有什么想法吗?
我的主机配置:
~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 192.168.0.0/24 state NEW,RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.0.0/24 anywhere
DNAT tcp -- anywhere anywhere tcp dpt:2222 to:192.168.0.100:22
DNAT tcp -- anywhere anywhere tcp dpt:https to:192.168.0.100:443
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.0.0/24 anywhere
我的反向代理配置:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
<Proxy https://foreman.mycompany.org/>
Order Deny,Allow
Allow from all
</Proxy>
ServerName foreman.mycompany.org
ProxyRequests Off
ProxyPass / https://foreman.mycompany.org/
ProxyPassReverse / https://foreman.mycompany.org/
</VirtualHost>
</IfModule>
预先感谢您的帮助 !
答案1
我通过 proxmox 的 IRC 频道解决了这个问题:我必须在 eth0 接口而不是 vmbr0 上监听预路由 iptables 规则,因为它们没有连接。