Может быть, лучше использовать что-то вроде STUN, подробнее о STUN здесь
Согласно википедии
Утилиты обхода сеанса для NAT (STUN)представляет собой стандартизированный набор методов, включая сетевой протокол, для обхода шлюзов трансляции сетевых адресов (NAT) в приложениях голосовой, видеосвязи, обмена сообщениями и других интерактивных коммуникаций в реальном времени.
Можетбудет использоваться вашим приложением для определения его общедоступного IP-адреса, он в основном используется в WebRTC, но, возможно, он также подойдет для вашего варианта использования
Он предоставляет хостам инструмент для обнаружения присутствияпреобразователь сетевых адресов и обнаружение сопоставленных, обычно общедоступных, IP-адресов и номеров портов, которые NAT выделил потокам протокола пользовательских дейтаграмм (UDP) приложения для удаленных хостов.Протокол требует помощи от стороннего сетевого сервера (сервера STUN), расположенного на противоположной (общедоступной) стороне NAT, обычно это общедоступный Интернет.
Как упоминалось выше, вам потребуется использоватьсервер STUN, чтобы найти ваш публичный внешний IP-адрес.Хороший список можно найти здесь