主要参考文档:
wireguard文档
相关中文翻译
– https://blog.51cto.com/u_15077562/4574884
– https://icloudnative.io/posts/wireguard-docs-theory/
nat穿透
相关中文翻译
– https://xie.infoq.cn/article/3f68cde0163b359b13fa1a8f0
– https://icloudnative.io/posts/wireguard-endpoint-discovery-nat-traversal/
总结
- nat穿透的时候需要NAT后的节点共同连到一个有公网IP的节点上
- 在nat背后的两个节点相连的时候需要至少一个是全椎形NAT,或者双方都为限制椎形
- coredns部署在具有公网IP的节点上
- wgsd_client需要在nat背后的节点上定时运行,可以5分钟或10分钟一次
- wgsd的代码可以自己编译,尤其在windows上只能自己编译,在对应目录中运行go build就可以了
- nat状态表的过期时间一般为2分钟,所以keepalive周期最好在1分钟以内
- nat后节点不需要与公网节点能正常通信,只需要能向公网节点发起连接就行,所以coredns最好在公网开放端口,这样在不能与公网节点通信时也能用
- 运营商级NAT都不是全椎形
- nat类型探测工具
https://github.com/HMBSbige/NatTypeTester - nat类型介绍
https://support.huawei.com/hedex/hdx.do?docid=EDOC1100331440&id=ZH-CN_CONCEPT_0183792552
https://zhuanlan.zhihu.com/p/657998085