# nat-detect > a simple nat detect implementation for rust ```text +--------+ | Test | | I | +--------+ | | V /\ /\ N / \ Y / \ Y +--------+ UDP <-------/Resp\--------->/ IP \------------->| Test | Blocked \ ? / \Same/ | II | \ / \? / +--------+ \/ \/ | | N | | V V /\ +--------+ Sym. N / \ | Test | UDP <---/Resp\ | II | Firewall \ ? / +--------+ \ / | \/ V |Y /\ /\ | Symmetric N / \ +--------+ N / \ V NAT <--- / IP \<-----| Test |<--- /Resp\ Open \Same/ | I | \ ? / Internet \? / +--------+ \ / \/ \/ | |Y | | | V | Full | Cone V /\ +--------+ / \ Y | Test |------>/Resp\---->Restricted | III | \ ? / +--------+ \ / \/ |N | Port +------>Restricted ``` **Install** ```bash cargo install nat-detect ``` **Usage** ``` # use default stun server list # may be, these default servers will not good work in your net! nat-detect # use stun server 193.43.148.37:3478 nat-detect -s 193.43.148.37:3478 ``` default stun server list use [always-online-stun](https://github.com/pradt2/always-online-stun)