Как определить тип NAT, за которым находится собственный комп?
Хочу написать функцию myNATtype()
которая возвращала бы один из следующих вариантов ответов: Full Cone NAT, Symmetric NAT, Address Restricted NAT, Port Restricted NAT, или же Some Other Unknown F_cking NAT (no NAT)
Как это можно сделать?
Сравнивать «статический» и «конический» так же некорректно как сравнивать «зеленое» и «соленое». Разумеется, Вы можете отличить «зеленый огурец» от «соленого огурца», как по вкусу, так и по внешнему виду, но, в общем — это несравнимые категории.
клиенты teredo определяют тип нат для определения своего teredo-адреса. почитай про этот протокол и используй их серверы для детектирования своего типа
Оставлю это здесь вдруг кому пригодится )
В Linux с помощью stun утилиты .
команда stunbdc stun.l.stunserver.org 19302
Server address: 69.16.230.124 port 19302
Если порт сервера совпадает с тем что в команде знаичт используется Full Cone NAT или Restricted Cone NAT (скорее всего, Full Cone, так как порт не меняется). В случае Symmetric NAT порт обычно изменяется для каждого нового подключения.
На windows тожесамое только через wsl