本文介绍如何将内部绑定的 EIP 与云服务器进行绑定,以实现云服务器公网访问。

背景信息

内部绑定是指通过在云服务器内部添加一块可连接到公网网关的网卡的方式来绑定公网 IP。需要先申请一个内部绑定的公网 IP 并分配给云服务器,然后手动配置网卡 IP 地址及相关路由,以实现云服务器的公网访问。

约束与限制

  • 内部绑定只允许绑定到云服务器,不允许绑定到其他资源。

  • 内部绑定的 EIP 目前只允许绑定到云服务器主网卡,并且不能与其他绑定到主网卡的 EIP 同时存在。

  • 由于内部绑定的 EIP 是绑定到云服务器主网卡,因此对主网卡应用的安全组规则都会被应用到公网网卡。当删除主网卡的安全组时,公网网卡的安全组也会被同时删除。

  • 绑定 EIP 时会给云服务器增加默认安全组。

  • 私有网络内的云服务器绑定了 EIP 后,外网访问将使用 EIP 作为进出网关。如果同时配置了 VPC 的端口转发规则,端口转发规则将不再有效。

前提条件

  • 已申请内部绑定的 IPv4 EIP。具体操作,请参见申请 IPv4 EIP

  • 已创建需要绑定的云服务器,且云服务器与 EIP 在同一个区域。

步骤一:分配 EIP 给云服务器

  1. 登录管理控制台。

  2. 在顶部菜单栏中选择产品与服务 > 网络服务 > 弹性公网 EIP,进入公网 IPv4 页面。

  3. 在 EIP 列表,找到需要分配的内部绑定 EIP,右键点击 EIP,在弹出的快捷菜单中,选择分配到云服务器

    already eip for host2
  4. 在弹出的对话框中选择需要绑定的云服务器,点击提交

  5. 在弹出的提示框中,点击确认,即可将申请到的 EIP 绑定给所选云服务器。

步骤二:配置云服务器网络

分配 EIP 后,还需要手动为云服务器内的公网网卡进行网络配置,才能实现云服务器正常公网通信,主要包括 IP 地址配置及路由配置。

Ubuntu 系统

  1. 登录已分配 EIP 的云服务器,执行以下命令,可以看到云服务器内多出一块还未分配 IP 地址的公网网卡。

    ip a
    inbind eip nic ubuntu

    如上图所示,云服务器中一共有两块网卡,其中 eth0 为主网卡,eth1 则为步骤一中绑定的公网网卡。

  2. 配置 eth1 网卡的网络地址及默认路由。

    假设步骤一中给云服务器分配的 EIP 地址为 “139.198.190.188”。

    1. 执行以下命令,打开网络配置文件 /etc/network/interfaces

      sudo vi /etc/network/interfaces
    2. 在配置文件中添加如下配置,将 EIP 地址分配到 eth1,并配置 eth1 的网关作为默认网关。

      auto eth1
      iface eth1 inet static
        address 139.198.190.188  # 配置 EIP 地址
        netmask 255.255.255.0
        post-up ip route replace default via 139.198.190.1 dev eth1  # 配置默认路由

      以上配置示例中:

      • “139.198.190.188” 为云服务器 EIP 地址,请根据实际情况填写。

      • “139.198.190.1” 为 eth1 的网关地址,通常为该网段的第一个 IP 地址,请根据实际情况填写。

    3. ESC 退出编辑模式,执行 :wq 保存并退出文件。

    4. 执行以下命令,将配置应用到网卡 eth1。

      sudo ifup eth1
  3. 如果云服务器中运行了 NetworkManager 服务,请执行以下命令,重启 NetworkManager 服务,以避免 eth1 的网络配置被擦除。

    sudo systemctl restart NetworkManager

    执行以上配置后,云服务器即可通过 eth1 访问公网,但对私有网络及基础网络的访问会出现问题,因此还需要配置云服务器到私有网络和基础网络的路由。

  4. 配置到私有网络和基础网络的路由。

    1. /etc/network/interfaces 文件中添加如下配置,将云服务器对基础网络和私有网络的访问的下一跳设置成 eth0 所在网络的网关。

      auto eth0
      iface eth0 inet dhcp
        post-up ip route replace 192.168.0.0/16 via 192.168.2.1 dev eth0
        post-up ip route replace 10.0.0.0/8 via 192.168.2.1 dev eth0

      以上配置示例中:

      • “192.168.0.0/16” 为云服务器所属 VPC 网络的地址,请根据实际情况填写。

      • “10.0.0.0/8” 为平台基础网络的地址,请根据实际情况填写。

      • “192.168.2.1” 为云服务器 eth0 网关地址,请根据实际情况填写。

    2. ESC 退出编辑模式,执行 :wq 保存并退出文件。

    3. 执行以下命令,将配置应用到网卡 eth0。

      sudo ifdown eth0
      sudo ifup eth0

CentOS 系统

  1. 登录已分配 EIP 的云服务器,执行以下命令,可以看到云服务器内多出一块还未分配 IP 地址的公网网卡。

    ip a
    inbind eip nic centos

    如上图所示,云服务器中一共有两块网卡,其中 eth0 为主网卡,IP 地址为 “192.168.2.3”;eth1 则为步骤一中绑定的公网网卡。

  2. 配置 eth1 网卡的网络地址。

    假设步骤一中给云服务器分配的 EIP 地址为 “139.198.190.188”。

    1. 执行以下命令,打开 eth1 的网络配置文件。

      vi /etc/sysconfig/network-scripts/ifcfg-eth1
    2. 在配置文件中添加如下配置,将 EIP 分配给 eth1。

      DEVICE=eth1
      BOOTPROTO=static
      ONBOOT=yes
      IPADDR=139.198.190.188
      NETMASK=255.255.255.0
      GATEWAY=139.198.190.1
      DNS1=8.8.8.8
      DNS2=114.114.114.114

      以上配置示例中:

      • “139.198.190.188” 为云服务器 EIP 地址,请根据实际情况填写。

      • “139.198.190.1” 为 eth1 的网关地址,通常为该网段的第一个 IP 地址,请根据实际情况填写。

    3. ESC 退出编辑模式,执行 :wq 保存并退出文件。

    4. 执行以下命令,将配置应用到网卡 eth1。

      ifdown eth1
      ifup eth1
  3. 执行以下命令,配置 eth1 的网关做为默认路由。网关地址通常为该网段的第一个 IP 地址。

    route add default gw 139.198.190.1 dev eth1

    其中,“139.198.190.1” 为 eth1 的网关地址,请根据实际情况填写。

    执行以上配置后,云服务器即可通过 eth1 访问公网,但对私有网络及基础网络的访问会出现问题。因此还需要配置云服务器到私有网络及基础网络的路由。

  4. 执行如下命令,将云服务器对基础网络和私有网络的访问的下一跳设置成 eth0 所在网络的网关。

    route add -net 10.0.0.0/8 gw 192.168.2.1 dev eth0
    route add -net 192.168.0.0/16 gw 192.168.2.1 dev eth0

    以上配置示例中:

    • “10.0.0.0/8” 为平台基础网络的地址,请根据实际情况填写。

    • “192.168.0.0/16” 为云服务器所属 VPC 网络的地址,请根据实际情况填写。

    • “192.168.2.1” 为云服务器 eth0 的网关地址,请根据实际情况填写。

Windows 系统

下文以 Windows Server 2016 为例来说明网络配置的步骤。

  1. 登录已分配 EIP 的服务器,在桌面右下角点击网络图标,然后点击网络设置,打开以太网设置页面。可以看到有两张网卡,其中一张未连接的网络则是步骤一中绑定的公网网卡。

    inbind eip nic windows
  2. 配置公网网卡的 IP 地址。

    1. 以太网页面,点击更改适配器选项,进入网络连接页面。

    2. 点击选中未识别的公网网络,然后点击更改此连接的设置,弹出该连接的属性设置窗口。

      inbind win 1
    3. 网络页签,双击 Internet 协议版本 4(TCP/IPv4),弹出 Internet 协议版本 4(TCP/IPv4)属性窗口。

    4. 配置 IP 地址及子网掩码。无需配置网关地址,DNS 地址也可不填。

      以下为配置示例,“139.198.109.182” 为分配给云服务器的 EIP 地址,请根据实际情况填写。

      inbind win 2
    5. 配置完成后,点击确定进行保存。

  3. 配置路由。

    1. 打开 Windows 命令行终端,执行以下命令查看网卡的编号。

      route print -4
      inbind windows if

      如上图所示,第一行与第二行分别为私有网络的网络连接与公网的网络连接,每行的第一个数字为该网卡的编号。在本示例中,私有网络的网卡编号为 “4”,公网的网卡编号为 “6”。

    2. 执行以下命令,添加路由信息,将公网网卡的网关做为默认路由。

      route -p add 0.0.0.0 mask 0.0.0.0 139.198.109.1 metric 1 if 6

      以上示例中:

      • “139.198.109.1” 表示公网网关,请您根据实际情况填写。

      • if 指定的参数为公网网卡编号,本示例中为 “6”,请您根据实际情况填写。

    3. 执行以下命令,添加私有网络及基础网络的路由信息。

      route -p add 192.168.0.0 mask 255.255.0.0 192.168.0.1 metric 1 if 4
      route -p add 10.0.0.0 mask 255.0.0.0 192.168.0.1 metric 1 if 4

      以上示例中:

      • “10.0.0.0” 为平台基础网络的地址,请根据实际情况填写。

      • “192.168.0.0” 为云服务器所属 VPC 网络的地址,请根据实际情况填写。

      • “192.168.0.1” 为云服务器私有网络的网关地址,请根据实际情况填写。

      • if 指定的参数为私有网络的网卡编号,本示例中为 “4”,请您根据实际情况填写。

    4. 执行以下命令,修改私有网络默认路由的优先级,以保证对于公网的访问使用公网网卡的默认路由。

      route -p change 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 100 if 4

      以上示例中:

      • “192.168.0.1” 为云服务器私有网络的网关地址,请根据实际情况填写。

      • if 指定的参数为私有网络的网卡编号,本示例中为 “4”,请您根据实际情况填写。

    5. 配置完成后,执行以下命令,查看完整的路由信息。

      route print -4
      inbind windows route