1、centos playbook
---
- name: 安装并配置tcpdump
hosts: all
become: true
tasks:
- name: 安装tcpdump(CentOS)
yum:
name: tcpdump
state: present
update_cache: yes # 更新yum元数据缓存
notify: 设置tcpdump权限
- name: 验证tcpdump版本
command: tcpdump --version
register: tcpdump_version
changed_when: false
handlers:
- name: 设置tcpdump权限
command: /sbin/setcap cap_net_raw,cap_net_admin+eip /usr/sbin/tcpdump
args:
warn: false # 隐藏"Consider using 'become', 'become_method', and 'become_user'"警告
2、ubuntu playbook
---
- name: 安装 tcpdump
hosts: hw_docker_servers
become: true
tasks:
- name: 安装tcpdump(Debian/Ubuntu)
apt:
name: tcpdump
state: present
update_cache: yes # 自动更新缓存
- name: 配置持久化权限触发器
copy:
dest: /etc/apt/apt.conf.d/99tcpdump
content: |
DPkg::Post-Invoke {"/sbin/setcap cap_net_raw,cap_net_admin+eip /usr/sbin/tcpdump || true";}
- name: 验证tcpdump版本
command: tcpdump --version
register: tcpdump_version
changed_when: false
3、测试和验证
# 查看capabilities设置
getcap /usr/sbin/tcpdump
# 预期输出:/usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip
# 测试抓包功能
tcpdump -i any -c 3
4、工作机制
(1)-c 3 的作用 :
- 明确指定抓取 3个数据包 后自动终止
- 无论这些数据包是有效流量还是无效的噪音(例如 ARP 广播、ICMP 请求等)
(2)-i any 的作用 :
- 监听 所有网络接口 的流量(包括物理网卡、虚拟接口、回环接口等)
- 实际抓包时,可能会收到来自多个接口的混合流量