

This blog post will hopefully serve as a reference to anyone looking to do this.

It is impossible to tune or monitor the Linux networking stack without reading the source code of the kernel and having a deep understanding of what exactly is happening.

UPDATE Take a look at the Illustrated Guide to Monitoring and Tuning the Linux Networking Stack: Receiving Data, which adds some diagrams for the information presented below. UPDATE We’ve released the counterpart to this post: Monitoring and Tuning the Linux Networking Stack: Sending Data. You'll have to monitor the veth-a interface.This blog post explains how computers running the Linux kernel receive packets, as well as how to monitor and tune each component of the networking stack as packets flow from the network toward userland programs. (You can also use the MASQUERADE rule if you prefer)įinally, you can run the process you want to analyze in the new namespace, and wireshark too: ip netns exec test thebinarytotest Ifconfig veth-b up 192.168.163.254 netmask 255.255.255.0Ĭonfigure the routing in the test namespace: ip netns exec test route add default gw 192.168.163.254 dev veth-aĪctivate ip_forward and establish a NAT rule to forward the traffic coming in from the namespace you created (you have to adjust the network interface and SNAT ip address): echo 1 > /proc/sys/net/ipv4/ip_forward The setup might seem a bit complex, but once you understand it and become familiar with it, it will ease your work so much.Ĭreate a test network namespace: ip netns add testĬreate a pair of virtual network interfaces (veth-a and veth-b): ip link add veth-a type veth peer name veth-bĬhange the active namespace of the veth-a interface: ip link set veth-a netns testĬonfigure the IP addresses of the virtual interfaces: ip netns exec test ifconfig veth-a up 192.168.163.1 netmask 255.255.255.0

If your kernel allows it, capturing the network traffic of a single process is very easily done by running the said process in an isolated network namespace and using wireshark (or other standard networking tools) in the said namespace as well. I know this thread is a bit old but I think this might help some of you:
