как узнать компьютер за NAT или нет?

каким образом можно узнать, компьютер находиться за NAT или нет?

может через командную строку windows или программой какой узнать это как-то.


Ответы (3 шт):

Автор решения: burat

Если локальный IP-адрес принадлежит одной из внутренних подсетей 10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16, то да.

Чисто теоретически ничто не мешает настроить NAT с использованием других подсетей подсетей или прокинуть VPN с использованием этих подсетей, так что полноценный ответ, охватывающий все возможные конфигурации, будет несколько шире, но это всё скорее всего нужно уже уточнять у системного администратора настраивавшего сеть (поэтому я и ограничился комментариями вместо полноценного ответа) (c) andreymal.

→ Ссылка
Автор решения: eri

Получить внешний и внутренний адреса можно по протоколу STUN. Поможет в этом програмка http://www.stunprotocol.org/

> stunclient.exe stun.ekiga.net
Binding test: success
Local address: 192.168.117.138:57896
Mapped address: 93.81.33.123:57896

Она пробрасывает udp порт на внешний адрес, а сравнив локальный и внешний адрес получим ответ комп за натом или нет.

При включенном впн

> stunclient.exe stun.ekiga.net
Binding test: success
Local address: 10.100.10.254:60641 -- адрес на впн клиенте
Mapped address: 185.189.уу.хх:60641 -- адрес выхода в интернет впн сенрвера

Тут stun.ekiga.net один из публичных серверов

→ Ссылка
Автор решения: eri

Для обнаружения NAT со стороны сервера можно попробовать получить TTL входящего соединения через setsockopt(IP_RECVTTL) или pcap, а потом пингануть его адрес. Сравнив TTL можно делать примерные выводы о NAT.

→ Ссылка