无法在 AWS EC2 上的 eth1(附加网络接口)CentOS 7 上访问服务器

VPZ*_*VPZ 4 networking centos amazon-ec2 amazon-web-services centos7

我在EC2上创建了一个CentOS 7实例,安装了所需的应用程序,为默认网络接口 ( eth0 ) 分配了 1 个弹性 IP,并且所有这些都可以访问。

现在,我创建了另一个网络接口,为其分配了弹性 IP ,然后将ENI附加到实例。现在,无法在eth1(新的附加网络接口)上访问该实例。

我尝试过在 google 上找到的各种方法在/etc/sysconfig/network-scripts中创建ifcfg-eth1但没有运气。

如需帮助,这是ifconfig -a的输出(IP 屏蔽):

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 1XX.3XX.2XX.4XX  netmask 255.255.240.0  broadcast 1XX.3XX.2XX.4XX
        inet6 fe80::2e:a1ff:fe01:c763  prefixlen 64  scopeid 0x20<link>
        ether 02:2e:a1:01:c7:63  txqueuelen 1000  (Ethernet)
        RX packets 219  bytes 28188 (27.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 284  bytes 31055 (30.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 02:78:73:34:66:35  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 23  bytes 4968 (4.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 23  bytes 4968 (4.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Run Code Online (Sandbox Code Playgroud)

这是来自ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP qlen 1000
    link/ether 02:2e:a1:01:c7:63 brd ff:ff:ff:ff:ff:ff
    inet 1XX.3XX.2XX.4XX/20 brd 1XX.3XX.2XX.4XX scope global dynamic eth0
       valid_lft 3404sec preferred_lft 3404sec
    inet6 fe80::2e:a1ff:fe01:c763/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 02:78:73:34:66:35 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)

我的/etc/sysconfig/network-scripts/ifcfg-eth0文件包含以下内容:

DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
IPV6INIT="no"
PERSISTENT_DHCLIENT="1"
Run Code Online (Sandbox Code Playgroud)

VPZ*_*VPZ 6

最后,除了https://www.internetstaff.com/multiple-ec2-network-interfaces-on-red-hat-c ​​entos-7/ 上的这个人之外,没有人帮助我。

为了在链接将来失效时保留信息,以下是该帖子的丰富内容:

  1. 强制您的默认网关为eth0

    编辑/etc/sysconfig/network并添加:

    GATEWAYDEV=eth0
    
    Run Code Online (Sandbox Code Playgroud)

    如果不这样做,主路由表的默认网关就会设置为最后一个要配置的接口,这会导致一些奇怪的行为。

  2. 配置您添加的每个附加接口:

    /etc/sysconfig/network-scripts中,为每个新接口创建一个ifcfg-eth X。

    调整:

    1. 与ENI匹配的设备名称

      DEVICE="eth1"
      BOOTPROTO="dhcp"
      ONBOOT="yes"
      TYPE="Ethernet"
      USERCTL="yes"
      PEERDNS="yes"
      IPV6INIT="no"
      PERSISTENT_DHCLIENT="1"
      
      Run Code Online (Sandbox Code Playgroud)
  3. 为每个附加接口添加自定义路由。

    再次在/etc/sysconfig/network-scripts中,为每个接口创建一个route-eth X文件。

    调整:

    1. 设备名称。
    2. 增加表号。
    3. 您的 VPC 子网网关的网关。
    4. 将源IP修改为弹性网卡分配的内网地址。

      default via 10.0.0.1 dev eth0 table 1
      10.0.0.0/24 dev eth0 src 10.0.0.10 table 1
      
      Run Code Online (Sandbox Code Playgroud)
  4. 另外,在/etc/sysconfig/network-scripts中,为每个接口创建一个rule-eth X。

    调整:

    1. 增加表号以匹配route-eth X。
    2. 将IP修改为弹性网卡分配的内网地址。

      from 10.0.0.10/32 table 1
      
      Run Code Online (Sandbox Code Playgroud)

重新启动网络服务,您应该可以启动并运行。您可以通过ip 规则确认:

# ip rule
0:  from all lookup local 
32764:  from 10.0.0.10 lookup 3 
32765:  from 10.0.0.11 lookup 2 
32766:  from all lookup main 
32767:  from all lookup default 
Run Code Online (Sandbox Code Playgroud)

请注意,亚马逊建议为eth0使用自定义路由和规则,但我们发现允许eth0使用默认主路由表不仅有效,而且更灵活。