是时候用新服务器替换旧服务器了。在旧服务器上,所有设置都在裸机上进行。在新服务器上,我尝试为特定任务设置虚拟服务器。
主机操作系统是 Debian 9。我将在 HVM 模式下运行来宾(也是 Debian)。计划的服务器是:MySql、电子邮件(postfix、curys、垃圾邮件过滤器和所有与电子邮件相关的服务器)、Web 服务器(nginx+php)、Web 代理(SSL 终结器)
但问题在于网络。我不希望客人在外面可见,他们也没有公共 IP。但每个客人都必须看到其他客人。
我创建了两座桥梁。hostbr0
和xenbr0
。在 中我添加了具有一个静态 IP(公共)的hostbr0
物理接口。在 中我添加了接口。eno1
xenbr0
vdum1
vdum1
是带模块的虚拟接口dummy
,IP = 192.168.1.1。所有来宾的 IP 地址均来自 192.168.1.0 子网。因此所有来宾都在一个网络中。
我该如何配置 iptables,以便访客可以访问互联网?我不是在寻求确切的命令,而是寻求指导。我需要设置伪装吗?那么哪个接口必须伪装?是否可以在网桥之间设置转发?
我已经尝试过伪装展位桥和接口,但我无法从客户操作系统访问互联网。
我还想控制访客对互联网的访问。例如,mysql 访客根本不需要互联网(一般来说)。
在主机操作系统上我将使用shorewall
。
答案1
在主机操作系统上,您在 IPTables 上添加一条规则,该规则对从内部客户机传入并传出到外部的数据包执行 SNAT。
在 Shorewall 中,条目如下所示/etc/shorewall/masq
:
eth0 192.168.10.1 10.10.10.10
这里,eth0
是连接到互联网的接口。192.168.10.1
是您想要进行 NAT 的客户 IP 地址。10.10.10.10
是数据包在 SNAT 之后将收到的 IP 地址(通常与主机操作系统公共 IP 地址相同)。