Não há uma definição formal de "interface pública". A definição mais provável é que é aquela em que os pacotes são enviados para a Internet. Essa seria a interface que tiver a rota padrão. No Linux, você pode consultá-lo programaticamente a partir de um shell com
route -n | awk '$1 == "0.0.0.0" {print $8}'
A maioria das variantes Unix tem um comando route
, sua linha de comando e sintaxe de saída podem ser um pouco diferentes.
Embora a rota padrão seja a única candidata viável, ela pode ou não ser pública. Muitas máquinas estão atrás de um appliance NAT , portanto, elas não têm uma interface pública. O NAT retransmite conexões de saída através de sua própria interface pública; as conexões de entrada chegariam ao dispositivo NAT e não seriam roteadas para sua máquina, a menos que o NAT fosse especificamente configurado para isso.