
# 开启弹性公网IP直通模式
#### 使用场景
为边缘实例开启弹性公网IP直通模式后，您可以直接在边缘实例内查看到弹性公网IP地址。实际业务场景下，借助EIP直通模式，您可以将内网流量和外网流量分别转发到不同的IP地址。
#### 约束与限制
- IEC当前仅支持为Linux边缘实例开启弹性公网IP直通模式，不支持为Windows边缘实例开启弹性公网IP直通模式。Linux支持CentOS 7.0及以上、Ubuntu 16.0及以上、EulerOS 2.2及以上版本。
- 被虚拟IP绑定的弹性公网IP暂不支持开启直通模式。
 
#### 为边缘实例主网卡开启EIP直通模式
建议您首次完成为边缘实例主网卡开启EIP直通模式的操作后，[将该边缘实例制作为私有镜像](https://support.huaweicloud.com/usermanual-iec/iec_02_0505.html)，方便用于后续直接创建其他开启EIP直通模式的边缘实例。
1. 通过如下两种方式之一在IEC控制台为边缘实例主网卡开启EIP直通模式： 
   - [在创建边缘业务过程中直接为边缘实例开启弹性公网IP直通模式](https://support.huaweicloud.com/usermanual-iec/iec_02_0302.html#iec_02_0302__section1598116100454)。
   
   - [通过为边缘实例绑定弹性公网IP时为主网卡开启直通模式](https://support.huaweicloud.com/usermanual-iec/iec_02_0611.html)。
   
   
   
   
2. 禁用边缘实例网卡的"源/目的检查"。 
   您可以通过边缘实例详情页面，选择"网卡"页签，并展开![](https://support.huaweicloud.com/usermanual-iec/zh-cn_image_0000001079546372.png)，将"源/目的检查"选项设置为"OFF"。
   
   
3. 远程登录任意一个和需要开启EIP直通模式的边缘实例（简称A）归属于同一个子网的其他边缘实例（简称B）。 
   以B为Linux操作系统为例，登录前提条件和方法请参见[登录边缘实例](https://support.huaweicloud.com/usermanual-iec/iec_02_0405.html)。
   
   
4. 下载[配置脚本]放置到B的任意路径，如/tmp。
   
    表1EIP直通模式配置脚本说明 
   | 操作系统   | 脚本名称                      | 下载路径                                                                                                                  |
   |:---|:---|:---|
   | CentOS | IEC_set_eip_centos.tar.gz | <https://iec-public.obs.cn-north-4.myhuaweicloud.com/eip_direct/CentOsAndEulerOs/IEC_set_eip_CentOsAndEulerOs.tar.gz> |
   | Ubuntu | IEC_set_eip_ubuntu.tar.gz | <https://iec-public.obs.cn-north-4.myhuaweicloud.com/eip_direct/ubuntu/IEC_set_eip_ubuntu.tar.gz>                     |
   | Euler  | IEC_set_eip_euler.tar.gz  | <https://iec-public.obs.cn-north-4.myhuaweicloud.com/eip_direct/CentOsAndEulerOs/IEC_set_eip_CentOsAndEulerOs.tar.gz> |
      
   
   
5. 在B上执行以下命令，登录A。 
   **ssh root@** *xxx.xxx.xxx.xxx*
   *其中，xxx.xxx.xxx.xxx*为A的私网IP地址。
   
   
6. 在A上，执行以下命令，将配置脚本复制至A。 
   **scp root@** *yyy.yyy.yyy.yyy* **:*/*** *tmp* **/** *脚本名称* ***/*** *root*
   其中，*yyy.yyy.yyy.yyy* 为B的私网IP地址，*/* *tmp* 为B上配置脚本的存放路径，***/*** *root*为A上配置脚本的存放路径（可以是任意路径）
   
   
7. 执行以下命令，解压脚本文件。 
   **cd /root** ;**tar -xzvf** *脚本名称*
   /root为配置脚本的存放路径。
   
   
8. 执行以下命令，添加set_eip_auto.sh文件的执行权限。 
   **cd** **IEC_set_eip;chmod +x set_eip_auto.sh**
   
   
9. 执行以下命令，运行配置脚本。 
   **sh set_eip_auto.sh**
   **脚本运行期间会导致实例网络短暂中断（大概1到2秒），请确认对其他业务的影响后，谨慎操作。**
   
   
10. 执行以下命令，验证主网卡连通性并使其持续产生报文，如[图1]。
    
    **ping** *xxx.xxx.xxx.xxx*
    *xxx.xxx.xxx.xxx*为目的端公网IP地址。
    图1验证主网卡连通性   
    ![](https://support.huaweicloud.com/usermanual-iec/zh-cn_image_0000001128719383.png "点击放大")
    
    
11. 重新打开一个新的终端窗口，执行以下命令，抓包验证主网卡流量是否按照直通模式转发，如[图2]。
    
    **tcpdump -i eth0 -nne icmp**
    当源地址和目的地址均为公网IP地址时，表示流量按照直通模式转发。
    图2抓包验证流量转发   
    ![](https://support.huaweicloud.com/usermanual-iec/zh-cn_image_0000002445668749.png "点击放大")
    
    
    
12. 执行**reboot** 命令，重启边缘实例A；然后重新执行[步骤10]和[步骤11]，验证重启不会对配置的直通模式造成影响。
    
    ![](https://support.huaweicloud.com/usermanual-iec/public_sys-resources/note_3.0-zh-cn.png)
    - 当为主网卡更换EIP时，需要重启实例后直通模式才生效。重启后再执行[步骤10]和[步骤11]进行重复验证。
    
    - 当不重启虚拟机，仅重启主网卡的场景下，需要在重启主网卡后，重新执行如下步骤，直通模式才生效。1. 执行**cd** **/root/IEC_set_eip;chmod +x set_eip.sh** 命令，添加set_eip.sh文件的执行权限。其中，/root/IEC_set_eip为A上配置脚本的存放路径。2. 执行**sh set_eip.sh** 命令，运行配置脚本。3. 执行[步骤10]和[步骤11]进行重复验证。
     
    
    
 
#### 为边缘实例扩展网卡开启EIP直通模式
1. 在IEC控制台[通过为边缘实例绑定弹性公网IP时为扩展网卡开启直通模式](https://support.huaweicloud.com/usermanual-iec/iec_02_0611.html)。
2. 禁用边缘实例网卡的"源/目的检查"。 
   您可以通过边缘实例详情页面，选择"网卡"页签，并展开![](https://support.huaweicloud.com/usermanual-iec/zh-cn_image_0000001080967418.png)，将"源/目的检查"选项设置为"OFF"。
   
   
3. 通过主网卡EIP远程登录需要开启EIP直通模式的边缘实例。
4. 执行以下命令，在"/etc/iproute2/rt_tables"文件中为当前扩展网卡增加路由表优先级和名称（数值越小优先级越高），如下net1，net2对应eth1，eth2，如果有多张扩展网卡，依次添加。
   
   **vi /etc/iproute2/rt_tables**
   ```
   # added for dual net 
   250     net1
   251     net2
   ```
   
   
5. 为扩展网卡增加路由信息。
   
   - 场景一：当主网卡已经配置EIP直通模式的情况下，执行以下命令，在"rc.local"文件中为每张扩展网卡增加路由信息。
   
   
   **vi /etc/rc.local**
   对于每张网卡，查找以下信息：
   以eth1为例，IPv4地址：192.168.0.129、子网网段：192.168.0.0/24、网关地址：192.168.0.1，EIP：*xxx.xxx.xxx.xxx* ，以及[步骤4]中添加的路由表：net1，如果有多张网卡，在字段/etc/rc.d/init.d/set_eip.sh这的下一行依次添加如下信息：
   ```
   # wait for nics up 
    sleep 5 
    /etc/rc.d/init.d/set_eip.sh
    sleep 1
    # Add v4 routes for eth1 
    ip route flush table net1 
    ip route add default via 192.168.0.1 dev eth1 src xxx.xxx.xxx.xxx table net1 
    ip rule add from xxx.xxx.xxx.xxx table net1  
    # Add v4 routes for eth2 
    ip route flush table net2 
    ip route add default via 192.168.1.1 dev eth2 src yyy.yyy.yyy.yyy table net2 
    ip rule add from yyy.yyy.yyy.yyy table net2
   ```
   - 场景二：当主网卡未配置EIP直通模式时，执行以下命令，在"rc.local"文件中为每张扩展网卡增加路由信息。
   
   
   **vi /etc/rc.local**
   对于每张网卡，查找以下信息：
   以eth1为例，IPv4地址：192.168.0.129、子网网段：192.168.0.0/24、网关地址：192.168.0.1，EIP：*xxx.xxx.xxx.xxx* ，以及[步骤4]中添加的路由表：net1，如果有多张网卡，依次添加如下信息：
   ```
   # wait for nics up 
    sleep 5 
    # Add eip for eth1
    ip address add xxx.xxx.xxx.xxx dev eth1
    # Add v4 routes for eth1 
    ip route flush table net1 
    ip route add default via 192.168.0.1 dev eth1 src xxx.xxx.xxx.xxx table net1 
    ip rule add from xxx.xxx.xxx.xxx table net1  
    # Add eip for eth2
    ip address add yyy.yyy.yyy.yyy dev eth2
    # Add v4 routes for eth2 
    ip route flush table net22 
    ip route add default via 192.168.1.1 dev eth2 src yyy.yyy.yyy.yyy table net2 
    ip rule add from yyy.yyy.yyy.yyy table net2
   ```
   
   
6. 执行以下命令，添加rc.local文件的执行权限。 
   **# chmod +x /etc/rc.local**
   
   
7. 执行以下命令，重启边缘实例。 
   **reboot**
   
   
8. 重启后，执行以下命令，确认配置的路由规则和路由表生效，如果有多张路由表，依次执行。 
   **ip rule**
   **ip route show table net1**
   **ip route show table net2**
   
   
9. 执行以下命令，验证扩展网卡连通性并使其持续产生报文，如[图3]。
   
   **ping -I** *xxx.xxx.xxx.xxx* *zzz* *.zzz.zzz.zzz*
   **ping -I** *yyy.yyy.yyy.yyy* *zzz* *.zzz.zzz.zzz*
   *xxx.xxx.xxx.xxx* 和*yyy.yyy.yyy.yyy* 为扩展网卡EIP，*zzz* *.zzz.zzz.zzz*为目的端公网IP地址。
   图3验证扩展网卡连通性   
   ![](https://support.huaweicloud.com/usermanual-iec/zh-cn_image_0000001082100984.png "点击放大")
   
   
10. 重新打开一个新的终端窗口，执行以下命令，抓包验证扩展网卡流量是否按照直通模式转发，如[图4]。
    
    **tcpdump -i eth1 -nne icmp**
    **tcpdump -i eth2 -nne icmp**
    图4抓包验证流量转发   
    ![](https://support.huaweicloud.com/usermanual-iec/zh-cn_image_0000001128957881.png "点击放大")
    当源地址和目的地址均为公网IP地址时，表示流量按照直通模式转发。
    
    
11. 执行**reboot** 命令，重启边缘实例；然后重新执行[步骤9]和[步骤10]，验证重启不会对配置的直通模式造成影响。
    
    ![](https://support.huaweicloud.com/usermanual-iec/public_sys-resources/note_3.0-zh-cn.png)
    - 当为扩展网卡更换EIP时，需要手动修改[步骤5]中"rc.local"文件中的EIP地址后直通模式才生效。重启后再执行[步骤9]和[步骤10]进行重复验证。
    
    - 当不重启虚拟机，仅重启扩展网卡的场景下，需要在重启扩展网卡后，重新按照[步骤5]的场景二中命令执行一遍，直通模式才生效。
     
    
    
 
#### 相关操作
如需通过扩展网卡访问公网，可参考[通过扩展网卡绑定的弹性公网IP访问公网](https://support.huaweicloud.com/usermanual-iec/iec_02_0905.html)。
