使用 Azure PowerShell 将多个 IP 地址分配到虚拟机

在一个 Azure 虚拟机 (VM) 上可以附加一个或多个网络接口 (NIC)。 可为任何 NIC 分配一个或多个静态或动态的公共与专用 IP 地址。

为 VM 分配多个 IP 地址可实现以下功能:

  • 在一台服务器上托管具有不同 IP 地址和 TLS/SSL 证书的多个网站或服务。

  • 用作网络虚拟设备,例如防火墙或负载均衡器。

  • 可将任何 NIC 的任何专用 IP 地址添加到 Azure 负载均衡器后端池。 以往,只能将主要 NIC 的主要 IP 地址添加到后端池。 有关负载均衡多个 IP 配置的详细信息,请参阅负载均衡多个 IP 配置

附加到 VM 的每个 NIC 都具有一个或多个关联的 IP 配置。 每个配置分配有一个静态或动态专用 IP 地址。 每个配置还可以具有一个关联的公共 IP 地址资源。 若要详细了解 Azure 中的 IP 地址,请阅读 Azure 中的 IP 地址一文。

注意

单个 NIC 上的所有 IP 配置都必须关联到同一子网。 如果需要不同子网上的多个 IP,可以使用 VM 上的多个 NIC。 若要详细了解 Azure 中 VM 上的多个 NIC,请阅读创建具有多个 NIC 的 VM 一文。

分配给 NIC 的专用 IP 地址数目存在限制。 能够在 Azure 订阅中使用的公共 IP 地址数也存在限制。 有关详细信息,请参阅 Azure 限制一文。

本文介绍如何使用 Azure 门户将多个 IP 地址添加到虚拟机。

先决条件

  • 具有活动订阅的 Azure 帐户。 创建试用帐户

  • 在本地安装了 Azure PowerShell。

  • 登录到 Azure PowerShell,并确保已选择要使用此功能的订阅。 有关详细信息,请参阅使用 Azure PowerShell 登录

  • 确保 Az. Network 模块为 4.3.0 或更高版本。 要验证已安装的模块,使用命令 Get-InstalledModule -Name "Az.Network"。 如果模块需要更新,请使用命令 Update-Module -Name "Az. Network"(如有必要)。

如果选择在本地安装并使用 PowerShell,则本文需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行 Get-Module -ListAvailable Az 查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

注意

尽管本文是将所有 IP 配置分配到单个 NIC,但也可以将多个 IP 配置分配到具有多个 NIC 的 VM 中的任意 NIC。 若要了解如何创建具有多个 NIC 的 VM,请参阅创建具有多个 NIC 的 VM

操作说明文章中创建的网络配置资源示意图。

图:操作说明文章中创建的网络配置资源示意图。

创建资源组

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

使用 New-AzResourceGroup 在 chinanorth3 位置创建名为“myResourceGroup”的资源组。

$rg =@{
    Name = 'myResourceGroup'
    Location = 'chinanorth3'
}
New-AzResourceGroup @rg

创建虚拟网络

在本部分中,你将为虚拟机创建一个虚拟网络。

使用 New-AzVirtualNetworkNew-AzVirtualNetworkSubnetConfig 创建虚拟网络。

## Create backend subnet config ##
$subnet = @{
    Name = 'myBackendSubnet'
    AddressPrefix = '10.1.0.0/24'
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 

## Create the virtual network ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'myResourceGroup'
    Location = 'chinanorth3'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig
}
New-AzVirtualNetwork @net

创建主公共 IP 地址

使用 New-AzPublicIpAddress 创建主公共 IP 地址。

$ip1 = @{
    Name = 'myPublicIP-1'
    ResourceGroupName = 'myResourceGroup'
    Location = 'chinanorth3'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    IpAddressVersion = 'IPv4'
    Zone = 1,2,3
}
New-AzPublicIpAddress @ip1

创建网络安全组

在本部分中,你将为虚拟机和虚拟网络创建网络安全组。 你将创建一个规则,以允许连接到适用于 SSH 的端口 22 上的虚拟机。

使用 New-AzNetworkSecurityGroupNew-AzNetworkSecurityRuleConfig 创建网络安全组和规则。

## Create rule for network security group and place in variable. ##
$nsgrule1 = @{
    Name = 'myNSGRuleSSH'
    Description = 'Allow SSH'
    Protocol = '*'
    SourcePortRange = '*'
    DestinationPortRange = '22'
    SourceAddressPrefix = 'Internet'
    DestinationAddressPrefix = '*'
    Access = 'Allow'
    Priority = '200'
    Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule1

## Create network security group ##
$nsg = @{
    Name = 'myNSG'
    ResourceGroupName = 'myResourceGroup'
    Location = 'chinanorth3'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

创建网络接口

将使用 New-AzNetworkInterfaceNew-AzNetworkInterfaceIpConfig 创建虚拟机的网络接口。 先前创建的公共 IP 地址和 NSG 与 NIC 关联。 网络接口已连接到之前创建的虚拟网络。

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net

## Place the network security group into a variable. ##
$ns = @{
    Name = 'myNSG'
    ResourceGroupName = 'myResourceGroup'
}
$nsg = Get-AzNetworkSecurityGroup @ns

## Place the primary public IP address into a variable. ##
$pub1 = @{
    Name = 'myPublicIP-1'
    ResourceGroupName = 'myResourceGroup'
}
$pubIP1 = Get-AzPublicIPAddress @pub1

## Create primary configuration for NIC. ##
$IP1 = @{
    Name = 'ipconfig1'
    Subnet = $vnet.Subnets[0]
    PrivateIpAddressVersion = 'IPv4'
    PublicIPAddress = $pubIP1
}
$IP1Config = New-AzNetworkInterfaceIpConfig @IP1 -Primary

## Create tertiary configuration for NIC. ##
$IP3 = @{
    Name = 'ipconfig3'
    Subnet = $vnet.Subnets[0]
    PrivateIpAddressVersion = 'IPv4'
    PrivateIpAddress = '10.1.0.6'
}
$IP3Config = New-AzNetworkInterfaceIpConfig @IP3

## Command to create network interface for VM ##
$nic = @{
    Name = 'myNIC1'
    ResourceGroupName = 'myResourceGroup'
    Location = 'chinanorth3'
    NetworkSecurityGroup = $nsg
    IpConfiguration = $IP1Config,$IP3Config
}
New-AzNetworkInterface @nic

注意

在添加静态 IP 地址时,必须在 NIC 连接到的子网中指定未使用的有效地址。

创建虚拟机

使用以下命令创建虚拟机:

$cred = Get-Credential

## Place network interface into a variable. ##
$nic = @{
    Name = 'myNIC1'
    ResourceGroupName = 'myResourceGroup'
}
$nicVM = Get-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = 'myVM'
    VMSize = 'Standard_DS1_v2'  
}
$vmos = @{
    ComputerName = 'myVM'
    Credential = $cred
}
$vmimage = @{
    PublisherName = 'Debian'
    Offer = 'debian-11'
    Skus = '11'
    Version = 'latest'    
}
$vmConfig = New-AzVMConfig @vmsz `
      | Set-AzVMOperatingSystem @vmos -Linux `
      | Set-AzVMSourceImage @vmimage `
      | Add-AzVMNetworkInterface -Id $nicVM.Id

## Create the virtual machine for VMs ##
$vm = @{
    ResourceGroupName = 'myResourceGroup'
    Location = 'chinanorth3'
    VM = $vmConfig
    SshKeyName = 'mySSHKey'
    }
New-AzVM @vm -GenerateSshKey

添加辅助专用和公共 IP 地址

使用 New-AzPublicIpAddress 创建辅助公共 IP 地址。

$ip2 = @{
    Name = 'myPublicIP-2'
    ResourceGroupName = 'myResourceGroup'
    Location = 'chinanorth3'
    Sku = 'Standard'
    AllocationMethod = 'Static'
    IpAddressVersion = 'IPv4'
    Zone = 1,2,3
}
New-AzPublicIpAddress @ip2

使用 New-AzNetworkInterfaceIpConfig 为虚拟机创建辅助 IP 配置。

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net

## Place your virtual network subnet into a variable. ##
$sub = @{
    Name = 'myBackendSubnet'
    VirtualNetwork = $vnet
}
$subnet = Get-AzVirtualNetworkSubnetConfig @sub

## Place the secondary public IP address you created previously into a variable. ##
$pip = @{
    Name = 'myPublicIP-2'
    ResourceGroupName = 'myResourceGroup'
}
$pubIP2 = Get-AzPublicIPAddress @pip

## Place the network interface into a variable. ##
$net = @{
    Name = 'myNIC1'
    ResourceGroupName = 'myResourceGroup'
}
$nic = Get-AzNetworkInterface @net

## Create secondary configuration for NIC. ##
$IPc2 = @{
    Name = 'ipconfig2'
    Subnet = $vnet.Subnets[0]
    PrivateIpAddressVersion = 'IPv4'
    PrivateIpAddress = '10.1.0.5'
    PublicIPAddress = $pubIP2
}
$IP2Config = New-AzNetworkInterfaceIpConfig @IPc2

## Add the IP configuration to the network interface. ##
$nic.IpConfigurations.Add($IP2Config)

## Save the configuration to the network interface. ##
$nic | Set-AzNetworkInterface

将 IP 地址添加到 VM 操作系统

连接并登录到使用多个专用 IP 地址创建的 VM。 必须手动添加 VM 中的所有专用 IP 地址,包括主要地址。 根据 VM 操作系统完成以下步骤。

Windows Server

展开
  1. 打开命令提示符或 PowerShell。

  2. 在命令行上输入 ipconfig /all。 你将看到通过 DHCP 分配的主要专用 IP 地址。

  3. 在命令行中输入 ncpa.cpl 以打开“网络连接”配置。

  4. 打开分配了新 IP 地址的网络适配器的“属性”。

  5. 双击“Internet 协议版本 4 (TCP/IPv4)”

  6. 选择“使用下面的 IP 地址:”。 输入以下值。

    设置 Value
    IP 地址: 输入“主要”专用 IP 地址。
    子网掩码: 根据 IP 地址输入子网掩码。
    例如,如果子网为 /24 子网,则子网掩码为 255.255.255.0。
    默认网关: 子网中的第一个 IP 地址。
    如果子网为 10.0.0.0/24,则网关 IP 地址为 10.0.0.1。
  7. 选择“使用下面的 DNS 服务器地址:”。 输入以下值。

    设置 Value
    首选 DNS 服务器: 输入主 DNS 服务器。
    输入 IP 地址 168.63.129.16,以使用 Azure 提供的默认 DNS。
  8. 选择“高级”按钮。

  9. 选择 添加

  10. 输入添加到 Azure 网络接口的专用 IP 地址。 输入相应的“子网掩码”。 选择 添加

  11. 重复上述步骤,添加已添加到 Azure 网络接口的任何其他专用 IP 地址。

重要

切勿在虚拟机的操作系统中手动分配已分配给 Azure 虚拟机的公共 IP 地址。 在操作系统中手动设置该 IP 地址时,请确保它与分配给 Azure 网络接口的专用 IP 地址是同一地址。 未能正确分配地址可能会导致与虚拟机的连接丢失。 有关详细信息,请参阅更改 IP 地址设置

有关专用 IP 地址的详细信息,请参阅专用 IP 地址

  1. 选择“确定”以关闭辅助 IP 地址设置。

  2. 选择“确定”以关闭适配器设置。 将重新建立 RDP 连接。

  3. 打开命令提示符或 PowerShell。

  4. 在命令行上输入 ipconfig /all

  5. 验证是否已将主要和辅助专用 IP 地址添加到配置中。

    PS C:\Users\azureuser> ipconfig /all
    
    Windows IP Configuration
    
       Host Name . . . . . . . . . . . . : myVM
       Primary Dns Suffix  . . . . . . . :
       Node Type . . . . . . . . . . . . : Hybrid
       IP Routing Enabled. . . . . . . . : No
       WINS Proxy Enabled. . . . . . . . : No
    
    Ethernet adapter Ethernet:
    
       Connection-specific DNS Suffix  . :
       Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
       Physical Address. . . . . . . . . : 00-0D-3A-E6-CE-A3
       DHCP Enabled. . . . . . . . . . . : No
       Autoconfiguration Enabled . . . . : Yes
       Link-local IPv6 Address . . . . . : fe80::a8d1:11d5:3ab2:6a51%5(Preferred)
       IPv4 Address. . . . . . . . . . . : 10.1.0.4(Preferred)
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       IPv4 Address. . . . . . . . . . . : 10.1.0.5(Preferred)
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       IPv4 Address. . . . . . . . . . . : 10.1.0.6(Preferred)
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 10.1.0.1
       DHCPv6 IAID . . . . . . . . . . . : 100666682
       DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-2A-A8-26-B1-00-0D-3A-E6-CE-A3
       DNS Servers . . . . . . . . . . . : 168.63.129.16
       NetBIOS over Tcpip. . . . . . . . : Enabled
    
  6. 确保 Windows 中使用的主专用 IP 地址与 Azure VM 网络接口的主 IP 地址相同。 有关详细信息,请参阅无法通过具有多个 IP 地址的 Azure Windows VM 访问 Internet

验证 (Windows Server)

若要验证通过公共 IP 从辅助 IP 配置到 internet 的连接,请使用以下命令。 将 10.1.0.5 替换为添加到 Azure VM 网络接口的辅助专用 IP 地址。

ping -S 10.1.0.5 outlook.com

注意

对于辅助 IP 配置,如果配置存在关联的公共 IP 地址,则可以 ping Internet。 对于主 IP 配置,不需公共 IP 地址也可 ping Internet。

Linux (Ubuntu 14/16)

展开

我们建议你查看 Linux 分发版的最新文档。

  1. 打开终端窗口。

  2. 请确保以根用户身份操作。 否则,请输入以下命令:

    sudo -i
    
  3. 更新网络接口(假设为“eth0”)的配置文件。

    • 保留 dhcp 的现有行项。 主要 IP 地址将保留以前的配置。

    • 使用以下命令添加其他静态 IP 地址的配置:

      cd /etc/network/interfaces.d/
      ls
      

      应会看到一个 .cfg 文件。

  4. 打开 文件。 该文件的末尾应会显示以下命令行:

    auto eth0
    iface eth0 inet dhcp
    
  5. 在此文件包含的命令行后面添加以下命令行。 将 10.1.0.5 替换为专用 IP 地址和子网掩码。

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    

    若要添加其他专用 IP 地址,请编辑该文件,并在后续行中添加新的专用 IP 地址:

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    iface eth0 inet static
    address 10.1.0.6
    netmask 255.255.255.0
    
  6. 使用以下命令保存该文件:

    :wq
    
  7. 使用以下命令重置网络接口:

    ifdown eth0 && ifup eth0
    

    重要

    如果使用远程连接,请在同一行中同时执行 ifdown 和 ifup。

  8. 使用以下命令验证 IP 地址是否已添加到网络接口:

    ip addr list eth0
    

    应会在列表中看到添加的 IP 地址。 示例:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe04:4516/64 scope link
       valid_lft forever preferred_lft forever
    

验证 (Ubuntu 14/16)

若要确保能够从辅助 IP 配置通过与之关联的公共 IP 连接到 Internet,请使用以下命令:

ping -I 10.1.0.5 outlook.com

注意

对于辅助 IP 配置,仅当该配置存在关联的公共 IP 地址的情况下,才能 ping Internet。 对于主 IP 配置,不需公共 IP 地址也可 ping Internet。

对于 Linux VM,在尝试验证来自辅助 NIC 的出站连接时,可能需要添加适当的路由。 请参阅针对 Linux 分发的相应文档。 下面是实现此目的的一种方法:

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 请务必将:

    • 10.1.0.5 替换为专用 IP 地址,该地址有一个与之关联的公共 IP 地址

    • 10.1.0.1 替换为默认网关

    • eth2 替换为辅助 NIC 的名称

Linux (Ubuntu 18.04+)

展开

Ubuntu 18.04 及更高版本已更改为用于 OS 网络管理的 netplan。 我们建议你查看 Linux 分发版的最新文档。

  1. 打开终端窗口。

  2. 请确保以根用户身份操作。 否则,请输入以下命令:

    sudo -i
    
  3. 为第二个接口创建一个文件,并在文本编辑器打开该文件:

    vi /etc/netplan/60-static.yaml
    
  4. 将以下行添加到文件中,并将 10.1.0.5/24 替换为 IP 和子网掩码:

    network:
        version: 2
        ethernets:
            eth0:
                addresses:
                    - 10.1.0.5/24
    

    若要添加其他专用 IP 地址,请编辑该文件,并在后续行中添加新的专用 IP 地址:

    network:
        version: 2
        ethernets:
            eth0:
                addresses:
                    - 10.1.0.5/24
                    - 10.1.0.6/24
    
  5. 使用以下命令保存该文件:

    :wq
    
  6. 使用 netplan try 测试更改以确认语法:

    netplan try
    

    注意

    netplan try 将暂时应用更改,并在 120 秒后回退更改。 如果连接中断,请等待 120 秒,然后重新连接。 此时更改已回退。

  7. 假设 netplan try 没有问题,请应用配置更改:

    netplan apply
    
  8. 使用以下命令验证 IP 地址是否已添加到网络接口:

    ip addr list eth0
    

    应会在列表中看到添加的 IP 地址。 示例:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe04:4516/64 scope link
       valid_lft forever preferred_lft forever
    

验证 (Ubuntu 18.04+)

若要确保能够从辅助 IP 配置通过与之关联的公共 IP 连接到 Internet,请使用以下命令:

ping -I 10.1.0.5 outlook.com

注意

对于辅助 IP 配置,仅当该配置存在关联的公共 IP 地址的情况下,才能 ping Internet。 对于主 IP 配置,不需公共 IP 地址也可 ping Internet。

对于 Linux VM,在尝试验证来自辅助 NIC 的出站连接时,可能需要添加适当的路由。 可通过多种方式来执行此操作。 请参阅针对 Linux 分发的相应文档。 下面是实现此目的的一种方法:

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 请确保将:

    • 10.1.0.5 替换为专用 IP 地址,该地址有一个与之关联的公共 IP 地址

    • 10.1.0.1 替换为默认网关

    • eth2 替换为辅助 NIC 的名称

Linux(Red Hat、CentOS 和其他操作系统)

展开
  1. 打开终端窗口。

  2. 请确保以根用户身份操作。 否则,请输入以下命令:

    sudo -i
    
  3. 输入密码,根据提示的说明操作。 成为 root 用户后,使用以下命令转到网络脚本文件夹:

    cd /etc/sysconfig/network-scripts
    
  4. 使用以下命令列出相关的 ifcfg 文件:

    ls ifcfg-*
    

    应会看到其中一个文件是 ifcfg-eth0

  5. 若要添加 IP 地址,请为其创建配置文件,如下所示。 请注意,必须为每个 IP 配置创建一个文件。

    touch ifcfg-eth0:0
    
  6. 使用以下命令打开 ifcfg-eth0:0 文件:

    vi ifcfg-eth0:0
    
  7. 使用以下命令将内容添加到该文件(此示例中为 eth0:0)。 将 10.1.0.5 替换为其他专用 IP 地址和子网掩码。

    DEVICE=eth0:0
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=10.1.0.5
    NETMASK=255.255.255.0
    
  8. 使用以下命令保存该文件:

    :wq
    
  9. 若要将其他专用 IP 地址添加到网络配置,请创建其他配置文件,并将 IP 信息添加到文件中。

    touch ifcfg-eth0:1
    
    vi ifcfg-eth0:1
    
    DEVICE=eth0:1
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=10.1.0.6
    NETMASK=255.255.255.0
    
    :wq
    
  10. 运行以下命令重新启动网络服务,确保更改成功:

    systemctl restart NetworkManager.service
    ifconfig
    

    应会在返回的列表中看到添加的 IP 地址。

    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.4  netmask 255.255.255.0  broadcast 10.1.0.255
        inet6 fe80::6245:bdff:fe7d:704a  prefixlen 64  scopeid 0x20<link>
        ether 60:45:bd:7d:70:4a  txqueuelen 1000  (Ethernet)
        RX packets 858  bytes 244215 (238.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1021  bytes 262077 (255.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.5  netmask 255.255.255.0  broadcast 10.1.0.255
        ether 60:45:bd:7d:70:4a  txqueuelen 1000  (Ethernet)
    
    eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.0.6  netmask 255.255.255.0  broadcast 10.1.0.255
        ether 60:45:bd:7d:70:4a  txqueuelen 1000  (Ethernet)
    

验证(Red Hat、CentOS 和其他操作系统)

若要确保能够从辅助 IP 配置通过与之关联的公共 IP 连接到 Internet,请使用以下命令:

ping -I 10.0.0.5 outlook.com

注意

对于辅助 IP 配置,仅当该配置存在关联的公共 IP 地址的情况下,才能 ping Internet。 对于主 IP 配置,不需公共 IP 地址也可 ping Internet。

对于 Linux VM,在尝试验证来自辅助 NIC 的出站连接时,可能需要添加适当的路由。 请参阅针对 Linux 分发的相应文档。 下面是实现此目的的一种方法:

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 请务必将:

    • 10.0.0.5 替换为专用 IP 地址,该地址有一个与之关联的公共 IP 地址。

    • 10.0.0.1 替换为默认网关

    • eth2 替换为辅助 NIC 的名称

Debian GNU/Linux

展开

我们建议你查看 Linux 分发版的最新文档。

  1. 打开终端窗口。

  2. 请确保以根用户身份操作。 否则,请输入以下命令:

    sudo -i
    
  3. 更新网络接口(假设为“eth0”)的配置文件。

    • 保留 dhcp 的现有行项。 主要 IP 地址将保留以前的配置。

    • 使用以下命令添加其他静态 IP 地址的配置:

      cd /etc/network/interfaces.d/
      ls
      

      应会看到一个 .cfg 文件。

  4. 打开 文件。 该文件的末尾应会显示以下命令行:

    auto eth0
    iface eth0 inet dhcp
    
  5. 在此文件包含的命令行后面添加以下命令行。 将 10.1.0.5 替换为专用 IP 地址和子网掩码。

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    

    若要添加其他专用 IP 地址,请编辑该文件,并在后续行中添加新的专用 IP 地址:

    iface eth0 inet static
    address 10.1.0.5
    netmask 255.255.255.0
    iface eth0 inet static
    address 10.1.0.6
    netmask 255.255.255.0
    
  6. 使用以下命令保存该文件:

    :wq
    
  7. 重启网络服务以使更改生效。 对于 Debian 8 及更高版本,可以使用以下命令完成此操作:

    systemctl restart networking
    

    对于早期版本的 Debian,可以使用以下命令:

    service networking restart
    
  8. 使用以下命令验证 IP 地址是否已添加到网络接口:

    ip addr list eth0
    

    应会在列表中看到添加的 IP 地址。 示例:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20d:3aff:fe04:4516/64 scope link
       valid_lft forever preferred_lft forever
    

验证 (Debian GNU/Linux)

若要确保能够从辅助 IP 配置通过与之关联的公共 IP 连接到 Internet,请使用以下命令:

ping -I 10.1.0.5 outlook.com

注意

对于辅助 IP 配置,仅当该配置存在关联的公共 IP 地址的情况下,才能 ping Internet。 对于主 IP 配置,不需公共 IP 地址也可 ping Internet。

对于 Linux VM,在尝试验证来自辅助 NIC 的出站连接时,可能需要添加适当的路由。 请参阅针对 Linux 分发的相应文档。 下面是实现此目的的一种方法:

echo 150 custom >> /etc/iproute2/rt_tables 

ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
  • 请务必将:

    • 10.1.0.5 替换为专用 IP 地址,该地址有一个与之关联的公共 IP 地址

    • 10.1.0.1 替换为默认网关

    • eth2 替换为辅助 NIC 的名称