使用公网ipv6远程连接sunshine
准备
本文中所使用的设备:
- 拥有公网ipv6的宽带一条
- 域名一个,用于配置DDNS
- Openwrt路由器一台
- Windows电脑一台,装有sunshine
配置windows ipv6
Windows系统的IPv6默认使用随机生成的IPv6地址,并添加一个或多个临时地址,存在临时地址的时候访问网络优先使用临时地址,当遇到服务端需要设置IP白名单并且用户IPv6前缀无法保持不变的时候就不能使用这种临时地址与随机地址了,这时候要把系统的IPv6配置为基于EUI-64生成的固定后缀地址来方便服务端配置防火墙。
首先使用管理员权限打开PowerShell,输入Get-NetIPv6Protocol回车可以看到当前的IPv6设置.
1 | (base) PS C:\Users\28071> Get-NetIPv6Protocol |
可以看到RandomizeIdentifiers与UseTemporaryAddresses默认为启用状态,也就是生成随机地址与使用临时地址,需要禁用掉这两个选项才能使用基于EUI-64的IPv6地址。
1 | (base) PS C:\Users\28071> Set-NetIPv6Protocol -UseTemporaryAddresses Disabled |
执行完上面两条命令后可以再次执行Get-NetIPv6Protocol看看修改是否生效,生效后断开网络连接重连即可看到系统当前就只有基于EUI-64生成的IPv6地址了。
然后我们需要获取到自己电脑的ipv6公网地址,一般是以240开头,我们需要的是后半部分,例如280:4dff:fe38:1673,这一段是由电脑的mac地址决定的,如果上面正常的话,最中间的四位应该为ff:fe。保存下这串字符后面要用。
设置DDNS-GO
配置DNS提供商的token
根据你所拥有的域名提供商不同,所需的配置方式也略有不同。以cloudflare为例,依次点击右上角账户——配置文件——API令牌——创建令牌——使用 编辑区域 模板——在 区域资源处设置“包括 特定区域 你的域名” 。设置完成后点击继续以显示摘要——创建令牌。此时屏幕会出现一串字符,点击copy复制保存下来,这样我们的token就获取到了。注意要保存好token,此页面关闭后将无法再次查看。
OpenWrt配置ddns-go
在openwrt的软件包安装界面先点击更新列表,然后搜索luci-app-ddns-go,点击安装,完成后刷新页面。
现在在服务里找到DDNS-GO,勾选启用后保存并应用。在应用完成后会出现 打开Web页面,点击后跳转到ddns-go的配置页面。
首先配置用户名和密码,完成后会进入主界面。在DNS服务商出勾选对应的服务商,将上一步获取的token粘贴到Token出。
找到IPv6部分,勾选启用,获取获取 IP 方式设置为通过命令获取,在下面填入
1 | ip -6 route | awk '{print $1}' | awk '/240:?/' | awk -F::/ '{print $1 ":suffix of other mac"}' |
其中将suffix of other mac替换为上面获取到的你的ipv6地址的后半部分。在Domains内填入你想配置的子域名。最后点击保存,这样就配置好了。查看日志可以看到配置成功。
配置openwrt防火墙
找到openwrt的网络-防火墙-通信规则,点击添加。源区域设为wan目标地址为
1 | ::suffix of other mac/::ffff:ffff:ffff:ffff |
其中suffix of other mac 还是替换成你的地址,目标端口设置为47980-48020,操作改为接受.保存并应用,这样防火墙就配置好了
最后不要忘记在sunshine控制台-network-Address Family设置ipv4+ipv6.
