How does a robot determine its IP address?
The robot (on all platforms) uses a specific C library call known as GetHostByName().
This relies largely on DNS resolution - so it is expected that a given IP address for a robot should resolve to the hostname of that robot, and vice versa - the hostname should resolve back to the same IP address.
This can be mitigated to some extent by setting the following settings in robot.cfg but it is not 100% reliable:
strict_ip_binding = yes
local_ip_validation = no
In many cases this will force the robot to use the designated IP without checking DNS, but in some cases it is not sufficient.