AWS EC2实例路由不对称问题解决

文章讲述了在AWSEC2Ubuntu实例上添加新网络接口后出现的网络不对称问题,如何通过修改网络配置文件,特别是设置独立的路由表和路由策略,确保流量的对称性,以及使用`netplanapply`进行配置更新。
摘要由CSDN通过智能技术生成

AWS EC2实例路由不对称问题解决

摘要:

给AWS的EC2实例(Ubuntu)添加网络接口,会出现网络不对称的问题只能使用一个网卡通信(如果是Amazon linux就没有),附加新的网络接口后:

新增网卡

原网卡ens5:公网 16.163.127.36 内网192.168.141.95
新增网卡ens6:公网 43.199.38.70 内网 192.168.15.35

配置

  1. 启动网卡
    此时新增的ens6网卡应该是输入down的状态,可以通过ip a 查看

ip link set ens6 up

  1. 修改配置文件(错误方式)
  root@ip-192-168-141-95:/etc/netplan# cat 50-cloud-init.yaml 
  
network:
  version: 2
  ethernets:
    ens5:
      dhcp4: true
      dhcp6: false
      match:
        macaddress: 06:c3:2c:a6:96:3f
      set-name: ens5
    ens6:
      dhcp4: true
      dhcp6: false
      match:
        macaddress: 06:a6:87:67:71:81
      set-name: ens6
	

如果你是通过dchp配置的网卡,此时你ping 16.163.127.36 这个网卡ens5的时候 通过
tcpdump抓包可以发现 ens5网卡只能收到request请求

05:49:07.492364 IP 8.137.125.230 > ip-192-168-141-95.ap-east-1.compute.internal: ICMP echo request, id 24385, seq 229, length 64

而回复请求却是ens6网卡:

05:49:43.492381 IP ip-192-168-141-95.ap-east-1.compute.internal > 8.137.125.230: ICMP echo reply, id 24385, seq 265, length 64

这通常是系统的IP,路由规则配置不正确。这是多宿主系统中常见的问题,其中多个网络接口的路由没有正确隔离,导致了非对称路由问题。

非对称路由

默认路由配置:默认情况下,Linux会使用路由表中的第一个可用路由来发送响应。如果默认路由设置通过ens6,那么所有出站流量,包括ICMP回复,都将使用这条路由,无论请求是通过哪个接口进入的。

出站数据包的源IP:Linux基于路由表决定使用哪个源IP发送数据包,除非明确指定。如果通过ens6的路由具有更低的度量值或者在表中的位置更靠前,它可能会选择与ens6关联的IP作为所有出站数据包的源IP。

查看路由:

ip show route:
root@ip-192-168-141-95:/etc/netplan# ip route show
default via 192.168.0.1 dev ens6 proto dhcp src 192.168.15.35 metric 100 
default via 192.168.128.1 dev ens5 proto dhcp src 192.168.141.95 metric 100 

可以看到:这两个默认路由的度量(metric)值都是100,这意味着Linux内核在决定通过哪个接口发送流量时可能会随机选择,因为两个路由的优先级相同。(其实通过上面的抓包也可以发现其实偶尔也能ping通一下)

修改配置文件(正确方式):

network:
  version: 2
  renderer: networkd
  ethernets:
    ens5:
      dhcp4: no
      addresses: [192.168.141.95/20]
      routes:
       - to: default
         via: 192.168.128.1
         table: 100
      routing-policy:
        - from: 192.168.141.95
          table: 100

    ens6:
      dhcp4: no
      addresses: [192.168.15.35/20]
      routes:
       - to: default
         via: 192.168.0.1
         table: 101
      routing-policy:
        - from: 192.168.15.35
          table: 101

#重新应用
netplan apply

这将帮助确保针对每个网络接口的流量都是通过正确的路径,即通过它们各自的默认网关。这种配置确保了网络流量的对称性。

此时再去ping 两个IP就是正常的

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值