具有一个公共IP地址的SmartOS虚拟化

可能吗? (这个问题的标题)

Virtualization with one public IP addresssearchVirtualization with one public IP address没有任何用处

我拥有的:

  • 在专用服务器上的SmartOS。
  • 专用服务器有一个公共IP地址。

我想做的事:

  • 从该服务器托pipe多个来宾操作系统

问题:

  • 通过虚拟客户机的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代理一样的基于主机的翻译?

是的你可以!

对于SmartOS的一般帮助:

Google将SmartOS视为Solaris的同义词。 始终使用位于smartos.org的search; 请勿直接使用Google。 Freenode上的#SmartOS和邮件列表也是非常宝贵的资源。

数据中心单个IP设置的安全性问题:

在SmartOS你通常有一个pipe理界面(私人/局域网)和一个公共的(公共/广域网)。 我意识到在部署中这可能是不可能的,但是知道KVM虚拟主机将在pipe理界面上运行未受保护的VNC是非常重要的。 您需要确保使用防火墙或configuration更改。

你需要做的是设置一个防火墙,网关,负载均衡器等的防火墙。防火墙区域有两个nics,一个在pipe理界面,一个在WAN上。 你可以把所有的客人放在一个虚拟的交换机上,就像把他们连接到一个物理交换机上一样。

由于您只有一个IP,我会尝试纠正,如果您将networkingconfiguration搞乱,您可能无法访问机器,则在区域中设置可能会非常棘手。 虽然通常不build议,但您可能需要在全局区域中运行防火墙。

  1. 对于客人上网,build立NAT: http : //wiki.smartos.org/display/DOC/NAT+using+Etherstubs

  2. 对于传入的https / http:我运行一个nginx实例,并在site-available / sites-enabled文件夹中为每个服务/网站使用一个文件。 NGINX和SmartOS的默认configuration是简约的,不会包含这些文件夹。

  3. 对于传入的tcp / udp服务:您可以使用防火墙区域中的内置防火墙(请参阅man fwadm),或者如果要执行虚拟主机,请使用HAProxy。 (您可以专门使用HAProxy并消除NGINX)

我大多同意杰弗里的回答。

不过,我写了你提到的具体目的(使用1个公共IP的智能运行)的post,所以在这里我的build议,如果你申请我的程序。

http / httpsstream量:

  • 在区域或kvm guest中安装nginx(比方说ip 10.0.0.2 port 80)
  • 在/etc/ipf/ipnat.conf(或/opt/custom/share/svc/smartos_setup.sh中的NAT部分)中添加端口redirect

     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实例,就可以将nginxconfiguration为在其他主机上的其他web服务器前的反向代理,请参阅: http : //wiki.nginx.org/NginxHttpProxyModule#proxy_pass

sshstream量:

同上,端口2222redirect到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(PermitRootLogin是)区域上启用了rootlogin。

我在这里设置了一个可重现的要点。 它使用永久链接在github上设置,并且在与良好的更改联系时保持最新,所以它不应该在很短的时间内到达任何地方。

首先,你想要完成什么的图表:

  +------------------------------+ | Host | +----------+ | +--------+ +--------+ | | Internet +------+ Ext IF +--------+ Int IF | | +----------+ | | e1000g | | gw0 | | | +--------+ +---+----+ | | | | | +--+-----------+ | | | |Z1| VNIC1+-----+ | | +--------------+ | | | +--------------+ | | | |Z2| VNIC2+-----+ | | +--------------+ | | | +--------------+ | | | |Z3| VNIC3+-----+ | | +--+-----------+ | | | +------------------------------+ 

一般来说,你必须首先明白,在SmartOS上没有办法build立一个自然的内部networking,但是每种方法都有一些必须解决的问题。 以下是这些事情的概述:

  1. 必须build立一个内部networking,并且必须涉及全局区域,因为它控制着外部接口和ip。
  2. 你必须决定使用etherstub或不使用。 有两个select的亲和骗局,但他们是相当小的。 无论哪种方式,全局区域需要一个内部IP作为网关。
  3. 使用ipnat的NAT非常简单,可以在这里阅读。ipf的防火墙规则也是如此。 这里的基本前提是内部端口转发使用rdr和外部端口映射(网关将内部设备的出站端口映射到不同的外部端口并跟踪它的状态,以便返回数据包将其作为内部IP应该)是用map线来实现的。
  4. 确保您的configuration在重新启动后保持不变,这是SmartOS的最后一个问题。 最简单的方法也是使用SMF运行设置防火墙和NAT规则的脚本的最佳方式。