One minute
Conn_close
preface
最近讨论解决服务状态不正确的问题, 涉及到一个连接关闭的手段, 但是网上说法很多, 很难有一篇完整的手段描述, 特别记忆
实现
首先, 我们使用nc模拟网络的收发. 启动server:
nc -l -p 4444
启动client:
nc localhost 4444 -p 5555
使用tcpdump 查看效果:
sudo tcpdump port 4444 -i lo -xnn -S
sudo tcpdump port 5555 -i lo -xnn -S
结果如下:
查看下连接的状态:
ss -ant | grep -E '4444|5555'
如下图:
根据参考的文档, 正确关闭的姿势如下(亲测有效):
sudo iptables -A INPUT -p tcp --dport 4444 -j REJECT --reject-with tcp-reset
iptables -nL // n 数字化输出地址和端口, L 列出所有规则
iptables -F // 删除所有规则
iptables -A OUTPUT -p tcp --dport 5555 -j REJECT --reject-with tcp-reset
iptables -nL
注意:
iptables 在设置了reject策略之后, 需要及时清除, 方便后面创建新的连接, 这样才可以做到 关闭之前的连接但不影响整体连接的健康. 比如 mq的连接未关闭的处理.