OpenVZ:访问物理服务器与访问虚拟服务器

我只是玩OpenVZ,没有虚拟化经验。 所以我在理解这个虚拟基础架构时遇到以下问题:

我有一个物理的Linux服务器,它有一个IP地址(例如1.2.3.4),我有两个在OpenVZ中运行的虚拟服务器实例。 我想通过ssh到达两个虚拟服务器。 那么,我应该使用什么IP地址?

我需要3个IP地址吗?

  • 一个用于物理主服务器
  • 一个为第一个虚拟服务器和
  • 一个用于第二个虚拟服务器

或者openVZ如何决定采用哪个实例呢?

每个OpenVZ虚拟机都会分配自己的IP地址,自己的SSH守护进程运行并监听虚拟机的IP地址。 如果要将SSH连接到主机,则使用主机的IP地址,而当您想要将SSH连接到其中一个访客时,可以使用访客的IP地址。 (当我说“IP地址”时,也可以replace“引用IP地址的DNS条目”)。

在大多数情况下(至less在学习曲线的早期阶段),您可以将VM看作是一个真实的物理机器,就所有重要的方面而言,就如同在日常使用中一样基础。

我会挑战性地build议在硬件节点上查看DNAT设置。

这是我的工作设置(有几件事情混淆):

*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # DHCP -A INPUT -i vzpb -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT -A OUTPUT -o vzpb -p udp -m udp --sport 67:68 --dport 67:68 -j ACCEPT # Allow ping to and from -A INPUT -p icmp --icmp-type 8 -j ACCEPT -A INPUT -p icmp --icmp-type 0 -j ACCEPT -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT # All new DROP -A INPUT -m state --state NEW -j REJECT -A OUTPUT -m state --state NEW -j REJECT # All non-tcp DROP -A INPUT ! -p tcp -j REJECT -A OUTPUT ! -p tcp -j REJECT # username xsmith = 1234 (XX State University) #-A INPUT -m owner --uid-owner 1234 -j REJECT COMMIT *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # SNAT (to give Internet access for the local containers) -A POSTROUTING -p tcp -o vzpb -j SNAT --to-source 1.2.3.4 # upd is needed for DNS -A POSTROUTING -p udp -o vzpb -j SNAT --to-source 1.2.3.4 # DNAT SSH -A PREROUTING -p tcp -d 1.2.3.4 --dport 22 -j DNAT --to-destination 192.168.1.2 # SNAT --to-source NOT required # DNAT Web -A PREROUTING -p tcp -d 1.2.3.4 --dport 80 -j DNAT --to-destination 192.168.1.3 -A POSTROUTING -p tcp -d 192.168.1.2 --dport 80 -j SNAT --to-source 192.168.1.1 # --to-source required COMMIT 

另外,把这个放到你的硬件节点的/etc/sysctl.conf中,运行sysctl -p

 ### OpenVZ settings (2011-01-25) # from http://wiki.openvz.org/VEs_and_HNs_in_different_subnets # On Hardware Node we generally need packet # forwarding enabled and proxy arp disabled net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # TCP Explict Congestion Notification net.ipv4.tcp_ecn = 0 # we do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 

选项2

为了更加灵活和安全,考虑从硬件节点中删除所有公共IP,并将上述NATconfiguration放入专门用于NAT目的的容器中。 该容器将需要一个公共IP(可以是该机器上唯一的公共IP)。

NAT容器需要对公共networking接口进行MAC级访问,因此您需要从VENET切换到VETH: http ://wiki.openvz.org/Differences_between_venet_and_veth

注意:如果您正确地防护您的网桥,veth可以非常安全。

要做到这一点,你将不得不阅读这个页面很多: http ://wiki.openvz.org/Veth