If you have a server with multiple interfaces – either public and/or private – your routing table might look something like this:
sh# ip route list
default via 17.10.20.1 dev eth1 metric 100
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.51
17.10.20.0/23 dev eth1 proto kernel scope link src 17.10.20.51
105.104.72.16/28 dev eth2 proto kernel scope link src 105.104.72.23
This example shows one private interface with IP 192.168.0.51, two public interfaces with IPs 17.10.20.51 and 105.104.72.23, and a default route to 17.10.20.1. This means that any traffic to/from an IP outside the interface’s subnets is sent to 17.10.20.1 — and this is where problems occur (and probably why you’re reading this article). ;-)