ansible-06 安装tcpdump

61 阅读1分钟

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 的作用 :

- 监听 所有网络接口 的流量(包括物理网卡、虚拟接口、回环接口等)

- 实际抓包时,可能会收到来自多个接口的混合流量