go-stun
go-stun 是一个用 Golang 实现的 STUN(RFC 3489, 5389)客户端(也称为 UDP 打洞)。
RFC 3489: STUN - 通过网络地址转换器(NAT)的用户数据报协议(UDP)简单穿越
RFC 5389: NAT 的会话穿越实用工具(STUN)
使用命令行工具
如果你已安装 Golang 并设置了 $GOPATH
,只需运行以下命令:
go get github.com/ccding/go-stun
go-stun
或者克隆此仓库并运行以下命令:
go build
./go-stun
你将得到如下输出:
NAT 类型:完全圆锥形 NAT
外部 IP 协议族:1
外部 IP:166.111.4.100
外部端口:23009
你可以使用 -s
标志来指定另一个 STUN 服务器,使用 -v
进入详细模式。
> ./go-stun --help
用法:./go-stun:
-s string
服务器地址(默认为 "stun1.l.google.com:19302")
-v 详细模式
使用库
库 github.com/ccding/go-stun/stun
使用起来非常简单 —— 只需一行代码。
import "github.com/ccding/go-stun/stun"
func main() {
nat, host, err := stun.NewClient().Discover()
}
更多详情请参阅 main.go
和 GoDoc