摘要
一直想实现内网穿透从而达到随时随地可以连接到自己电脑的目的。尝试过使用一些付费的现成方案,但是价格偏高,而流量少得可怜,只能开放几个固定端口。
实现内网穿透的最大难点就在于拥有一个公网IP,但是目前各家运营商IPv4的公网IP都很难申请到了(前几年打个电话还是有机会的),就想到不妨用IPv6将主机暴露在公网上。当然这么做有一定的风险,虽然IPv6地址不容易被扫描且会动态改变,但是当我们绑定域名之后也是存在一些安全问题。本文章只提供实现内网穿透的方案,并不对其造成的安全隐患进行处理。
另外,校园网等特殊网络的用户是否能开启IPv6并从外部访问请自行探索。因为即使关闭光猫、路由器、服务器的所有防火墙,外部流量的访问仍有可能被光猫拦截,因此我们需要将光猫设置为桥接模式,使用路由器进行PPPOE拨号上网,显然校园网用户是没有光猫的操作权限的(大佬另说)。
目前大部分地区的网络运营商都已经支持IPv6,但是关于路由器是否支持IPv6就要自己查询或者咨询客服了。路由器不支持IPv6的读者看到这里就可以退出了。
思路
- 将光猫改为桥接模式,并开启支持IPv6
- 将路由器设置为拨号上网模式,开启IPv6
- 开启电脑网卡IPv6服务,检查是否获取IPv6公网地址
- 使用
cloudflare
进行域名解析 - 使用
ddns-go
进行IP地址动态绑定到cloudflare
实践
一、 将光猫改为桥接模式
注意:以下操作会造成在暂时无法连接因特网!!!在操作前请确保你拥有宽带的账号密码
是宽带的账号密码!!!
是宽带的账号密码!!!
是宽带的账号密码!!!
不是路由器或者WIFI或者光猫的账号密码
进入光猫后台并登录,如果以下账号密码都无法登录,可以联系宽带师傅问一下。
1、电信超级密码 telecomadmin nE7jA%5m 2、移动超级密码 CMCCAdmin aDm8H%MdA 3、联通超级密码 CUAdmin CUAdmin 4、广电超级密码 admin aDm8H%MdA
对原来的连接进行修改,改为桥模式,并选择IP协议为IPv4/v6,端口绑定就选择光猫上连接到路由器的那个端口(如果是在原来的连接上进行修改的话一般不用动)。
对原来的连接进行修改,改为桥模式,并选择IP协议为IPv4/v6,端口绑定就选择光猫上连接到路由器的那个端口(如果是在原来的连接上进行修改的话一般不用动)。
接下来将光猫中的防火墙关闭
至此光猫上的操作全部结束,若操作成功,局域网内的所有设备已经无法上网了。
二、 设置路由器
登录路由器后台,路由器选择拨号上网
模式
输入自己的宽带账号密码,应用后等待1分钟左右就可以重新连上因特网了。
接下来就只要打开路由器的IPv6支持就可以了,各个品牌路由器的后台差异较大,请读者自行查找
注意IPv6单线模式不要开启,将DS-lite修改为自动配置,如果没有这个选项请忽略。
保存生效后路由器上的操作就全部结束了。
三、 设置电脑网卡,开启IPv6
在控制面板\网络和 Internet\网络连接
中选择你连接网络的网卡,打开属性,确保Internet协议版本6
是打勾的,然后确定即可。
接下来验证是否获得IPv6公网地址,访问:https://test-ipv6.com/index.html.zh_CN
检查这里的IPv6地址与ipconfig获取的临时IPv6地址
是否一致,若一致则成功获得公网IPv6地址。
注意:临时IPv6地址
才是真正的公网IP,我们后面要用的所有IP地址都是这个
四、 验证是否能通过IPv6地址访问
1. 检查本机能否通过IPv6地址访问
开启apache
或者nginx
,然后访问你的IPv6地址加上端口号,检查是否能访问到你的网站。
注意:尽管我们关闭了所有的防火墙,但是很大概率80端口会被ban掉,因此我们需要修改网站的端口号
这里我的网站使用8085端口号,成功登录
2. 检查手机流量能否通过IPv6地址访问
因为我们要测试是否能通过公网访问,因此我们要关闭WIFI连接,使用流量进行访问,若访问成功,则我们已经成功将我们的主机暴露在公网上。
剩下要解决的就是IPv6会动态变化,我们使用ddns解决这个问题。以下步骤需要一个域名,便宜的域名一年在7元左右,若没有通过固定域名访问的读者到此就可以结束阅读了。
五、 购买域名
这里不展开讲解,国内的域名购买较为繁琐,需要各种实名认证等步骤,我是在namesilo
上购买的,一年花费7.2元。
六、 CloudFlare添加DNS解析
我们通过CloudFlare可以免费将域名解析到主机,当然namesilo
也有自己默认的DNS解析服务器,但是我们后续要动态添加我们的IPv6地址,所以就选择了CloudFlare。
CloudFlare官网:hhttps://dash.cloudflare.com/
输入自己的域名并搜索,添加两条AAAA
记录,名称分别为@
和www
,内容填入IPv6临时地址
注意:代理状态选择仅DNS
添加记录后CloudFlare会给出两个DNS解析服务器,我们需要到我们购买域名的网站后台对我们的域名进行管理,将DNS服务器设置为这两个。
namesilo
后台管理地址:https://www.namesilo.com/account_domains.php
从其他平台购买的读者请登录到各自的域名后台管理平台
将上面的两个DNS服务器将原来的DNS服务器进行覆盖即可
保存后一两分钟内我们就可以在CloudFlare看到域名已成功激活,至此域名绑定已经完成,下面我们要解决IPv6的动态改变问题。
七、 使用ddns-go
管理CloudFlare记录
ddns-go
项目地址:https://github.com/jeessy2/ddns-go
选择自己的平台进行下载,Windows用户下载解压后双击exe文件,按照提示操作即可
使用管理员权限安装服务,然后浏览器访问127.0.0.1:9876
即可进行配置。
添加一个配置,并在IPv6的domains中填入我们的域名
Token是从CloudFlare获取的
使用模板:编辑区域 DNS。选择所有区域
创建后即可获得令牌。将其复制到ddns-go的配置选项中即可。
八、 开机自启ddns-go
一共有三种方法让ddns-go自启动:
安装服务
shell:startup
中加入ddns-go
的快捷方式创建自动化任务
读者选择其中之一即可,其中最简单的是安装服务。
1.安装服务
使用管理员运行cmd,输入.\ddns-go.exe -s install
。ddns-go
会以服务的方式在后台运行,每次开机都会自动运行。
2.打开shell:startup
,并将ddns-go的快捷方式拖进去
3.在计算机管理
中创建任务
名称可以随便取
确定即可。
至此我们就可以通过域名访问主机了,且ddns-go
会开启自启并自动获取最新的IPv6地址添加到CloudFlare记录中。