NETSNIFF-NG(8) netsniff-ng toolkit NETSNIFF-NG(8) (NAME) netsniff-ng - (SYNOPSIS) netsniff-ng { [] [-] } (DESCRIPTION) netsniff-ng pcap pcap - packet(7) . RX_RING TX_RING - (zero-copy) . . netsniff-ng pcap(3) - . netsniff-ng . . packet(7) RX_RING TX_RING . (out-of-tree) . netsniff-ng ntop/PF_RING ( ) (mainline) . ntop . . netsniff-ng . BPF ( ) . netsniff-ng pcap . / : - (scatter-gather) mmap(2) read(2) write(2). netsniff-ng pcap (rotate) . netsniff-ng 802.11 . (dissector) 802.3 () *802.11 ( ) ARP MPLS 802.1Q (VLAN) 802.1QinQ LLDP IPv4 IPv6 ICMPv4 ICMPv6 IGMP TCP UDP GeoIP . netsniff-ng (state) (reassembly) pcap . netsniff-ng (multithreaded) . netsniff-ng (pinned) BPF . pcap ( ) . mergecap(1) pcap . netsniff-ng . netsniff-ng netlink . (OPTIONS) -i , -d , --in , --dev . pcap stdin ( "-") . pcap pcap ( -D) (magic) . stdin pcap . (link type) pcap Netlink pcap ( ) (cooked header) [2] . -o , --out . pcap trafgen(8) stdout ( "-") . pcap trafgen(8) strftime(3) . -F . pcap (0xa1b2c3d4) -T . pcap pcap ( -F) . SIGHUP netsniff-ng . trafgen pcap . pcap ".pcap" . stdout pcap trafgen stdout pcap stdout . Netlink pcap ( ) pcap [2] Netlink ( pcap netsniff-ng ). -C , --fanout-group netsniff-ng (fanout group id) (load-balance) . BPF . BPF . -K , --fanout-type (fanout discipline) . : ("hash") ("lb") ("cpu") ("rnd") ("roll" ) ("qm"). -L , --fanout-opts . . "defrag" ( ) "roll" ( "qm") . -f, --filter . bpfc(8) tcpdump(1) . bpf bpfc(8) tcpdump(1) " (FILTER EXAMPLE)" pcap-filter(7) . -f netsniff-ng . -t, --type . : "host" ( ) "broadcast" ( ) "multicast" ( ) "others" ( /promiscuous) "outgoing" ( ). -F, --interval "-F" pcap . pcap . "KiB/MiB/GiB" "s/sec/min/hrs" . -J, --jumbo-support (ring buffer) netsniff-ng . (jumbo frames) (super jumbo) . . tpacket ! -R, --rfraw (monitor mode) mon netsniff-ng wlan . netsniff-ng 802.11 . -n <0|uint>, --num <0|uint> . . . -O , --overwrite N-1 . . 2^32 - 1 . -F -P . -P , --prefix pcap . "dump-" . "--prefix """ ( 1369179203.pcap). -T , --magic pcap . pcap -D . 0xa1b2c3d4 pcap tcpdump . pcap (swapped endianness) . -D, --dump-pcap-types pcap ( "-T" ) . -B, --dump-bpf BPF ( "-f") BPF . . -r, --rand . -M, --no-promisc (promiscuous mode) . . -N, --no-hwtimestamp (RX) . pcap . ( ) . -A, --no-sock-mem netsniff-ng . . -m, --mmap mmap(2) / pcap. pcap . -G, --sg - (scatter-gather) / pcap. pcap . -c, --clrw / read(2) write(2). . -S , --ring-size RX_RING TX_RING "KiB/MiB/GiB". . -k , --kernel-pull ( ) . . -b , --bind-cpu (pin) netsniff-ng IRQ . -s . -u , --user resp. -g , --group (root) . -H, --prio-high CPU. (starvation) . -Q, --notouch-irq IRQ . -s, --silent ( ). pcap . -q, --less . -X, --hex (hex) . -l, --ascii (ASCII) . -U, --update IP MaxMind . /etc/netsniff-ng/geoip.conf . ( MaxMind) IP geoip.conf . -w, --cooked (cooked header) [3] . ( -i "any" ). -V, --verbose . -v, --version . -h, --help . (USAGE EXAMPLES) netsniff-ng "netsniff-ng" . (promiscuous) . . netsniff-ng --in eth0 --out dump.pcap -s -T 0xa1e2cb12 -b 0 tcp or udp TCP UDP eth0 pcap dump.pcap netsniff-ng ( "netsniff- ng -D" ). IRQ 0 . pcap / - . netsniff-ng --in wlan0 --rfraw --out dump.pcap --silent --bind-cpu 0 wlan0 (monitor mode) 802.11 dump.pcap. IRQ 0 . pcap / - . netsniff-ng --in dump.pcap --mmap --out eth0 -k1000 --silent --bind-cpu 0 pcap dump.pcap / mmap(2) eth0. IRQ 0 . ( ) TX_RING . pcap . netsniff-ng --in eth0 --out eth1 --silent --bind-cpu 0 --type host -r eth0 eth1 . . IRQ 0 . netsniff-ng --in team0 --out /opt/probe/ -s -m --interval 100MiB -b 0 team0 pcap . / mmap(2) pcap (super jumbo) ( ) . IRQ 0 . pcap 0xa1b2c3d4 ( tcpdump) . netsniff-ng --in vlan0 --out dump.pcap -c -u `id -u bob` -g `id -g bob` vlan0 pcap dump.pcap / read(2) write(2) pcap ( ). RX_RING "bob" . . netsniff-ng --in any --filter http.bpf -B --ascii -V bpfc(8) http.bpf HTTP . BPF http.bpf . netsniff-ng --in dump.pcap --out dump.cfg --silent pcap dump.pcap trafgen(8) dump.cfg. pcap . netsniff-ng -i dump.pcap -f beacon.bpf -o - pcap dump.pcap trafgen(8) stdout. 802.11 beacon.bpf . BPF netsniff-ng . cat foo.pcap | netsniff-ng -i - -o - pcap stdin trafgen(8) stdout. netsniff-ng -i nlmon0 -o dump.pcap -s netlink pcap. netlink ip(1) iproute2 : modprobe nlmon ip link add type nlmon ip link set nlmon0 up nlmon0 : ip link set nlmon0 down ip link del dev nlmon0 rmmod nlmon netsniff-ng --fanout-group 1 --fanout-type cpu --fanout-opts defrag --bind-cpu 0 --notouch-irq --silent --in em1 --out /var/cap/cpu0/ --interval 120sec netsniff-ng (fanout). . (defragment) . 0 1 IRQ . em1 pcap /var/cap/cpu0/ . mergecap(1) 0 1 . (CONFIG FILES) /etc/netsniff-ng/ netsniff-ng : * oui.conf - OUI/MAC * ether.conf - (Ethernet types) * tcp.conf - TCP * udp.conf - UDP * geoip.conf - GeoIP (FILTER EXAMPLE) netsniff-ng packet(7) . bpfc(8) . netsniff-ng : 1. bpfc foo > bar 2. netsniff-ng -f bar 3. bpfc foo | netsniff-ng -i nlmon0 -f - foo bpfc (opcodes) netsniff-ng -f netsniff-ng . -f ( -f "tcp or udp") "-f" . tcpdump(8) pcap-filter(7) . : host sundown sundown . host helios and (hot or ace) helios hot ace. ip host ace and not helios IP ace helios. net ucb-ether . gateway snup and (port ftp or ftp-data) FTP (gateway) snup . ip and not net localnet . . tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet ( SYN FIN) TCP . tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) IPv4 HTTP 80 SYN FIN ACK. ( IPv6 .) gateway snup and ip[2:2] > 576 IP snup . ether[0] & 1 = 0 and ip[16] >= 224 IP . icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply ICMP echo ( "ping"). (PCAP FORMATS) netsniff-ng pcap "netsniff-ng -D" : tcpdump-capable pcap (default) pcap tcpdump (). 0xa1b2c3d4 0xd4c3b2a1 . timeval . tcpdump-capable pcap with ns resolution pcap tcpdump . 0xa1b23c4d 0x4d3cb2a1 . timeval . Alexey Kuznetzov's pcap pcap (Alexey Kuznetzov). 0xa1b2cd34 0x34cdb2a1 . timeval (sll_ifindex) (sll_protocol) (sll_pkttype) . netsniff-ng pcap pcap netsniff-ng. 0xa1e2cb12 0x12cbe2a1 . timeval / (sll_ifindex) (sll_protocol) (sll_pkttype) (sll_hatype) . pcap_io.h netsniff-ng . (NOTES) NetSniff netsniff-ng . pcap tc(8) netem . netsniff-ng . (tune) . netsniff-ng . (throughput) (latency) . ! tuned(8) . : NAPI (tickless kernel) DMA I/OAT (Direct Cache Access) (multi-queues) . Documentation/networking/scaling.txt RSS RPS RFS aRFS XPS . ethtool(8) (offloading) (Ethernet pause frames) . netsniff-ng Documentation/networking/{packet_mmap.txt, filter.txt, multiqueue.txt} . (sniff) dSniff : . IP ( fragrouter -B1). ARP IP (LAN) . . . ARP (port mirror) . netsniff-ng BPF . bpfc(8) . team libteam teamd(8) . pcap netsniff-ng tcpdump Wireshark : 0xa1b2c3d4 ( pcap tcpdump) 0xa1b23c4d ( pcap tcpdump ) 0xa1b2cd34 ( pcap ) pcap netsniff-ng . (BUGS) pcap pcap . pcap (demultiplexing) . --out . pcap 802.1Q . tshark netsniff-ng 802.1Q . . VLAN PF_PACKET "" [1]. VLAN . . VLAN . (hack) PF_PACKET VLAN RX_RING . VLAN . libpcap(3) memmove(3) . : AR8131: ethtool -k eth0 "rx-vlan-offload: on" - wireshark vlan - netsniff-ng vlan ethtool -K eth0 rxvlan off - wireshark QinQ QinQ - netsniff-ng vlan RTL8111/8168B: ethtool -k eth0 "rx-vlan-offload: on" - wireshark vlan - netsniff-ng vlan ethtool -K eth0 rxvlan off - wireshark vlan - netsniff-ng vlan libpcap VLAN QinQ . . (28.11.2012): bpfc(8) VLAN (payload) . VLAN . bpfc(8) . [1] http://lkml.indiana.edu/hypermail/linux/kernel/0710.3/3816.html [2] http://www.tcpdump.org/linktypes/LINKTYPE_NETLINK.html [3] http://www.tcpdump.org/linktypes/LINKTYPE_LINUX_SLL.html (LEGAL) netsniff-ng . (GNU GPL version 2.0) . (HISTORY) netsniff-ng (Daniel Borkmann) netsniff-ng . (Emmanuel Roullit) (Markus Amend) (Tobias Klauser) (Christoph Jaeger) . . (SEE ALSO) trafgen(8), mausezahn(8), ifpps(8), bpfc(8), flowtop(8), astraceroute(8), curvetun(8) (AUTHOR) (Daniel Borkmann) . (COLOPHON) netsniff-ng . . Linux 03 March 2013 NETSNIFF-NG(8)