和ifconfig
,我能够在单个网络接口卡上配置多个 IP 地址。我为什么要这样做,以及稍后我将如何利用多个地址,例如软件如何知道要使用哪一个?
到目前为止,我只使用过具有单个 IP 地址的网络接口。
答案1
一些(但不是全部)原因:
- 如前所述,为了托管多个 SSL 站点
- 因为您可能正在整合来自多个主机的服务并且需要保留地址
- 为了使用稍后可以转移到另一台主机的 IP 地址
- 通过将其 IP 地址添加到另一台主机来补偿当时发生故障的主机
- 如果您在同一物理/逻辑网络/VLAN 上有多个 IP 网络,它将阻止通过网关交换流量,从而加快速度并减少负载
- 为了设置具有默认 IP 地址的设备,因此您需要在同一网络上添加一个地址
- 为了使用不同的公共IP地址来避开防火墙或避免被垃圾邮件过滤器列入黑名单
- 为了让事情对外人来说不那么明显。例如,您可能在 IP 地址 1.2.3.4 上运行 apache,但只允许在 1.2.3.5 上使用 SSH。这样,如果有人尝试攻击站点后面的 IP 地址,他们将不会发现 SSH 正在运行。
- 为了多次运行相同的服务
- 为了在反向 DNS 查找中使用不同的主机名。例如,如果您从该主机连接到外部主机,并且您希望显示为两个不同的域/主机名
- 为了不暴露服务之间的共性。例如,如果您托管 site1.example.com 和 site2.example.org 并且将它们映射到不同的 IP,而不是使用 CNAME,那么它们之间不会有明显的链接
答案2
对于网络服务器来说,这取决于情况。例如,如果您有多个虚拟主机,那么在 Apache 中,服务器就知道要使用 VirtualHost 块中的哪个 IP。
<VirtualHost 10.10.10.1:80>
...
</VirtualHost>
您还可以让 VirtualHost 监听 Apache 当前正在监听的所有可用接口(通过 Listen 指令,例如Listen *:80
<VirtualHost *:80>
...
</VirtualHost>
如果您有多个站点在启用了 SSL 的服务器上运行,则最好为每个站点设置一个单独的 IP。这是因为 SSL 证书是在发送 HTTP 标头之前交换的。如果一个 IP 上有多个虚拟主机,那么 Apache 将无法知道您在没有主机标头的情况下尝试访问哪个站点。
我确信还有很多其他用例,这是一个常见的用例。
答案3
最好为单独的服务分配单独的 IP,这样当您必须将其中一项服务迁移到另一个硬件/位置时,其他组件就会是透明的。
有些服务使用相同的端口号,那么您必须有多个 ip 才能在单个服务器上运行该服务。
此外,如果您想要处理比临时端口更多的同时连接,您将需要更多的 ip。
答案4
多个 IP 地址允许您拥有服务 IP,换句话说,您可以将 IP 与特定服务相匹配,例如在 sendmail 中您可以这样做:
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=192.168.1.25')dnl
等等。它可用于高可用性、测试和网络路由 ^^