如何向 Linux 服务器添加额外的 IP 地址

x33g5p2x  于2022-07-26 转载在 Linux  
字(1.6k)|赞(0)|评价(0)|浏览(559)

大多数 Linux 服务器,包括虚拟专用服务器,都会附带一个公共 IP 地址供您连接。但是,用于承载连接的物理网卡可以支持任意数量的 IP 地址。以下是向服务器添加新服务器的方法。

为什么使用另一个 IP 地址?

出于多种原因,拥有多个地址非常有用。主要好处是能够让多个应用程序在同一个端口上运行,但在不同的地址上。例如,您不能同时运行 NGINX 和 Apache,因为它们都是需要使用端口 80 的 Web 服务器。但是,如果您运行 NGINX 绑定到一个 IP 地址,而 Apache 绑定到另一个,您可以这样做没有任何冲突。

在这种提供 Web 内容的情况下,您还可以使用反向代理解决此问题——一种位于内容前面的 Web 服务器,侦听一个端口,并将内容定向到其他位置,通常是多个不同的位置。
但是,拥有多个实际 IP 地址会简单得多,无需维护反向代理配置。您只需在正确的地址上启动服务,它就会直接在该地址上侦听。

多地址也与 Docker 配合得很好,Docker是一种可以将应用程序打包到可移植容器中并在任何地方运行的工具。拥有多个外部 IP 来绑定容器以允许您的服务器在一台机器上轻松运行许多不同的应用程序。

如何获取更多 IP 地址?

世界上剩下的公共 IP 数量是有限的,而且大部分已经分配给了互联网公司。为了获得更多,您需要从您的托管服务提供商处购买或租用它们。大多数主流云提供商都可以选择额外的 IP,但设置将取决于您使用的内容。

例如,如果您在 AWS 上,您可能已经拥有EC2实例的弹性 IP 地址。但是,您可以添加更多弹性 IP,每个费用为每月 20元。
其他云提供商可能会让您购买整个地址块。OVH 是最大的专用服务器提供商之一,提供高达 /24 大小的 CIDR 块,一次性收费。

想要直接拥有和控制大量 IPv4 地址空间的大公司也可以直接从 IANA 购买整个区块(通过经纪公司)。然而,这需要付出很大的代价——每个地址通常超过 50 美元,而大块的成本则高达数万甚至数十万美元。

多个 IP 地址如何工作?

Linux 网络有点奇怪。物理连接到服务器的每个网卡都将显示ip addr show 为网络接口,如eth0 或eno1。也可以有各种类型的虚拟接口,但从服务器发出的所有实际连接都通过物理网络接口。

IP 地址是不同的——它们不是与您的服务器网络接口相关联的有形事物,它们只是用于识别服务器以进行路由的抽象。您的托管服务提供商将收到一个请求,如果它的目的地是您拥有的 IP 地址,它将使用主机的路由配置路由到您的服务器。
关键部分是您的服务器的网络接口必须在软件中配置才能接收该请求。如果您的服务器没有将地址添加到网络接口的配置中,它将不会响应。您可以在技术上配置您的服务器以侦听任何地址,即使是您不拥有的地址,尽管它不会做任何事情。

IP 地址以块的形式分配,以 CIDR 表示法表示。最小的是/32,它代表一个地址。随着数字变小,地址的数量会增加。

192.168.0.0/24 -> 192.168.0.0 到 192.168.0.255

将 Linux 配置为使用多个 IP 地址

Linux 网络配置可能很困难,并且有多种工具可以使其更容易。最好的之一是netplan由 Ubuntu 背后的团队创建的。它使用简单的 YAML 模板配置网络接口。它应该默认安装在大多数系统上。

在 中创建一个新模板/etc/netplan/config.yaml:

sudo nano /etc/netplan/config.yaml

然后,添加您的配置。请注意,此示例适用于 interface eno1,可能需要更改为eth0 或类似的内容。

network:
    version: 2
    ethernets:
        eno1:
            addresses:
            - 123.1.2.3/32

您可以在此处指定多个地址块,或将单个 IP 地址指定为单个 /32 块。

配置好后,运行netplan try 测试一下。如果配置有问题,它将被回滚。

sudo netplan try

如果可行,请应用配置:

sudo netplan apply

tcpdump 您可以通过运行显示发送到接口的请求来调试路由:

相关文章