视频教程

youtube播放地址:https://youtu.be/2V2MD97-pcw

自用专线机场推荐: https://b.m123.org
GIA高速线路VPS推荐: https://d.m123.org

相关文档

ping ipv6:https://www.itdog.cn/ping
tcping ipv6:https://www.itdog.cn/tcping_ipv6

获取局域网设备公网IPv6地址
INTERF=br-lan; SUFFIX="6dcb:1863:2bd1:b28f"; ip -6 addr show dev $INTERF | awk '/inet6/ && !/fe80::|deprecated/ {print $2}' | cut -d':' -f1-4 | sed "s/$/:$SUFFIX/"

相关教程回顾

家庭网络速通教程:https://youtu.be/P38FmPAq09E
IPv6进阶配置指南:https://youtu.be/klQ6JbZEeJ0
免流教程:https://youtu.be/dGYNinKfUR4
socks UDP密码绕过:https://youtu.be/IU2cfu08ky0
不设置密码流量被偷跑:https://youtu.be/6UJocLvEXtM

视频文稿(忽略)

很多朋友都非常担心自己家里的网络安全,尤其是根据上期教程配置好ipv6之后,每台网络设备都有公网ip,公网其他用户可以直接ping通你家内部网络设备,感觉自己在互联网上裸奔,认为黑阔随时能进入你的设备屙屎屙尿,很多朋友不愿意开启ipv6也有这层原因,所以本期就来讲讲如何保证家里的网络安全,同时教大家在拥有公网ip的情况下怎么实现异地远程管理路由器,远程访问NAS家庭影音,搭建免流节点等操作

上期我们讲过了如何开启ipv6,如何使用ipv6访问网站,以及代理环境下的ipv6访问流程,很多朋友比较在意开启ipv6之后,每个设备都有公网ip,这样的话会不会非常不安全?其实如果你没有改动openwrt默认的防火墙设置,就不需要担心这个问题,因为别人根本进不来

简单讲讲防火墙是干啥的,我们电脑的上网数据都要经过路由器转发到互联网,路由器收到数据包之后是选择接受还是拒绝,就是由路由器里运行的防火墙来决定,假设防火墙配置了电脑不能上网,那就会拒绝你的数据包发送到互联网去,再比如互联网的设备要访问你家局域网里有公网ip的电脑,进来的数据包同样会经过路由器,路由器收到数据包之后会根据防火墙配置选择接受还是拒绝,每个路由器都有最基础的防火墙功能,比如定时断网,禁止访问特定网站,禁止外部网络访问内网等,openwrt中我们可以进入网络下的防火墙查看防火墙的相关设置,openwrt的默认防火墙设置已经禁止了互联网的流量进入我们内部家庭网络,如果你没有私自改动的话大可放心使用,即使内网设备都有公网ipv6地址也不用担心别人能随便访问你的电脑

但如果我现在尝试从公网ping这台电脑的ipv6地址,会发现可以ping通,看上去好像公网用户可以直接访问局域网里的电脑,很多朋友看到这个结果非常害怕,但ping通了是否就意味着电脑已经完全暴露在公网环境了?并不一定,要解释这个问题需要初步了解openwrt的防火墙配置

在默认情况下,openwrt会帮我们创建两个区域,绿色的lan区域和红色的wan区域,我们家里的局域网设备都接入到了lan区域,而wan区域连接的是光猫,光猫后面是整个互联网,你可以想像成互联网上所有的网络设备全都接入了wan区域,包括你连接了运营商5G网络的手机

默认配置下,lan区域的数据允许转发给wan区域,也就是局域网的设备可以将数据发送到互联网,而wan区域禁止转发给任何区域,当然也包括了lan区域,也就是你在公网的手机禁止访问你家里有公网ip的电脑

另外每个区域还有对应的入站和出站设置,这里的入站和出站是从路由器的角度来说的,访问路由器本身的数据就是入站数据,路由器主动访问别人就是出站数据,lan区域的入站设置为接受,也就是在lan区域里的设备可以访问路由器本身,比如当前这个路由器的web管理网页就是访问路由器本身,而wan区域的入站设置为拒绝,也就是wan区域的手机不能访问这个路由器的web管理网页

出站在wan和lan区域都接受,也就是路由器本身可以访问lan区域里的电脑,也可以访问wan区域的互联网,当然手机这边的话也有运营商的防火墙对你的数据包进行拦截,这里还有一个转发,和前面区域之间的转发不同,这里的转发表示区域内的转发,lan区域设置为接受,表示lan区域内不同网段的设备之间可以互访,比如192.168.2.2可以与192.168.3.2互访,不过大部分家庭的内网都只有一个网段,所以一般用不到,注意相同网段的设备之间并不通过路由转发,而是直接通过交换机转发,所以如果区域内的转发改成拒绝的话也不影响同网段的192.168.2.2和192.168.2.3互访,具体可以回看第一期的家庭网络速通有详细的解释,最后上面还有默认出入站的配置项,只有你的设备没有设置防火墙区域,也就是既不在lan区域也不在wan区域才会使用这里的默认配置,普通用户没这个需求就不展开讲了

有了这个基本认识,现在我们回过头来看看为什么公网可以ping通内网的电脑,按照刚才的讲解,公网访问电脑的数据包来到路由器,需要从wan区域转发到lan区域的电脑,但我们的防火墙设置了wan区域禁止转发到任何区域,数据包会被丢弃,按理来说应该无法ping通,如果只看当前页面的配置,确实不应该ping通,但openwrt在此基础上单独设置了一些例外规则,来到通信规则,这些都是为了保证openwrt能正常运行所自带的例外规则,优先级比主界面的规则要高,虽然主界面禁止了wan区域到lan区域的转发,但这里有一条规则,如果wan区域发过来的是icmpv6数据包,不管目标是哪个区域,都接受转发,而icmp里包含了ping规则,所以公网ping内网的电脑命中了这条规则,于是防火墙接受并转发了数据包到lan区域的电脑,这也是为什么公网可以直接ping通内网设备的原因,假设我取消启用这条规则,再重新ping,此时没有针对icmp的例外规则,于是会按照主界面的防火墙策略拒绝转发wan区域过来的数据包,也就无法ping通了

此时再来回答一开始的问题,公网ping通了内网设备,是不是就相当于在互联网裸奔了?并没有,我们的例外规则只是放行了icmpv6的数据包,并且仅放行了指定几个必要的icmp类型,所以在固件默认的防火墙配置下,即使ping通了,也不用担心设备在裸奔,对你构成不了威胁,如果你对防火墙不熟悉,不建议删改任何默认配置项,否则可能导致路由器无法正常工作,并且可能会在你不知情的情况下将内网设备完全暴露在公网环境,导致安全问题。

有些朋友要ipv6的原因是为了将一些服务主动暴露在公网,这样就能直接在异地通过公网访问和控制家里的设备了,比如远程登陆路由器的管理后台,远程访问NAS文件等操作,以前主要是通过公网ipv4地址配合端口转发,以及通过第三方或者自己搭建的内网穿透服务实现,都有相应的缺点,现在越来越多的宽带用户家里都没有公网ipv4地址,使用内网穿透的话价格贵,带宽低,效果还差 ,而公网ipv6大部分地区的运营商都会给用户免费分配,还能跑满你家上行带宽,简直是好棒棒,接下来就带大家一步步通过ipv6实现各种公网访问应用场景

首先最常见的应用场景就是异地随时登陆管理家里的路由器,你需要先按照上期教程配置好ipv6,另外上期有些朋友问旁路由怎么配置ipv6,你要用ipv6的话不建议用旁路由,目前各方包括运营商对ipv6的支持本身就比较糟心,做主路由都够呛,仅仅是能用的状态,旁路由依赖的主路由型号大家还都不一样,有些品牌比如小米有些型号的路由器防火墙默认屏蔽了ipv6入站并且没法关闭,所以教程根本就做不了一点,你需要自己研究,建议按我上期讲的四种方法用主路由的方式配置ipv6

配置好之后可以在wan口看到有公网ipv6地址,接着来到防火墙页面里的端口转发,由于大部分地区的80和443等常见服务端口都被运营商封禁了,无法直接从公网访问,而路由器的管理网址默认端口用的就是80,所以需要使用其他端口访问,除了直接修改管理网址的监听端口,也可以用端口转发的方式设置为其他端口,点击添加,随便给个名称,地址簇设置为ipv6, 协议只勾选tcp,源区域保持wan,随便设置一个60000以内的外部端口,比如20000,目标区域设置为未指定,内部端口填写80,点击保存,最后点击保存并应用,这样就算是配置好了,非常简单,这条规则的意思是所有从公网发到20000端口的数据,都会转交给路由器的80端口,所以访问路由器的20000端口就相当于访问路由器的80端口,而80端口正是路由器的管理网址,尝试使用手机的移动5G网络访问wan口的ipv6地址

前面输入http://,ipv6地址用中括号括起来,后面加上冒号,20000端口号,模拟异地网络环境,可以正常进入管理,远程访问路由器就算是完成了,非常简单

但此时有些朋友可能有疑问,wan区域的入站不是设置为了拒绝吗?也就是wan区域不能访问路由器本身,但为什么wan区域的手机可以访问路由器的管理界面,原因是我们做了端口转发,端口转发实际上就是做DNAT,而做过DNAT的数据包会被防火墙放行,可以在状态下的防火墙看到相关的规则,比如刚才设置20000端口转发到80端口的规则,input就是访问路由器本身的规则,如果是从wan区域发过来的数据,就进入input_wan处理,input_wan中可以看到通信规则中设置的例外规则,其中有一条是如果数据包做过DNAT,就接受数据包,所以做了端口转发之后数据包可以访问路由器。

从这些规则中可以发现防火墙能干很多复杂的事,不只是单纯的接收和拦截数据包,你如果想深入了解请自行查阅iptables和nftables以及Netfilter相关资料,个人水平有限讲不了那么细,我在openclash那期中尝试讲过iptables,发现这玩意根本没法用接地气的方式讲,太晦涩的话肯定没啥流量,希望大家能理解

现在有个问题,运营商给我们分配的ipv6前缀并不是固定的,会定期自动更换,如果你在外面有急事要连接家里的路由器,而公网ip地址却变了,就没法连接了,解决这个问题的常规操作是做ddns,dns大家都非常熟悉了,而ddns表示Dynamic动态dns,正是为了应对这种ip地址经常变换的场景,他会定期检测ip是否发生了改变,如果变了,就会自动将改变后的ip地址绑定到你设置的域名,这样我们在任何地方,只需要记住域名就能随时连上家里的路由了,要实现ddns你需要有个域名,没有的话请自行注册购买,然后使用对应的openwrt插件,来到软件包,先更新一下列表,我这里以ddns-go插件为例,直接安装中文包,安装之后刷新网页,服务标签中将会出现ddns的插件,勾选启用,保存并应用,打开web界面,首次使用没有账号密码,直接点击登陆,先拉到下面设置账号密码,点击保存,该工具支持市面上大部分商家的ddns设置,我就以大家最熟悉的cloudflare为例,这里要输入令牌token,登陆你的cf账号,我就以这个域名做演示,进入个人资料,Api令牌,创建令牌,使用第一个dns模板,区域选择你要使用的域名,其他保持默认,点击继续,点击创建令牌,将令牌复制下来,注意这个相当于密码,不要泄露给别人,被别人知道后就能随意修改你的域名解析,将其填入token处,这个token等会申请tls证书的时候还需要用到,我先保存在其他地方,关闭ipv4,启用ipv6,获取ip的方式选择wan口,在这里填入你想使用的域名,token对应的域名是openwrrimm,我可以随便设置一个二级或者多级域名,另外需要提醒大家的是,本来ipv6你不主动暴露的话,别人几乎无法扫到你的ip,但是做了ddns之后,相当于主动暴露了,毕竟扫描子域名要比ipv6简单的多,你可以设置多级域名来缓解被扫描的情况,比如我这里设置一个openwrt.1.2.3.4.openwrtimm,可以抵御一些扫描工具,但做不到绝对,所以不要以为多级域名别人就不知道了,ddns是在隐私和便利性之间做了妥协,不过我们只要有针对性的开放必要的服务,并且做好鉴权,将密码设置复杂一点,也不用太担心安全问题,另外你可能还需要思考一下是否真的有人像我一样对你感兴趣,最后点击保存,这里提示添加域名解析成功,可以看到我这个域名新增了一条4a记录的ipv6解析,现在访问这个域名就相当于访问了这个ip地址,并且当路由器的wan口公网ip发生变化之后,ddns工具会自动更新这个域名的解析记录,稍等片刻等dns解析生效,然后用手机移动5G网络从公网使用域名访问路由器,记得加上20000端口,可以正常访问

这里有个需要注意的点,你如果用局域网里的电脑访问20000端口是不通的,不过可以直接用80端口访问,因为我这台电脑不在wan区域,而是lan区域,所以没有命中端口转发规则,如果你非要局域网也能使用20000端口访问,那么再添加一条lan区域的端口转发规则,将源区域改成lan,其他按相同的设置方法, 保存之后就可以在内网设备使用20000端口访问路由器了, 另外如果是ipv4做端口转发导致内网设备无法通过公网ip访问路由器的话,是由于NAT环境下的非对称路由导致的,旁路由那期讲过非对称路由会导致流量失效的问题,要通过nat反射解决,这里就不展开讲了,遇到此问题的朋友请自行谷歌搜索

现在我们已经可以做到在公网随时通过域名访问家里的路由器了,但现在又会遇到一个问题,我们现在用的是http的方式访问路由器的管理页面,众所周知http是明文的,也就是说你从公网访问路由器的管理页面,在这里输入账号密码登陆后台,数据包经过公网传输,经过的所有路由器都知道你的密码是什么,非常的不safe,所以我们还需要为其配置tls证书,使用https的加密方式访问,来到软件包,安装uhttpd插件,选择这个luci插件,接着安装openssl插件,刷新页面,进入uhttpd插件,如果你嫌麻烦,并且对自身隐私安全没有那么高的追求,那么用自签证书就行了,简单方便,数据同样经过了加密,缺点是浏览器会报警显示不安全,并且无法防止中间人攻击,注意严格按照我的步骤操作,防止把网页搞崩了进不来了,点击删除旧证书和密钥,提示网页错误,不用管,鼠标焦点来到地址栏,按一下回车键重新访问网页,此时会多出一个自签证书和私钥,修改密钥长度为1024,点击保存并应用,不出意外的话现在就能通过443端口使用https方式访问了,但是443被运营商封禁了, 所以需要先进行端口转发, 将原来的80端口转发改成443,点击保存并应用,此时就可以在公网通过https的方式访问路由器的管理界面了,正如之前讲的,自签证书浏览器会报警,点击这里可以继续访问,这样就能通过https加密的方式访问了,在这里输入密码点击登陆,通信链路中间的路由器就看不到你的账号密码了。但由于自签证书无法防御中间人攻击,别人硬要看的话也是有办法的,所以建议用正规CA机构颁发的证书,即使麻烦一点,来到软件包,安装acme工具用于申请证书,先安装这个luci插件,接着安装这个dnsapi插件,刷新页面,进入acme插件,输入你的邮箱,将这两个示例配置删除,在这里添加一个,勾选启用,域名设置为刚才我们做ddns的域名,点击添加,以前可以直接让其自动将证书部署到uhttpd,现在没用了,需要手动配置,所以不用勾选,来到质询验证,选择dns,dns api可以在这个网址查看,支持很多dns商家,我们以cf为例,复制这个值,填入这里,凭证要填入zone id和token,token我们刚才做ddns已经获取到了,接下来获取zone id,来到当前域名的概述,这个区域id就是zone id,点击复制,粘贴到这里,将这两行分别添加到api凭证处,点击保存,最后点击保存并应用,这样就算是配置好了,也不是很麻烦,现在路由器已经在后台默默的帮我们申请证书了,我们要做的就是静静的等待三五分钟,然后来到uhttpd插件,修改证书路径,跟着视频演示找到/etc/acme目录,如果申请成功的话,这个路径下应该会有我们域名的文件夹,里面会有证书和私钥,证书选择fullchain,在同目录下找到私钥,这个key就是私钥,选中它,注意证书和私钥不要选错了,选错了会导致服务无法启动,从而进不来管理页面了,如果你没开启ssh访问那就凉凉了,点击保存并应用,这样就算是配置好了,如果你等待三五分钟之后,目录下还是没有出现证书和私钥,可能是申请证书的环节出现了错误,可以登录ssh,在命令行中输入这条指令查看acme的相关命令,使用restart重新运行证书申请,可以看到错误出现的原因,再按照相应的提示排错,我这里就不演示了,这样我们就可以在公网通过正规证书访问家里的路由器了,浏览器不会报警,同时能防御中间人攻击了。这样我们通过公网访问路由器就算是配置好了

除了从公网访问路由器本身,还可以从公网访问局域网里的设备,假设我在这台电脑上的9000端口运行了nas服务,现在局域网内的电脑可以通过9000端口访问到这台电脑的nas服务,可以看到相应的访问日志,但是公网设备目前无法访问,比如我现在用手机的移动5G网络访问电脑ipv6地址的9000端口,显示拒绝访问,因为当前防火墙的规则拒绝wan区域转发数据到任何其他区域,所以没法访问,可以在这个网址进行tcping检测,输入ip和端口,可以看到全红,接着需要设置防火墙让公网用户可以访问,如果你的电脑开启了防火墙,需要先将电脑本身的防火墙关闭,除非你能弄明白多层防火墙怎么玩,否则就统一交给路由器的防火墙管理

回到路由器管理,由于每台设备都有公网ipv6地址,所以不需要和ipv4一样配置端口转发,直接添加放行规则即可,你当然可以直接在这里设置讲wan区域的数据允许转发lan区域,非常省事,但这样就相当于直接大门全开,黑阔进来屙屎屙尿的概率很高,所以不能这样做,要针对性的放行,我们的目标是让公网用户能访问电脑的9000端口,那么只需添加对应的放行规则即可,其他保持禁止,进入防火墙里的通信规则,添加一条规则,随便给个备注,源区域选择wan,目标区域选择windows电脑所在的lan区域,目标ip填入电脑的ipv6地址,但正如之前讲的,ipv6前缀会定期改变,如果直接在这里写死的话,ip地址改变之后就无法命中这条规则了,不过上期我们讲过,ipv6后64位是和网卡接口相关联的,一般不会发生改变,改变的都是前面64位前缀,所以我们可以利用反掩码的方式配置防火墙规则,来到最底下,在这里输入电脑的ipv6接口ID,也就是ipv6固定不变的后64位,注意不要用下面的临时ipv6地址,跟着视频演示填写,输入两个冒号,贴上刚才复制的接口id,然后输入对应数量的掩码位,什么是掩码可以回看软路由第一期的家庭网络速通教程,意思是只要后64位匹配到了目标ip就命中这条规则,按回车键选中,目标端口就填写nas监听的9000,动作为接受,点击保存,这样就添加了一条防火墙规则,意思是wan口收到的数据包,如果是发给lan区域ipv6后64位是这个的9000端口,就接受数据包的转发,数据包将会被路由到这台windows电脑,由于我们直接关掉了这台电脑的防火墙,会接受所有数据包,所以9000端口将会直接收到这个数据包,于是就通了,点击保存并应用,再来尝试公网tcping,没有问题,使用手机在公网访问,同样没有问题,nas可以看到被访问的日志信息,是直接ipv6到ipv6的无NAT端到端访问

同样的,为了应对ipv6前缀变化,内网设备同样可以做ddns,目前只有一个ddns配置,是我们刚才设置给路由器用的,点击添加一个给nas用,还是用同一个顶级域名,所以token和刚才是一样的,关闭ipv4,ipv6选择通过命令获取,使用我给大家的这段指令,这些用到的信息我会放在视频下方的说明栏,需要修改两个地方,首先要设置nas所在的区域的ipv6前缀,这里设置的是br-lan,也就是lan区域的前缀,如果你的ipv6是中继模式,br-lan的接口没有ipv6地址,就填wan,脚本不一定适合所有人,总之你要想办法获取到nas正确的前缀,然后这里填写nas固定不变的后64位,将其全选复制,粘贴到这里,随便设置一个域名,点击保存,这里提示新增了域名解析,这样我们就可以通过winnas的域名从公网访问家里的nas设备了,你还可以给这个域名申请tls证书,开启https访问,如果你有很多需要开放的服务,还可以用nginx进行反代,这里就不再进行拓展了

最后讲讲怎么搭建节点,在有些地区还可以实现免流,免流原理和具体操作细节可以回看这期视频,这里就不浪费时间解释,你可以将节点搭建在内网的任意设备上,和刚才的nas一样放行到公网就行了,我们这里只演示在路由器上搭建,因为之前介绍的homeproxy提供了现成的支持,来到服务器模式,随便设置一个名称,点击添加,比如我要搭建vmess+ws的节点,类型选择vmess,监听端口选一个没被运营商封禁的,比如8899,有些地区免流的话得用80端口,而80端口又被运营商封了,所以不一定所有地区都有效,uuid随便设置一个,传输层设置为websocket,其他保持默认,点击保存,勾选启用,这里还贴心的支持自动配置防火墙,不用手动去创建通信规则,点击保存并应用,等待服务端启动,此时我就可以在公网使用代理工具,连上这个vmess+ws的节点了,免流的话还要填写对应的host,可以直接开全局,将所有流量都发回自家路由器,如果路由器本身能科学上网的话,相应的这台手机也能正常科学上网了,分流规则取决于路由器上的分流规则,网速取决于你家带宽的上行速度以及节点速度

openclash也可以当服务端,但clash主要是作为客户端使用,只支持http和socks入站,不过有些用户有这个需求,比如有些软件自带socks代理支持,就不用额外安装代理工具了,这里也简单演示一下,来到复写设置,可以看到http代理和socks代理监听的端口,这里就以7893的混合端口为例,这个端口同时支持http和socks,在这里添加一条认证信息,在公网使用必须设置密码,不然家就被偷了,你需要尽量设置的复杂一点,点击保存并应用

接着要在防火墙放行7893端口,来到防火墙下的通信规则,点击添加,随便给个名称,另外虽然socks支持代理udp,但强烈建议你不要放行udp端口,因为clash的socks udp可以绕过密码认证,具体可以回看这期视频,另外xray已经修复了这个bug

源区域设置为wan,目标区域设置为自己,发给自己的话目标地址可以不用设置,如果你的wan口有多个公网ipv6地址,也可以指定入口为某个固定的ip,比如我这个接口还有上级路由通过dhcp分配的ipv6地址,但我只接受数据发给这个通过无状态自动配置的ipv6地址,添加方法和刚才一样使用反掩码,目标端口设置为7893,你还可以设置规则生效的时间范围,点击保存,最后保存并应用,这样我就能在公网使用这个socks和http代理了,有些软件比如tg本身就支持http和socks代理功能,就不需要下载第三方代理工具了

你还可以将clash的webui暴露到公网,方便远程切换节点和分流模式,但是暴露到公网的话一定要设置密码,不设置密码的后果可以回看这期,当你服务多了,会感觉很麻烦和不安全,指不定哪天爆了0day漏洞,黑阔就能随时进来屙屎屙尿了,那有没有办法不暴露在公网的情况下依旧能够远程管理家里运行的各种服务?还真有,那就是就是用真正的vpn,没想到吧!咱们天天谈论科学上网,但我频道从来没有讲过真正的vpn(惊不惊喜,意不意外,刺不刺激)

真正的vpn就相当于你在公网的手机直接接在了内网里,就像是手机远程连接了家里的wifi一样,不需要将内网的服务暴露在公网,直接通过内网访问内网就行了,由于时间关系,之后再单独出一期视频讲解

最后防火墙主页还有一个NAT分载的选项,大家直接看视频感受一下区别吧,分载就是让已经建立好了连接的转发数据包不再经过防火墙各个hook点,可以提升转发效率,如果只是软件分载的话提升并不大,但如果你的路由设备支持硬件nat,同时openwrt支持的话,开启硬件流量分载之后可以大幅降低CPU的使用率提高转发性能,不过开启分载之后会导致一些流量控制类的工具失效,比如之前讲过的opengfw就不兼容,毕竟hook点都被跳过了,所以按需启用

最后修改:2024 年 08 月 02 日 02 : 12 PM