我正在考虑创办自己的托管公司;即使我只是凭借经验获得报酬。
起初,我以为我会创建 shell 脚本来自动创建 OpenVZ 容器。但后来我意识到我还需要为每个容器设置自定义 IpTables 规则,并使用 DNAT/SNAT 让每个容器都能访问外部世界。
但是,这意味着每个容器都必须通过非常规端口号运行服务。托管服务提供商如何才能为多个容器提供单一公共 IP 地址,并且所有容器都可以通过端口 22 访问服务(例如 ssh)?
更重要的是,IPtables 规则必须静态创建。如果有人登录并想要运行自己的服务,他们通常会如何解释这一点?
我只能假设我遗漏了一些对于理解全局至关重要的东西。
答案1
容器不使用 NAT,而是被分配一个虚拟以太网设备,具有自己的 MAC 地址,然后可以作为网络上的独立主机,具有自己的可路由 IP 地址。
物理主机提供虚拟网桥,它透明地在其所连接的物理网络和容器之间转发包,而无需任何有关端口、协议等的特定知识。