iptables vs route
What's the difference between these two tools?
Can anybody tell me what the main workflow of networking behind Linux (in relation to IPv4 packet filtering, NAT and IP routing table) is?
Solution 1:
route
is a command that displays, adds and deletes entries from the kernel's TCP/IP routing table (aka "Forwarding Information Base").
iptables
is a command that displays, adds, and deletes entries from Netfilter, the Linux kernel's packet filtering and manipulating subsystem. It handles NAT.
Since IP forwarding, i.e. routing, is basically rewriting a packet with a different source address and shipping it out of a different network interface, I believe you could technically do static routing with the proper iptables
rules in the mangle
table, but I believe it's generally fastest to let the routing part of the kernel do that.
There are many diagrams that are out there that illustrate exactly how a TCP/IP packet traverses the kernel (including Netfilter and the routing facility) - an example is this: http://www.adminsehow.com/2011/09/iptables-packet-traverse-map/