dpvs dnat模式

发布时间 2023-10-01 17:02:19作者: 王景迁

dnat模式发送报文

src/ipvs/ip_vs_core.c
针对ipv4,INET_HOOK_PRE_ROUTING注册2个函数dp_vs_pre_routing和dp_vs_in,因为nat不做防止DDos攻击的syn_proxy,所以看dp_vs_in。

conn_sched新请求建立连接
选择后端rs建立连接,支持tcp、udp和icmp。
dp_vs_schedule->dp_vs_conn_new->dp_vs_conn_bind_dest
dpvs支持dnat、tunnel、dr、fullnat、snat。

src/ipvs/ip_vs_xmit.c
dp_vs_xmit_nat流量处理
route4_output查找路由,把路由赋给mbuf,dnat转换。

src/ipvs/ip_vs_proto_tcp.c
tcp_snat_in_handler转换目的端口,重新计算checksum。

dnat模式回包

src/ipvs/ip_vs_xmit.c
dp_vs_out_xmit_nat 源地址snat

src/ipvs/ip_vs_proto_tcp.c
tcp_snat_out_handler 源端口转换,重新计算checksum

参考资料

https://www.jianshu.com/p/9d8a96e21c59