Linux Networking
Linux networking is the kernel network stack and the user-space tools that configure it. It gives each network context interfaces, addresses, routes, name resolution, and packet-filtering paths so processes can reach local and remote systems, and it lets one kernel hold several isolated network stacks through network namespaces.
itLinux | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Linux Networking
Linux networking is the kernel network stack and the tools that configure it. It gives each network context interfaces, addresses, routes, and packet-filtering paths, and it lets one kernel hold several isolated stacks through network namespaces. That last part is why containers can have their own addresses on a shared host.
Before namespaces existed, a host had one network stack, and every service on it had to share one set of routes and one port space. The stack still does what it did then; namespaces just gave it more than one place to do it.
Three ideas hold the practice up. A connection is two routes that agree, not one route that works — the outbound path gets the packet off the host, the return path gets the reply back, and most "the network is broken" reports are a return failure the outbound side cannot see. The ip command from iproute2 is the control surface, speaking netlink to the kernel and replacing the deprecated net-tools (ifconfig, route, netstat) that misrepresent modern state. And a network namespace is another copy of the stack with its own routes and firewall rules — a network isolation boundary, not an authorization one.
The one thing that surprises people: DNS is not reachability. A name can resolve to the correct address while the listener, the packet policy, the forwarding bit, or the return path still prevents a connection. Reachability is a chain, and DNS proves only its first two links.
The thing that catches every team: the hard part is not the commands. ip syntax is learnable in a day. The hard part is identifying which boundary a failure lives at — name, address, route, link, neighbor, policy, listener, or return path — and changing one boundary at a time. A team that changes several at once fixes things and cannot say how, then breaks them the same way next week.
A subtle one: enabling IPv4 forwarding is a routing decision, not a connectivity fix. The kernel resets several IPv4 configuration parameters to their defaults when the bit flips, so a host tuned for a specific forwarding profile can silently lose that tuning. The trade is usually correct; making it without knowing it happened is not.
Read the Intro for the full packet path and the boundaries it crosses. The Cheatsheet is the reference you will reach for when you forget what ip route get returns and how to read it. The Timeline shows how a stack that started with ifconfig and route gained netlink, network namespaces, nftables, and eBPF — and why the older commands still in your runbooks were deprecated fifteen years ago.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.kernel.org/networking/index.html
Supports
- Linux kernel networking subsystem documentation index
- https://docs.kernel.org/networking/ip-sysctl.html
Supports
- ip_forward behavior and that changing it resets IPv4 configuration parameters to defaults
- forwarding and protocol sysctls
- https://man7.org/linux/man-pages/man8/ip.8.html
Supports
- iproute2 ip command grammar and object families
- https://man7.org/linux/man-pages/man8/ip-link.8.html
Supports
- Interface state
- MTU
- link-layer addresses
- device movement between namespaces
- https://man7.org/linux/man-pages/man8/ip-route.8.html
Supports
- Route syntax
- destination prefixes
- gateways
- route lookup
- ip route get
- https://man7.org/linux/man-pages/man8/ip-netns.8.html
Supports
- Network namespace creation
- identification
- and command execution
- https://man7.org/linux/man-pages/man4/veth.4.html
Supports
- Virtual Ethernet pair connecting network namespaces
- https://en.wikipedia.org/wiki/Iproute2
Supports
- iproute2 origin by Alexey Kuznetsov
- replacement of net-tools
- deprecation of net-tools in 2009
- https://en.wikipedia.org/wiki/Nftables
Supports
- nftables merged in kernel 3.13 on 2014-01-19
- replacing iptables component of Netfilter
- https://en.wikipedia.org/wiki/EBPF
Supports
- eBPF extension to networking in kernel 3.18
- XDP in kernel 4.8
- eBPF networking mainstream adoption
- https://www.tcpdump.org/
Supports
- Packet capture on Linux interfaces
- https://www.wireshark.org/
Supports
- Graphical packet analyzer for capture analysis
- https://nmap.org/
Supports
- Network discovery and listener probing
- https://www.bitwizard.nl/mtr/
Supports
- Combined traceroute and ping path diagnostics
- https://iperf.fr/
Supports
- TCP and UDP throughput measurement
- https://conntrack-tools.netfilter.org/
Supports
- Connection tracking table inspection and management
- https://bird.network.cz/
Supports
- BIRD userspace routing daemon for BGP
- OSPF
- RIP
- https://frrouting.org/
Supports
- FRRouting multi-protocol routing daemon suite
- https://cilium.io/
Supports
- eBPF-based dataplane for Kubernetes and Linux
- https://www.netfilter.org/
Supports
- Netfilter packet-filter framework
- iptables
- https://wiki.linuxfoundation.org/networking/iproute2
Supports
- iproute2 project and its netlink-based command suite
