feat: clone from https://github.com/dndx/uip
This commit is contained in:
90
README.md
90
README.md
@@ -1,3 +1,91 @@
|
||||
# uip
|
||||
|
||||
Clone from: https://github.com/dndx/uip
|
||||
A tool to quickly determine the public IP address of a machine behind
|
||||
NAT with the help of STUN servers.
|
||||
|
||||
# Overview
|
||||
|
||||
This tool is as simple as it sounds, when executed, it outputs the current machine's
|
||||
public IP address by sending a binding request to the STUN server and displaying the
|
||||
`XOR-MAPPED-ADDRESS` or `MAPPED-ADDRESS` attribute returned by the STUN server.
|
||||
|
||||
# Install
|
||||
|
||||
Either download pre-built binaries from the release page, or use `cargo install uip` to install it.
|
||||
|
||||
# Usage
|
||||
|
||||
```
|
||||
$ uip -h
|
||||
A tool to quickly determine the public IP address of a machine behind
|
||||
NAT with the help of STUN servers.
|
||||
|
||||
|
||||
Usage: uip [OPTIONS] [HOST:PORT]
|
||||
|
||||
Arguments:
|
||||
[HOST:PORT] STUN server host and port. If PORT is omitted, it defaults to 3478 [default: stun.cloudflare.com]
|
||||
|
||||
Options:
|
||||
-4, --ipv4-only Do not use IPv6 addresses when connecting to STUN server
|
||||
-h, --help Print help
|
||||
-V, --version Print version
|
||||
```
|
||||
|
||||
## Default port (UDP 3478):
|
||||
|
||||
```
|
||||
$ uip stun.cloudflare.com
|
||||
203.0.113.1
|
||||
```
|
||||
|
||||
## Custom port:
|
||||
|
||||
```
|
||||
$ uip stun.l.google.com:19302
|
||||
203.0.113.1
|
||||
```
|
||||
|
||||
This program use return code `0` to indicate success and a valid IP has been returned.
|
||||
All other return code indicates error.
|
||||
|
||||
The program timeouts after `5` seconds in case a response can not be received.
|
||||
|
||||
To debug, run it with `RUST_LOG=debug uip`.
|
||||
|
||||
# Public STUN servers
|
||||
|
||||
* `stun.cloudflare.com`
|
||||
* `stun.l.google.com`
|
||||
* `stun1.l.google.com`
|
||||
* `stun2.l.google.com`
|
||||
* `stun3.l.google.com`
|
||||
* `stun4.l.google.com`
|
||||
* `stun.syncthing.net`
|
||||
* `stun.xten.com`
|
||||
|
||||
## Servers in China
|
||||
|
||||
* `stun.qq.com`
|
||||
* `stun.miwifi.com`
|
||||
* `stun.chat.bilibili.com`
|
||||
|
||||
[public-stun-list.txt](https://gist.github.com/mondain/b0ec1cf5f60ae726202e) (Unverified)
|
||||
|
||||
# Credits
|
||||
|
||||
This script was modified from the [`stun_client.rs`](https://github.com/webrtc-rs/webrtc/blob/master/stun/examples/stun_client.rs)
|
||||
example of the [WebRTC.rs project](https://github.com/webrtc-rs/webrtc) by Rain Liu <yliu@webrtc.rs>.
|
||||
|
||||
`uip` added better error handling, more friendly command line interface and fallback to `MAPPED-ADDRESS` attribute
|
||||
in case `XOR-MAPPED-ADDRESS` can not be found since some servers that I tested does not return `XOR-MAPPED-ADDRESS`.
|
||||
|
||||
# License
|
||||
|
||||
Copyright 2023 Datong Sun (dndx@idndx.com)
|
||||
|
||||
Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)> or the MIT license
|
||||
<LICENSE-MIT or [https://opensource.org/licenses/MIT](https://opensource.org/licenses/MIT)>, at your
|
||||
option. Files in the project may not be
|
||||
copied, modified, or distributed except according to those terms.
|
||||
|
||||
Reference in New Issue
Block a user