![具有一个公共 IP 地址的 SmartOS 虚拟化](https://linux22.com/image/619183/%E5%85%B7%E6%9C%89%E4%B8%80%E4%B8%AA%E5%85%AC%E5%85%B1%20IP%20%E5%9C%B0%E5%9D%80%E7%9A%84%20SmartOS%20%E8%99%9A%E6%8B%9F%E5%8C%96.png)
有可能吗?(问题标题)
谷歌搜索Virtualization with one public IP address
没有找到有用的信息
我拥有的:
- 专用服务器上的 SmartOS。
- 专用服务器有一个公共 IP 地址。
我想做的事:
- 从该服务器托管多个客户操作系统
问题:
- 通过(虚拟化客户的服务器)的IP地址访问客户机。
这可能吗?
抱歉,我是新手
研究
http://www.machine-unix.com/beginning-with-smartos/#comment-7256 无法解决我的问题 - 该指南设置了一个内部 IP
http://blog.bgentil.fr/smartos-use-global-zone-as-gateway-for-guests.html
想法
- 也许可以像使用 nginx 代理那样进行基于主机的翻译?
答案1
是的你可以!
有关 SmartOS 的一般帮助:
Google 将 SmartOS 视为 Solaris 的同义词。请始终使用位于 smartos.org 的搜索;不要直接使用 Google。Freenode 上的 #SmartOS 和邮件列表也是非常宝贵的资源。
数据中心单 IP 设置的安全问题:
在 SmartOS 中,您通常有一个管理界面(私有/LAN)和一个公共界面(公共/WAN)。我知道在您的部署中这可能无法实现,但了解 KVM 虚拟主机将在管理界面上运行不受保护的 VNC 非常重要。您需要使用防火墙或配置更改来确保安全。
您需要做的是设置一个区域,该区域将充当防火墙、网关、负载平衡器等。该防火墙区域将有两个网卡,一个在管理界面上,一个在 WAN 上。您可以将所有来宾放在虚拟交换机上,就像将它们连接到物理交换机一样。
由于您只有一个 IP(我会尝试纠正),因此在区域中设置起来可能很棘手,如果您弄乱了网络配置,您可能会失去对机器的访问权限。虽然通常不建议这样做,但您可能需要在全局区域中运行防火墙。
为了让客人能够访问互联网,请设置 NAT: http://wiki.smartos.org/display/DOC/NAT+using+Etherstubs
对于传入的 https/http:我运行一个 nginx 实例,并在 sites-available/sites-enabled 文件夹中为每个服务/网站使用一个文件。带有 SmartOS 的 NGINX 的默认配置非常简单,不会包含这些文件夹。
对于传入的 tcp/udp 服务:您可以在防火墙区域中使用内置防火墙(请参阅 man fwadm),或者如果您想使用虚拟主机,则可以使用 HAProxy。(您可以专门使用 HAProxy 并消除 NGINX)
答案2
我已经为此设置了一个可重现的要点这里。它是使用永久链接在 GitHub 上设置的,当有好的变化时我会及时更新,所以它不会很快消失。
首先,您要实现的目标的图表如下:
+------------------------------+
| Host |
+----------+ | +--------+ +--------+ |
| Internet +------+ Ext IF +--------+ Int IF | |
+----------+ | | e1000g | | gw0 | |
| +--------+ +---+----+ |
| | |
| +--+-----------+ | |
| |Z1| VNIC1+-----+ |
| +--------------+ | |
| +--------------+ | |
| |Z2| VNIC2+-----+ |
| +--------------+ | |
| +--------------+ | |
| |Z3| VNIC3+-----+ |
| +--+-----------+ |
| |
+------------------------------+
一般来说,你必须首先明白,没有一在 SmartOS 上设置 nat'd 内部网络的方法有很多,但每种方法都必须解决一些问题。以下是这些问题的概述:
- 必须建立内部网络,并且必须涉及全局区域,因为它可以控制外部接口和 IP。
- 你必须决定使用以太网存根或者不。两种选择都有利弊,但利弊相当小。无论哪种方式,全局区域都需要一个充当网关的内部 IP。
- 使用 ipnat 进行 NAT 非常简单,可以阅读这里.. 防火墙规则与 ipf 相同。这里的基本前提是内部端口转发使用
rdr
和外部端口映射(网关将内部设备的出站端口映射到不同的外部端口并跟踪其状态,以便返回数据包到达其应到达的内部 ip)是通过map
线路实现的。 - 确保您的配置在重启后仍然有效是 SmartOS 的最后一个关注点。最简单的方法也是最好的方法,即使用 SMF 运行设置防火墙和 nat 规则的脚本。
答案3
我基本同意 Jeffrey 的回答。
然而我写了您提到的帖子为了这个特定目的(使用 1 个公共 IP 运行 smartos),所以如果您应用了我的程序,这里是我的建议。
http/https 流量:
- 在区域或 kvm 客户机中安装 nginx(假设 ip 10.0.0.2 端口 80)
在 /etc/ipf/ipnat.conf(或 /opt/custom/share/svc/smartos_setup.sh 中的 NAT 部分)中添加端口重定向
rdr e1000g0 0/0 port 80 -> 10.0.0.2 port 80 tcp
在 /etc/ipf/ipf.conf 中添加防火墙规则(或 /opt/custom/share/svc/smartos_setup.sh 中的 FW 部分)
pass in quick on e1000g0 from any to e1000g0/32 port=80 pass in quick on e1000g0 from any to 10.0.0.2 port=80
重新加载 ipfilter 和 ipnat 规则:
$ ipf -Fa -f /etc/ipf/ipf.conf $ ipnat -FC -f /etc/ipf/ipnat.conf
- 一旦您可以连接到 nginx 实例,您就可以将 nginx 配置为其他主机上其他 Web 服务器前面的反向代理,请参阅:http://wiki.nginx.org/NginxHttpProxyModule#proxy_pass
SSH 流量:
与上文相同,端口 2222 重定向至 10.0.0.2:22,端口 2223 重定向至 10.0.0.3:22:
rdr e1000g0 0/0 port 2222 -> 10.0.0.2 port 22 tcp
rdr e1000g0 0/0 port 2223 -> 10.0.0.3 port 22 tcp
如果需要,请确保在区域 /etc/ssh/sshd_config 上启用了 root 登录(PermitRootLogin yes)