一、NAT原理
1. NAT 技术能够重写 IP 数据包的源 IP 或目的 IP,让网络中的多台主机,共享同一个公网 IP 地址来访问外网资源。
达到解决公网 IP 地址短缺问题的目的。
2. NAT 屏蔽了内网网络,也为局域网中机器起到安全隔离的作用。
3. NAT 基于内核的连接跟踪模块实现。所以,它维护每个连接状态的同时,也会带来很高的性能成本。
二、NAT性能
1. 从 conntrack 角度来分析,比如用 systemta,perf 等,分析内核中 conntrack 的行文。
2. 调整 netfilter 内核选项的参数,来进行优化。
三、其他
1. 内核在工作异常时,会把异常信息记录到日志中。执行 dmesg 命令,你就可以看到
2. 可以用 conntrack 命令行工具,来查看连接跟踪表的内容。
3. 再用 awk、sort 等工具,对其进行统计分析
# 统计总的连接跟踪数
$ conntrack -L -o extended | wc -l
14289
# 统计 TCP 协议各个状态的连接跟踪数
$ conntrack -L -o extended | awk '/^.*tcp.*$/ {sum[$6]++} END {for(i in sum) print i, sum[i]}'
SYN_RECV 4
CLOSE_WAIT 9
ESTABLISHED 2877
FIN_WAIT 3
SYN_SENT 2113
TIME_WAIT 9283
# 统计各个源 IP 的连接跟踪数
$ conntrack -L -o extended | awk '{print $7}' | cut -d "=" -f 2 | sort | uniq -c | sort -nr | head -n 10
14116 192.168.0.2
172 192.168.0.96