开启弹性公网IP直通模式
使用场景
为边缘实例开启弹性公网IP直通模式后,您可以直接在边缘实例内查看到弹性公网IP地址。实际业务场景下,借助EIP直通模式,您可以将内网流量和外网流量分别转发到不同的IP地址。
约束与限制
- IEC当前仅支持为Linux边缘实例开启弹性公网IP直通模式,不支持为Windows边缘实例开启弹性公网IP直通模式。Linux支持CentOS 7.0及以上、Ubuntu 16.0及以上、EulerOS 2.2及以上版本。
- 被虚拟IP绑定的弹性公网IP暂不支持开启直通模式。
为边缘实例主网卡开启EIP直通模式
建议您首次完成为边缘实例主网卡开启EIP直通模式的操作后,将该边缘实例制作为私有镜像,方便用于后续直接创建其他开启EIP直通模式的边缘实例。
- 通过如下两种方式之一在IEC控制台为边缘实例主网卡开启EIP直通模式:
- 禁用边缘实例网卡的“源/目的检查”。
您可以通过边缘实例详情页面,选择“网卡”页签,并展开
,将“源/目的检查”选项设置为“OFF”。
- 远程登录任意一个和需要开启EIP直通模式的边缘实例(简称A)归属于同一个子网的其他边缘实例(简称B)。
以B为Linux操作系统为例,登录前提条件和方法请参见登录边缘实例。
- 下载配置脚本放置到B的任意路径,如/tmp。
表1 EIP直通模式配置脚本说明 操作系统
脚本名称
下载路径
CentOS
IEC_set_eip_centos.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
- 在B上执行以下命令,登录A。
ssh root@xxx.xxx.xxx.xxx
其中,xxx.xxx.xxx.xxx为A的私网IP地址。
- 在A上,执行以下命令,将配置脚本复制至A。
scp root@yyy.yyy.yyy.yyy:/tmp/脚本名称 /root
其中,yyy.yyy.yyy.yyy为B的私网IP地址,/tmp为B上配置脚本的存放路径,/root为A上配置脚本的存放路径(可以是任意路径)
- 执行以下命令,解压脚本文件。
cd /root;tar -xzvf 脚本名称
/root为配置脚本的存放路径。
- 执行以下命令,添加set_eip_auto.sh文件的执行权限。
cd IEC_set_eip;chmod +x set_eip_auto.sh
- 执行以下命令,运行配置脚本。
sh set_eip_auto.sh
脚本运行期间会导致实例网络短暂中断(大概1到2秒),请确认对其他业务的影响后,谨慎操作。
- 执行以下命令,验证主网卡连通性并使其持续产生报文,如图1。
ping xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx为目的端公网IP地址。
- 重新打开一个新的终端窗口,执行以下命令,抓包验证主网卡流量是否按照直通模式转发,如图2。
tcpdump -i eth0 -nne icmp
当源地址和目的地址均为公网IP地址时,表示流量按照直通模式转发。
- 执行reboot命令,重启边缘实例A;然后重新执行步骤10和步骤11,验证重启不会对配置的直通模式造成影响。
为边缘实例扩展网卡开启EIP直通模式
- 在IEC控制台通过为边缘实例绑定弹性公网IP时为扩展网卡开启直通模式。
- 禁用边缘实例网卡的“源/目的检查”。
您可以通过边缘实例详情页面,选择“网卡”页签,并展开
,将“源/目的检查”选项设置为“OFF”。
- 通过主网卡EIP远程登录需要开启EIP直通模式的边缘实例。
- 执行以下命令,在“/etc/iproute2/rt_tables”文件中为当前扩展网卡增加路由表优先级和名称(数值越小优先级越高),如下net1,net2对应eth1,eth2,如果有多张扩展网卡,依次添加。
vi /etc/iproute2/rt_tables
# added for dual net 250 net1 251 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,如果有多张网卡,在字段/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
- 执行以下命令,添加rc.local文件的执行权限。
# chmod +x /etc/rc.local
- 执行以下命令,重启边缘实例。
reboot
- 重启后,执行以下命令,确认配置的路由规则和路由表生效,如果有多张路由表,依次执行。
ip rule
ip route show table net1
ip route show table net2
- 执行以下命令,验证扩展网卡连通性并使其持续产生报文,如图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地址。
- 重新打开一个新的终端窗口,执行以下命令,抓包验证扩展网卡流量是否按照直通模式转发,如图4。
tcpdump -i eth1 -nne icmp
tcpdump -i eth2 -nne icmp
当源地址和目的地址均为公网IP地址时,表示流量按照直通模式转发。
- 执行reboot命令,重启边缘实例;然后重新执行步骤9和步骤10,验证重启不会对配置的直通模式造成影响。
相关操作
如需通过扩展网卡访问公网,可参考通过扩展网卡绑定的弹性公网IP访问公网。