In network computing, hairpinning (or NAT loopback) describes a communication between two hosts behind the same NAT device using their mapped endpoint. Because not all NAT devices support this communication configuration, applications must be aware of it.
Hairpinning is where a machine on the LAN is able to access another machine on the LAN via the external IP address of the LAN/router (with port forwarding set up on the router to direct requests to the appropriate machine on the LAN).
Let us consider a private network with the following:
- Gateway address: 192.168.0.1
- Host 1: 192.168.0.5
- Host 2: 192.168.0.7
- The gateway has an external IP : 192.0.2.1
- Host 1 runs a P2P application P1 on its port 12345 which is externally mapped to 4444.
- Host 2 runs a P2P application P2 on its port 12345 which is externally mapped to 5555.
If the NAT device supports hairpinning, then P1 application can connect to the P2 application using the external endpoint 192.0.2.1:5555. If not, the communication will not work.
This notion is officially described in the RFC 5128.