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.