DPVS-FullNAT模式管理篇

本文主要介绍基于CentOS7.9系统进行DPVS部署的FullNAT模式的各种部署方法和配置管理,包括IPv4-IPv4、bonding、IPv6-IPv6、IPv6-IPv4(NAT64)和keepalive模式五种方案。
配置完全基于双臂模式,并且RS机器上已经安装了相应的DPVS模块。
首先介绍单网卡的简单IPv4配置,然后进行trunk配置,然后进行简单的IPv6配置、NAT64配置,并使用keepalived配置主备模式。
DPVS版本是1.8-10,dpdk版本是18.11.2。
详细的安装过程已在DPVS-FullNAT模式下部署-TinyChen工作室中介绍过,本文不再详细介绍。
简单的IPv4配置:使用ipvsadm命令行操作实现全NAT模式。
架构图显示dpdk2网卡作为wan口,dpdk0网卡作为lan口。
配置过程包括启动nginx设置以返回IP地址和端口号,以及使用ping和curl命令进行测试。
配置完成后,快速检查DPVS是否可以正常工作,但由于是单点,所以很少使用。
Bonding配置:DPVS支持bonding4和bonding0的配置。
配置方法请参见dpvs/conf/dpvs.conf.single-bond.sample文件。
配置bond模式时,不需要指定从网卡的kni_name参数。
相反,请指定中继NIC的kni_name和主NIC的MAC地址。
配置成功后,使用生成的中继网卡,使用dpip命令查看工作状态。
IPv6简单配置:IPv6配置与IPv4类似,只需将IPv4地址替换为IPv6地址即可,注意IPv6地址在指定端口时使用[]包。
测试效果,确认nginx可以正常返回客户端的真实IP地址和端口。
NAT64配置:架构图与前两种配置类似,只是IP地址不同。
测试结果显示,安装TOA模块后,无法获取客户端的源IP地址,所有客户端IP地址和端口都将变成LIP传输的IP地址和端口。
如果需要源IP地址,则需要修改RS上的客户端程序。
以nginx为例,dpvs提供了nat64toa模块,需要在nginx源码编译安装之前打补丁。
编译安装完成后,通过日志添加变量即可获取NAT64模式下客户端的真实IP地址。
Keepalived配置:使用keepalived配置有两个主要优点。
修改为双臂模式网络拓扑,支持IPv4-IPv4、IPv6-IPv6和NAT64(IPv6-IPv4)模式。
配置kni网卡,与普通网卡配置相同。
将配置文件中的DEVICE替换为kni网卡。
设置keepalived需要在正常的Linux网络栈中具备能够正常网络通信的kni网卡,通过keepalived程序控制VIP的主备切换。
配置路由时分为VIP网段、RS/LIP网段、路由按默认。
最后,使用systemctl来管理keepalived,写入单元文件,配置日志输出到指定文件,并重启相关服务。
总结:上述配置中,keepalived主备模式适用于生产环境。
NAT64模式和IPv6-IPv6模式的选择取决于具体的RS条件和运维管理工具。
使用NAT64模式时,必须设置XFF标头。
实际部署时,还应考虑交换机支持ECMP多主模式,但条件有限,尚未测试。

什么是ECMP?ECMP的实现原理是什么??麻烦告诉我

Equal-CostMultiPath:在Linux内核性能问题中被称为equalcostmultipath(CONFIG_IP_ROUTE_MULTIPATH),如果目标IP不在临时存储空间中,他会检查路由表以确定到该IP地址的路由,并将该路由放入一般来说,核心中的路由功能只能用于某个特定的封装决定唯一的方向如果使用ECMP并且可以选择针对某个特定有多个不同的方向数据包模式,可以让满足路由条件的数据包以“同等”成本选择经过哪条路径。
或自定义路由。