OpenWrt/ImmortalWrt
固件选择器:https://firmware-selector.immortalwrt.org
自定义构建参考Package:https://downloads.immortalwrt.org/releases/23.05.1/packages/x86_64/luci/Packages
OpenWrt支持的设备:https://openwrt.org/toh/start
英特尔CPU性能对比:https://www.intel.cn/content/www/cn/zh/search.html
写盘相关工具
rufus(windows):https://rufus.ie
etcher(windows/linux/macos):https://etcher.balena.io/#download-etcher
diskgenius(windows):https://www.diskgenius.cn/download.php
微PE(windows):https://www.wepe.com.cn/download.html
DiskImage(windows):https://roadkil.net/download.php?FileID=409&ProgramID=12
先来看一个在家庭中进行科学上网的痛点,在大部分的家庭网络中,路由器作为局域网的网关,是所有局域网设备通往互联网的出口,你家的电脑、手机、电视盒子、游戏机、vr头显等设备都通过网线或者wifi连接到了该路由器
当你用电脑访问百度的时候,数据会经过路由器转发到互联网,百度会将数据返回给你,同样会经过路由器转发到你的电脑
当你用手机访问谷歌的时候,数据同样会经过路由器转发到互联网,但由于谷歌被墙了,数据包根本就到不了谷歌服务器,也就无法正常访问了,此时可以在手机上运行v2ray、clash或者小火箭等代理工具,访问谷歌的数据会先经过代理工具加密,再由代理工具将加密后的数据发给节点服务器,由于该节点没有被墙,所以可以正常访问,节点收到你的加密数据后会进行解密,获取到你的意图是访问谷歌,于是会帮你访问,由于节点都是国外的服务器,所以没有墙的阻挡,可以正常访问谷歌,当节点收到谷歌的数据后,会将其加密再发回给你,路由器收到数据后再返回给手机,手机解密数据后,就能成功获取到谷歌的内容了,这就是通过v2ray等代理工具访问谷歌的一般流程,也就是我们常说的科学上网,俗称翻墙
此时你想用电视盒子看youtube,数据经过路由器转发到互联网,但由于youtube被墙了,数据包根本就到不了youtube服务器,需要和手机一样,在电视盒子上运行代理工具,但你发现你的盒子不支持任何代理工具,无法科学上网,也就不能访问youtube了
再假设你海淘的quest vr设备,首次使用需要联网激活,但激活的时候需要访问facebook相关网站,但这个网站被墙了,导致无法正常激活,也就无法愉快的玩耍了。
我之前分享过将手机或者电脑的科学上网环境,共享给电视盒子和vr头显这种无法使用代理工具的设备,让其也能够正常科学上网,不过都有一定的前提条件和局限性,不一定适合你
而本期介绍的软路由是一个更通用的方法,可以看到你家里所有网络设备访问互联网都会经过路由器,如果我直接在路由器上运行v2ray或者clash等代理工具,当我使用电视盒子观看youtube,数据来到路由器,会先经过代理工具加密,然后发送给没有被墙的节点服务器,节点将数据解密后,帮我们访问youtube,youtube将结果返回给节点,节点将数据加密后再发回给路由器,路由器通过代理工具将数据解密后,返回给电视盒子,这样电视盒子不需要运行任何代理工具,就能成功的访问youtube了,vr头显首次激活需要访问facebook,数据发给路由器后也会被加密处理,成功通过代理访问facebook,这样就能顺利激活设备了,你的电脑和手机也不再需要单独运行代理工具,家里的所有网络设备,只要连上路由器就能科学上网了,非常方便,像有些跨境电商的朋友需要群控上百台设备,更是需要这样的功能
遗憾的是我们在网上随便买的家用路由器并不能安装代理工具,需要使用一种叫做软路由的网络设备,软路由并不是某类具体的产品,简单理解,软路由就是可以安装软件的路由器,从形态上来讲可能都不是一台路由器,可以是一台mini pc,也可以是一台工控小主机,或者是一台闲置笔记本电脑,一块开发板,你给这些设备安装一个windows操作系统,那他就是一台电脑,你给他安装一个路由系统,那他就是一台软路由,而我们在网上随便买的路由器,功能基本上被厂商固化了,只能满足最基本的路由需求,无法自行添加新的功能,所以也叫做硬路由,但如果你买的这个硬路由能通过一些手段刷成其他路由系统,那么他的称呼就从硬路由变成软路由了
常见的路由系统有openwrt、PFsense、ros、爱快、梅林等等,关于他们各自的特点请自行谷歌了解,我们主要介绍热度最高的openwrt系统,以下简称op,op是一个开源免费的路由系统,提供了完整的路由功能,并且能安装各式各样的插件,充分定制和控制你家网络的方方面面,最主要的像是安装代理插件,实现全家科学上网,这也是本系列教程的重点,关于op的历史就不浪费时间介绍了
我们需要先确定什么设备能运行op系统,这里说的设备是指不同soc平台的嵌入式设备,主要指的是硬路由,像x86这种通用平台不需要担心这个问题,简单理解,除了电脑,你家其他所有带程序控制的设备都算是嵌入式设备,比如冰箱空调洗衣机,电视音响路由器等等,假设你有一台闲置的路由器,想知道能不能刷op,最简单的方法是直接到官网上查看,网址我会放在视频下方的说明栏,可以在这里搜索相关品牌,比如xiaomi,tp-link,华硕等等,也可以直接搜索相关路由型号,比如红米的ax6000,如果你家刚好有这台路由器,那么恭喜你,你可以给它刷入openwrt系统,但我不建议刚接触的新手就直接刷硬路由,因为硬路由的系统是安装在flash闪存里,是焊死在路由器主板上的芯片,相当于一块不可更换的硬盘,刷入op就是把原来保存在flash里的路由系统替换掉,flash有一些重要的分区,操作不当会导致设备彻底变砖,难以恢复,并且由于硬路由flash闪存容量的限制,可拓展性大大降低,而小主机的系统是安装在外置的sd卡或者U盘里,随时可以更换,所以建议新手还是买台小主机来折腾比较方便,如果列表中没有你的设备型号,也可以网上搜搜看有没有人做过适配,如果网上也搜不到那就可以放弃了,除非你有能力自己做适配,这涉及到嵌入式开发领域,需要对硬件电路有一定的了解,我对这方面不太懂,感兴趣的朋友可以自行了解,没有现成设备那就需要购买了,先明确自己的需求和预算,然后网上搜索符合预期的设备
我手上有三台设备,分别是价格250的友善nanopi r2s开发板,和价格350的红米ax6000硬路由,以及价格850的某杂牌X86小主机,这里不是广告,只是给大家做个参考,每个人对网络的需求不同,我只强调买的机器必须有两个网口以上,只有一个网口的话局限性比较大,其他性能指标按你的实际网络需求选择,我自己对网络的要求比较低,做这期视频之前,主力路由还是10年前的wifi4百兆路由器,丝毫不影响我流畅学习各种姿势,这三款机器都能跑满千兆带宽,科学上网能跑500m,具体要看你的节点速度,对我来说性能过剩了。相信对大部分普通用户也够用了,还有更便宜以及更贵的设备,主要是性能有差异,总之按需选择。
友善的r2s相信接触过软路由的朋友都不陌生,人气非常高的一块小板子,外形小巧精致,买他的原因主要就是颜值高,价格便宜,待机功耗不到2w,非常省电,两个千兆网口,一个usb2.0接口,没有内置存储,通过外置SD卡启动系统,可以说r2s就是为软路由而生的。缺点就是soc属于arm架构,不能说是缺点,只是很多软件和系统仅提供x86架构的版本,无法在arm架构的机器上运行,所以局限性比较大,但如果你只用来当路由科学上网不折腾的话足够了
红米ax6000有四个千兆网口,买他的主要原因是硬路由自带无线wifi,不需要再额外接AP,支持硬件NAT转发,待机功耗7w左右,没有usb接口,flash闪存容量为128M,这里要补充说明的是除了硬路由,其他软路由设备像是r2s一般都不会有无线功能或者无线性能很弱,需要搭配无线AP使用
至于x86平台的小主机你随便买就行了,只要有两个以上的网口就行,和什么品牌型号没有关系,和你的钱包有关系,你平时在网上看到的什么软路由J1900、N5105之类的不是指某个品牌型号,而是intel的cpu型号,比如你常听到的I5I7I9,这些主要是面向桌面级的酷睿系列CPU,而低成本低功耗的小主机市场主要用的是奔腾和赛扬系列的CPU,最常见的外观就是这种表面是一块巨大散热片的工控机,我实在是不喜欢这外形,所以买了个mini pc,小巧但可拓展性稍差,cpu型号是N100,op待机功耗7w,三个HDMI接口,三个usb3.0接口,两个千兆网口,16G内存+512G硬盘,这配置只用来跑openwrt简直是暴殄天物,我主要还有其他用途,大家买的话主要是看cpu的性能参数,可以在intel的官网做横向对比,如果只用来跑openwrt的话并不需要多高的配置,但如果你后续还想玩虚拟化all in one啥的那就另说了
设备有了,接下来就要给他安装openwrt系统了,在嵌入式领域中,安装系统通常被称为刷入固件,获取适合你设备的固件主要有三种途径,第一种方式最简单,使用网上别人编译好的op固件,他们在编译的时候会内置各种插件,你要做的就是下载他的固件,刷入之后就能直接用了,非常方便省事,但缺点也很明显,为了尽量满足所有人,作者会编译大量你可能永远都不会点开的插件,显得系统很臃肿,最重要的是刷别人的固件存在安全风险,可能夹带了私货,跑他的脚本,收集你的信息,甚至给你安装“有主机上线”也说不定,所以我不推荐这种方式,你要用的话建议找你信得过的人编译的固件,
第二种方式就是自己编译固件,你想要啥插件就编译啥,最大程度满足你的需求,编译也很简单,网上有很多教程,跟着一步步操作就行了,虽然各位前辈将编译固件的难度降低到了小白就能操作的水平,但过程还是非常繁琐的,容易打消大家的积极性。所以本教程不使用这种方式,感兴趣可以自行了解
第三种方式,也是我比较推荐的方式,直接使用官方固件,openwrt每次发布新的版本都会给所有支持的设备编译一个最小系统固件以及对应的软件源,该固件没有携带任何第三方插件,非常纯净,所以只能满足最基本的路由器功能,可以通过安装官方源里的插件添加新功能,但遗憾的是官方源有点过于纯净了,插件很少,四舍五入一下约等于没有,所以我这里推荐大家使用openwrt的分支项目,ImmortalWrt,以下简称imm,imm同样是免费开源的,与官方openwrt的主要区别在于,Imm的软件源提供了大量常用的第三方插件,并且提供了cdn加速的镜像源,可以非常方便的安装和管理插件,接下来就一步步教大家刷入ImmortalWrt的纯净op固件,配置好网络并且安装插件实现科学上网
首先进入这个网址选择对应的纯净固件,在这里选择对应的op版本,我的视频就以最新的23.05.01版本为例,实际上作为路由器应该以稳定为主,不宜追新,并且23版对比21版有个非常巨大的改变,配置防火墙的工具从iptables变成了nftables,有些插件还没有添加对nftables的支持,比如ssrp,并且已经支持nftables的插件也可能存在兼容性问题,但这已经是大势所趋了,踩到了坑再说吧,为了和教程保持一致,建议和我选择一样的版本,在这里输入你的设备型号,官方支持的设备这里都有,比如r2s,只有一个结果,下方有两个不同文件系统格式的固件,ext4和squashfs,主要的区别是squashfs格式修改的配置文件会写入到挂载的overlay分区里,而不是覆盖原来rom的文件,所以这种格式可以通过抹除overlay分区达到恢复出厂设置的效果,ext4的话没有这种机制,所以不能恢复出厂设置,按你的需求选择即可,除了使用imm预编译好的op固件,我们也可以点击这里使用网站提供的Imagebuilder在线自定义编译固件,可以在这里设置你要编译到固件里的插件,输入框里的是默认需要编译的,保证最小系统能够正常提供路由功能,一般不要去动它,除非你明确知道自己的需求,比如你确定你不需要pppoe拨号,就可以把这两个删了,不需要ipv6,就可以把ipv6相关组件删掉,如果想要添加插件,你需要先知道插件的完整包名,可以进入这个链接查看luci相关软件包,什么是luci等会再说,比如我要安装openclash,那么他的完整包名就是luci-app-openclash,将其添加到预安装列表,你可以添加多个,注意用空格隔开,下方还可以设置固件安装之后首次开机运行的脚本,比如修改lan的ip地址,设置pppoe的账号密码等等,配置好之后就可以请求构建了,这样就会利用imm的计算资源帮我们编译固件了,可以说是非常方便了,但是除非你有很多机器要定制化安装,否则我不建议使用该功能,一来是会消耗imm的计算资源,毕竟免费提供给大家用不容易,所以有能力的朋友可以给imm项目官方提供相应的支持,二来是只能添加imm软件源里有的插件,而这些插件都能在刷好纯净固件之后直接安装,没必要先编译进去,再者编译也需要时间,你还得等,也可能会出错导致编译失败,所以建议直接下载imm提供的纯净固件,编译好之后可以在这里查看编译过程中的日志输出,在下方下载刚才生成的自定义固件
接着演示下载x86固件,目前你能买到的都是64位的cpu指令集架构,x86提供了非常多的固件类型,很多都是给虚拟机用的,我们主要看结尾是img.gz的文件,比如第一个就是,EXT4表示文件系统格式,刚才讲过与之对应的是squashfs,combined译为组合,表示内核与根文件系统都在固件里,efi是引导类型,或者叫uefi,近些年的主板都支持efi引导,后面的img就是固件的格式,gz就表示这是一个压缩文件,这是我们需要的,点击下载,下方还提供了非efi引导的固件,也就是传统的Legacy引导,如果你的主板不支持efi引导的话就刷这个,不确定的话也可以直接刷这个,具体区别请自行谷歌,再下方的话就是squashfs的文件系统,也就是支持恢复出厂设置的格式,按你的需求选择,同样squashfs也提供了非efi的Legacy引导固件
最后再来看下硬路由红米ax6000,有三个不同的layout,区别是flash分区布局不同,这些是硬路由刷机才有的选项,bootloader在引导系统的时候需要根据分区表加载内核,原厂uboot和第三方uboot使用的固件分区布局有区别,乱刷会导致系统无法启动,具体请参考你设备对应的刷机教程选择合适的固件,由于每款硬路由的刷机方式都不太一样,教程不通用,而且我对嵌入式也不太懂,就不演示了,请自行参考网上教程,注意刷硬路由一定要谨慎操作。
有了固件之后,接着就需要给对应的机器刷入固件了
刷固件其实就是一个文件拷贝的过程,img固件里面就是一个完整的openwrt系统,我们要做的就是将img文件的内容完整的拷贝到你的u盘或者sd卡里,这个操作也叫写盘,arm小主机一般都是使用sd卡当作硬盘,而x86小主机可以在机器内部安装硬盘,也可以通过修改启动引导用U盘当作系统盘
把固件写入到u盘或者sd卡方法有很多种,我这里汇集了常见的写盘工具,首先最推荐的就是这个rufus,非常小巧,只有1.4m大小,不过只支持windows,下载这个便携版,操作也非常简单,先以arm小主机r2s为例,将你的sd读卡器插入电脑的usb接口,软件会自动识别,然后将你需要刷入的固件拖入软件界面任意位置,可以直接拖入gz压缩包文件,无需解压,选择r2s的固件,然后直接点击开始,注意确认设备是不是你插入的sd卡,里面的分区信息和数据全部都会被抹掉,注意提前做好备份,等待进度条走完之后就刷入成功了,此时你的sd卡里面就有一个openwrt的操作系统了,可以说是非常简单,接着你只需要将写好系统的sd卡插入r2s,通电开机,就会自动启动openwrt系统了,虽然没法接显示器,但相信我openwrt已经运行了,有些朋友可能会担心sd卡影响系统运行速度,这个不用担心,开机后系统会被加载到内存里运行,不是运行在sd卡里,除非你要进行高强度的文件读写操作,否则是不会影响系统运行速度的
x86写到U盘也是同样的写入方式,由于rufus只支持windows,这次我换个写盘工具,如果你是macos或linux的用户,可以使用这个工具,下载这个免安装便携版,打开之后先选择要刷入的固件,这个工具需要先解压,以这个x86固件为例,选中刚才解压的img文件,选择目标磁盘为你插入的u盘,点击烧录,等待完成即可,这样就完成了x86的openwrt系统盘制作,接着拔掉u盘,插入到你的x86小主机上,通电开机,如果你的主机里没有硬盘安装了其他系统,那么会直接进入openwrt系统,如果硬盘安装了其他系统,则需要进入bios修改启动引导顺序,给小主机连上键盘和显示器,通电开机之后不停的按键盘上的delelt键,直到出现类似这样子的bios界面,也可能不是按delet键进入bios,具体请搜索你的主板品牌或联系商家,使用键盘的方向键,来到boot标签页,找到boot option 1,默认第一启动项是hard disk,也就是硬盘,我的硬盘里装了一个win11的系统,所以开机后会默认启动windows,回车进行修改,切换到usb设备,这样的话第一启动项就是安装在u盘里的openwrt系统了,根据不同主板的提示,我的是按f4保存并退出,有些主板是按f10,此时就会进入gurb引导界面,然后会自动加载openwrt系统,系统启动十秒左右就加载完成了,按下回车键,可以进入命令行操作,比如输入ip a查看网卡信息,imm固件默认的lan口ip地址是192.168.1.1,确认可以正常进入系统之后,就可以拔掉键盘和显示器了,下次启动主机也会优先加载u盘里的系统,不需要每次开机都修改启动项
本来我还录制了将u盘里的固件直接写入到内置硬盘,以及直接在内置硬盘里安装多个系统切换使用的教程,但发现本期时长太持久了,我怕大家受不了,所以就剪掉了,以后再单独出一期
接下来正式开始配置openwrt,希望你已经看过上期视频的家庭网络速通视频,相关概念已经有所了解了,先来回顾上期视频的家庭网络拓扑,
你在运营商拉了一条宽带,他会给你分配一个光猫,一般来讲你会单独再买一台路由器,使用网线将路由器的WAN口与光猫相连,路由器通过pppoe拨号获取运营商分配的公网IP,假设为2.2.2.2,也可能是光猫负责拨号,这种情况下路由器会通过dhcp获取光猫分配的内网ip,假设为192.168.0.2,总之不管怎样,你的路由器WAN口会获取到一个ip,除了wan口,路由器还有多个颜色一样的LAN口,为了让大家思路清晰,我们需要单独提取出这4个lan口,把它当作一台交换机,并且和路由器这个虚拟的网口建立了连接,路由器连接交换机的这个网口有一个ip地址,假设为192.168.1.1,这个是路由器的内网IP,访问这个ip可以进入路由器的管理界面,同时也是你家里整个局域网的网关ip,你家里所有的网络设备通过网线或者wifi的方式连接到这台交换机,
这是我们刚才刷入了openwrt系统的软路由,目前没有连接任何设备,先将你电脑的网线从硬路由的网口拔下来,然后跟着视频演示进入网络设置页面,目前电脑网口显示断开的状态,没有连接网络
现在需要将电脑的网线插入到软路由的lan口,
区别于硬路由通过颜色区分wan口和lan口,openwrt的wan口和lan口是通过系统软件定义的,按eth01234来表示物理网口的顺序,本视频用的固件默认使用eth0作为lan口,eth1作为wan口,所以如果你的软路由标注了eth0是哪个接口,直接插上去就行了,如果没标的话,那就插第一个口或者倒数第一口,其中有一个绝对是lan口,
先进入网卡的ipv4属性,确保电脑的网卡是自动获取ip地址,然后将电脑的网线插入软路由的第一个网口,电脑显示正在识别,说明正在通过上期讲的dhcp,从该网口获取ip地址,本教程使用的固件lan口默认会提供dhcp服务,如果插对了网口,一般十秒内就可以获取到ip地址,但我这里等了几十秒,结果返回了未识别的网络,很明显没有获取到ip地址,能确定这个接口不是lan口,双击这个接口做进一步验证,可以看到ip地址为169.254.x.x,为什么是这个地址上期讲过就不再啰嗦了,因为我这是个系列教程,建议大家连接着,之前讲过的内容我就会提一嘴,知道插错网口就可以换另一个网口了,此时这个网口就成功获取到了dhcp分配的ip地址,说明插对口了,这个默认网关就是软路由的管理地址,使用浏览器打开,默认用户名是root,密码为空,点击登陆,此时就进入了openwrt的luci界面了,luci就是openwrt的web管理界面,可以直接在浏览器中配置路由器,不需要接显示器到命令行去敲指令
openwrt的功能很多,现在主要任务是先把它用起来,首先第一步,把ipv6关闭,因为ipv6在透明代理中会出现各种奇怪的问题,现在还不是解决它的时候,等我先把各个代理工具先讲一遍再说,来到接口页面,删除wan6接口,然后编辑br-lan接口,来到dhcp服务器,跟着视频演示操作,将lan口的ipv6所有服务全部禁用,点击保存,再来到dhcp高级设置,勾选过滤ipv6解析,最后点击保存并应用,这样设置之后,局域网其他设备就不会被分配ipv6地址了,接着给root用户设置一个密码,目前不涉及公网访问,所以我就设置的简单一点,来到设备页面,由于我的主机只有两个网口,不清楚多余的网口是否会自动桥接,如果你有两个以上的网口,并且只使用了eth0和eth1,需要把剩下的网口全部桥接到br-lan,点击br-lan右侧的配置,网桥端口这里把除了wan口的eth1,剩下空闲的网口全部桥接上,点击保存,这样剩下的网口都能用了,这里说的网桥其实就是交换机,交换机就是有多个接口的网桥,桥接的操作就相当于给交换机添加网口,至于交换机有什么作用,可以回看上期视频,lan口这边暂时配置好了,接下来配置wan口,
将你家硬路由wan口的网线拔下来,插到软路由的wan口上,也就是eth1,此时软路由就和光猫建立了连接,wan口默认的协议是dhcp客户端,也就是wan口会找光猫获取ip地址,稍等片刻,wan口成功从光猫获取到了192.168.1.13的ip,可以发现br-lan的网段和wan口的网段是相同的,上期讲过怎么判断是否为同一网段,此时会造成冲突,需要修改lan口的网段,点击编辑,将其改成其他网段ip,比如192.168.2.1,保存并应用,此时会弹出警告,提示我们修改了lan口ip为192.168.2.1,而当前的luci管理网址是192.168.1.1,修改之后会导致当前的网页丢失,如果90秒内没有访问新的luci管理网址,他就认为你改了之后进不来了,配置将会回滚到修改之前,相当于给了你一剂后悔药,如果你不想要这剂后悔药,可以点击红色的应用并保留设置,我这里就点击连接丢失后应用还原,此时会等待90秒,如果你没有访问新的luci管理地址,90秒后会自动回滚回192.168.1.1,我们可以看看电脑网卡当前获取的ip,已经切换到192.168.2.1了,可以访问这个新的管理地址,当你访问之后,openwrt确认你可以正常进入新的管理地址,就不会执行回滚操作,回到接口页面,此时lan口和wan口就不是同一网段了,接着尝试访问百度,我可以正常访问,但是你很有可能不能访问,因为光猫有桥接和路由两种连接模式,桥接模式相当于光猫将光纤里的光信号转换为电信号之后,直接发给路由器,路由器要负责pppoe拨号,很显然我们刚才没有操作拨号这一步,如果你家的光猫是桥接模式,那肯定不能上网,而我能正常访问百度,说明我用的不是桥接模式,而是路由模式,路由模式相当于光猫将光信号转换为电信号之后,自己还得进行pppoe拨号获取公网ip,然后在lan口提供dhcp服务,路由器连接了光猫的lan口,通过dhcp获取到光猫分配的ip192.168.1.13,所以我的软路由不用拨号就可以正常上网,但此时有个问题,根据上期讲过的内容,内网设备访问互联网会进行nat处理,电脑访问百度的数据来到软路由,经过nat处理后源ip被替换为软路由的wan口ip,软路由将数据从wan口发到光猫,此时又会进行nat处理,将源ip替换为光猫通过pppoe拨号获取到的公网ip,再将数据发送到互联网,返回的数据会进行相反的操作,可以发现我们的数据包进行了两层nat处理,也就是传说中的双重nat,会有一定的性能损耗,如果由路由器负责拨号的话,就只需要进行一次nat了,所以建议将光猫改成桥接模式,只负责信号转换,路由器负责拨号,你可以联系运营商客服修改,或者自己想办法登陆光猫的超级管理员后台自行修改,如果实在改不了也没关系,不影响接下来的内容
此时我将连接模式改成桥接,另外你可以在这里彻底禁用运营商下发ipv6地址,点击保存,接下来我的路由器wan口就需要负责拨号了,点击编辑,将协议改成pppoe,点击切换协议,在这里输入你家宽带拨号的用户名和密码,点击保存,然后应用,稍等片刻刷新网页,不出意外的话你的wan口将会获取到公网ipv4地址,或者经过运营商级别nat的大内网ip地址,以及运营商下发的ipv6 pd,目前我们不需要ipv6,刚才在lan口已经关闭了ipv6,所以局域网里的其他设备不会分配到ipv6地址,如果你有强迫症,看着这个心烦,可以点击wan口编辑,进入高级设置,将获取ipv6地址禁用,保存应用之后,这个wan6的虚拟接口就会消失了,另外还剩下两个内网ipv6地址,这个无关紧要,你非要关闭的话,lan口可以在全局网络选项中清空这个ula地址,这样lan口的ipv6就没了,wan口可以在光猫里改成只下发ipv4,然后重启wan口,这样wan口的ipv6也没有了
现在你的电脑应该就能正常访问百度了,此时又有一个问题,现在你家的硬路由被换下了,而这个软路由无法发射wifi,并且像r2s只有两个网口的话,没法再接入新的设备了,也就相当于现在只有你的电脑能上网,你家其他设备全断网了,所以我们还需要把你家的硬路由重新利用起来,把它当作一台带wifi功能的交换机使用,也就是大家常说的无线ap,如果以下操作觉得难以理解,可以回看上期视频,重点关注交换机的作用,重新通过网线或者wifi连上你家的硬路由,进入路由器的管理页面,我这里以小米路由器为例,小米路由器支持将工作模式改成有线中继,在上网设置下方找到工作模式切换,选择有线中继模式,点击下一步,根据提示将软路由的lan口连接到硬路由的wan口,点击下一步,提示设置成功之后这台路由器就变成一台无线ap了,记住这台路由器的管理地址已经变更为了192.168.2.191,如果你的路由器没有中继功能,也可以参考接下来的操作实现相同的效果,将软路由的lan口连接到硬路由的lan口,注意是lan口连lan口,找到你路由器dhcp服务的位置,关闭它,然后将路由器的管理地址改成和软路由lan口同网段的某个空闲ip,当前软路由lan口的网段是192.168.2.1,那我就改成192.168.2.191,这样就算是配置好了,这种手动配置和中继模式的主要区别在于,中继模式的wan口也可以当lan口用,相当于wan口桥接到了br-lan加入到了交换机,而通过手动配置的方式不能把wan口当作lan口用,得空着。接下来将你家所有的网络设备重新连接到硬路由,就能恢复整个网络了
费了那么大劲把openwrt插进家庭网络中,可不是让他当个普通路由器,来到系统下的软件包,在这里可以安装你需要的各种插件,imm给我们提供了非常丰富的软件源,并且不需要科学上网环境就能安装,先点击更新列表,确保输出结果和我一样,没有报错,如果报错了建议再尝试更新,接着就可以在这里安装你想要的插件了,先来换个主题,搜索argon,这个luci-theme-argon就是大家常见的luci主题样式,点击安装,他会自动检测需要安装的依赖项,点击安装,这样就算是安装好了,刷新当前页面,就会切换到新的主题样式,还有另一个必装的插件,ttyd,可以直接在网页端使用ssh命令行,搜索出了三个结果,第一个结果是ttyd的主程序,从名称中可以看出他和luci界面没有关系,第二个结果是luci开头的,说明他是基于luci界面的插件,安装后会有图形化界面,第三个是zh-cn的中文汉化包,安装他之后ttyd的luci将会是中文界面,我们可以直接安装中文包,可以看到这里会有相应的依赖项,需要依赖luci-app–ttyd,而这个luci-app-ttyd又会依赖ttyd,当我们安装这个中文包的时候就会自动安装这些依赖,可以看到我们安装中文包之后上面的依赖也就自动安装了,安装其他插件也是类似的方式,刷新当前页面,先观察重启下面没有插件了,刷新网页之后多了一个终端,这个就是刚才安装的ttyd插件,可以在这里执行命令行指令,回到软件包,接着再来安装三款科学上网插件,也是之后的教程中主要介绍的三款,你可以按自己的喜好单独安装,首先安装openclash,可以看到这个的依赖项比较多,点击安装,像这种需要安装较多依赖的情况可能会报错,这是前端浏览器报错,一般不会有影响,后台还在继续执行安装操作,稍等片刻我们可以刷新页面重新搜索,可以看到其实已经安装上了,如果想要卸载的话也很方便,点击已安装,搜索openclash,点击移除,默认会把之前的依赖一并移除,这样就卸载了,到时候想用的时候再安装就行了,接着安装第二款插件,passwall,同样直接安装中文包就行了,安装的时候可以不用等当前网页返回,会在后台自动安装,接着安装第三款,使用singbox内核的homeporxy,安装中文包,刷新当前网页,可以看到多了一个服务标签页,刚才安装的三款插件都在里面了,如果刷新后没有看到,可以退出luci重新登陆,三款插件的主界面如视频所示,每款都需要单独花篇幅讲解,本期教大家先按默认配置用起来再说,首先演示passwall,需要先添加节点,如果你是自建节点,来到节点列表,选择通过链接添加节点,将你的节点分享链接粘贴到输入框,点击添加,这样就成功导入到节点列表,如果你是机场用户,来到节点订阅,随便给个备注,在订阅网址这里添加机场的订阅,如果你还没有的话,可以使用本频道推荐的专线机场,这是我的推广注册链接,这家我已经推荐大半年了,高速稳定,表现一直很不错,套餐价格如图,各套餐除了流量不同没有其他区别,全节点解锁chatgpt、奈飞等流媒体,所有节点都是一倍率没有套路,有需要的朋友可以试试,登陆之后点击这里复制你的订阅地址,将其粘贴到这里,如果你的机场订阅链接证书过期了的话可以开启允许不安全链接,防止订阅失败,也可以开启自动更新订阅,会定期刷新节点,不过像这种专线机场一般几个月都不会变动的,确定之后点击保存应用,然后点击手动订阅,订阅完成之后回到主界面,开启主开关,tcp节点按需选择,udp节点选择与tcp相同,点击保存并应用,正常情况下稍等片刻就会显示运行,但我这里等了许久还是没有运行,此时查看日志,发现有提示说依赖未安装,但实际上我们已经安装了,建议重启路由器让其生效,重启之后可以看到passwall没有相关提示了,此时就能正常运行了,测试链接都能通,尝试访问谷歌,没有问题,如果不通的话建议检查你的节点是否正常,此时你家里所有网络设备无需运行代理工具,都能通过软路由科学上网了,关掉passwall只需要取消勾选主开关,然后保存应用即可,这样就能关闭了,出现任何问题可以查看日志信息,具体更详细的操作以后再讲,接着演示homeproxy,注意确保你已经停止了passwall,同一时间只能运行一款科学上网插件,否则会造成冲突,先进入节点设置,同样需要先导入节点,如果是自建节点,可以点击这里导入节点分享链接,如果是机场用户,点击订阅,将机场订阅地址粘贴到这里,点击加号可以继续添加其他订阅地址,点击保存当前设置,然后点击更新订阅,提示完成之后回到节点列表,可以看到节点已经导入了,回到主界面,选择要使用的节点,点击保存应用,此时这里会从未运行变成绿色的运行中,接着就可以正常科学上网了,最后演示openclash,回到主界面,将主节点改成禁用,点击保存应用,此时就会关闭homeproxy, 来到openclash,刚安装的默认没有内置clash内核,来到插件设置,选择版本更新,需要先下载一个内核,以tun内核为例,点击检查并更新,来到日志页面,可以看到访问失败,报错无法链接,因为现在是没翻墙的情况,这个github的下载地址被墙了,此时如果想下载内核,你可以先使用passwall或者homeproxy开启代理,等下载完成后再关了,或者根据他这里的提示进入复写设置,更换一个cdn的下载地址,这里提供了多个cdn地址,你可以挨个试试,点击应用配置,接着重新尝试下载内核,此时提示下载成功,回到内核界面,可以看到已经有内核了,来到配置订阅界面,点击添加,随便给个备注,将你的节点分享链接或者机场的clahs订阅地址粘贴到这里,如果你用的是节点分享链接,那就必须开启订阅转换,点击保存配置,再点击更新配置,回到日志页面,提示openclash启动成功,回到主界面,确实成功运行了,尝试访问谷歌,没有问题,clash可以方便的使用webui切换节点等操作,你可以将这个网址存为书签,可以在主界面下方关闭openclash,此时没有运行任何科学上网插件,也就无法进行科学上网了
--------------------------------------------------------------
最详细的旁路由新手配置指南,什么是旁路由?旁路由解决了什么问题?又带来了什么问题?为什么旁路由存在争议?旁路网关、透明网关、透明代理、网关模式、网关代理和旁路由的关系
参考文档:https://cloud.tencent.com/developer/article/2036952
上期我们从零开始上手软路由,并且通过主路由和二级路由的模式,实现家里所有设备科学上网,但此时有几个问题,如果我只想让手机能科学上网,其他设备全都不能科学上网,或者只想让手机不能科学上网,其他设备全都能科学上网,这种情况需要你去调整代理工具的分流配置,每个代理工具的设置方式都不太一样,比较繁琐,并且你每次改动主路由的配置都可能造成全家设备短暂断网,也可能改崩了导致长时间断网,另外如果你的软路由需要运行很多插件,相互之间可能有冲突导致工作不稳定,这些都是负责连接互联网的主路由应该避免的问题
有没有这么一种方式,不改变你家里原来的网络结构,主路由只负责他原本的工作,把刷了openwrt系统的软路由连接到你家里的主路由,科学上网等额外的工作交给这台软路由处理,假设这台是家里长辈的手机,平时只是刷刷视频聊聊天,不需要科学上网,那么他就直接经过主路由访问互联网,避免改动软路由配置导致网络不稳定的情况
再假设这是你的电脑,要经常上外网学习新的姿势,数据首先会交给这台软路由,软路由收到数据后使用代理工具进行加密再发送给节点,数据来到主路由,主路由再将数据转发给节点,节点解密数据后帮我们访问谷歌,谷歌返回的数据会先经过节点加密,然后转发回主路由,主路由再将数据转发给这台软路由,通过解密后,将数据返回给电脑,这样电脑就成功访问了谷歌,这种在主路由旁边再接一台负责科学上网的路由设备叫旁路由,需要注意的是在公共场合随地谈论旁路由可能会招来嘲讽和排斥,因为旁路由的用法或者称呼存在争议,
要解释为什么存在争议我们先搭建好再来细说,希望你已经看过第一期的家庭网络速通视频,相关概念已经有所了解,
先来回顾上期视频创建一个最常见的家庭网络拓扑,你在运营商拉了一条宽带,他会给你分配一个光猫,一般来讲你会单独再买一台路由器,使用网线将路由器的WAN口与光猫相连,路由器通过pppoe拨号获取运营商分配的公网IP,假设为2.2.2.2,除了wan口,路由器还有多个颜色一样的LAN口,为了让大家思路清晰,我们需要单独提取出这4个lan口,把它当作一台交换机,并且和路由器这个虚拟的网口建立了连接,路由器连接交换 机的这个网口有一个ip地址,假设为192.168.2.1,这个是路由器的内网IP,访问这个ip可以进入路由器的管理界面,同时也是你家里整个局域网的网关ip,你家里所有的网络设备通过网线或者wifi的方式连接到这台交换机,路由器开启了dhcp服务,负责为每一台设备分配ip地址网关等信息,这是大部分家庭的网络拓扑,
这是通过上期讲的方式刷入了openwrt的软路由设备,接下来需要将它配置成旁路由
首先需要确定当前你家的局域网网段,跟着视频演示来到网络设置,查看当前电脑的ip地址,可以看到我家的网段为192.168.2,默认网关是192.168.2.1,你家可能是其他的,记住他,然后将电脑连接主路由的网线拔下来,插到刚刷好openwrt的软路由Lan口上,根据上期视频讲的,要么插第一个口,要么插倒数第一个口,总有一个是lan口,由于lan口默认开启了dhcp服务,稍等片刻电脑通过dhcp获取到了软路由分配的ip地址和网关,如果你获取到的IP是169.254.x.x说明插错口了,换另一个,这个默认网关就是软路由的ip,使用浏览器访问,默认密码为空,先随便设置一个密码,来到接口页面,将默认的这两个wan口删掉,编辑lan口,lan口默认协议是静态地址,也就是需要自己手动配ip地址网关等信息,不通过dhcp自动获取,设备这里默认是br-lan的网桥设备,上期说过网桥就相当于交换机,至于交换机的作用可以回看第一期,有些朋友可能觉得直接用下面的eth物理网口效率更高,我没有做过测试,但理论上来讲差距微乎其微,不用过于纠结,按默认即可,ipv4地址改成和主路由同网段某个空闲ip,刚才查到主路由的ip是192.168.2.1,为了方便记忆,我这里改成192.168.2.2,网关改成主路由的ip,192.168.2.1,因为这台旁路由要上网的话同样得找网关,也就是主路由,在高级设置里将dns服务器同样设置为主路由,我们需要让旁路由提供dhcp服务,默认已经开启了,不要关闭,点击保存,此时的网络拓扑就是旁路由的ip地址为192.168.2.2,网关为192.168.2.1,并且提供了dhcp服务,来到设备标签页,可以看到我有eth0和eht1两个物理网口,本来wan口用了eth1,但是旁路由不需要wan口,刚才我们已经把wan口删了,所以eth1现在是空闲的,可以把它桥接到br-lan,相当于给交换机添加网口,多出来的这个网口可以用来接入其他设备,如果你不需要的话可以不做这一步操作,点击保存并应用,稍等片刻,我们可以通过新的ip192.168.2.2进入旁路由的管理界面,成功进入之后,接着就需要将旁路由连接到主路由的lan口,由于我刚才把两个网口都桥接到了br-lan,所以这两个网口都可以当lan口用,当然条件允许的话我还是建议你把电脑重新插回到主路由,这样连接主路由的设备互访是直接通过交换芯片,不需要经过旁路由的网桥
可以看到目前局域网里有两个提供dhcp服务的设备,存在冲突,我们需要关闭其中一个,考虑到大家用的主路由都不一样,小米、华硕、tplink等等,不一定都能手动指定dhcp的网关,所以本教程统一使用旁路由提供dhcp服务,将主路由的dhcp服务关闭,小米路由器可以在常用设置下的局域网设置里关闭dhcp,其他品牌的话请自行上网查询,现在局域网里就只有旁路由提供dhcp服务了
连上主路由后,这台旁路由应该就能正常上网了,简单测试一下,来到网络诊断,ping一下baidu试试,能通就说明没问题,接下来给旁路由安装上期讲过的几个插件,具体详细的操作步骤建议回看上期视频,我这里就快进跳过不浪费大家时间,另外passwall有些朋友反馈缺少依赖,我试了一下确实少了,上期视频演示的时候还有这个依赖,不清楚发生了什么,先不管了
现在我已经通过上期讲的方法将节点导入到了科学上网插件里,界面显示运行中,此时这台软路由已经可以科学上网了,刚才我们已经关闭了主路由的dhcp服务,现在是旁路由负责分配ip信息,默认情况下,谁是dhcp服务器,网关和dns就是谁,所以电脑的网关应该是ip地址为192.168.2.2的旁路由,也就是电脑访问谷歌的数据会交给旁路由处理,旁路由会使用代理工具对数据进行加密,并且以他的名义转发给主路由,主路由再转发给互联网上的节点服务器,节点服务器会帮我们访问谷歌,并将谷歌返回的数据加密后发回给我们,主路由将数据返回给旁路由,旁路由经过解密后,再将数据返回给电脑,这样电脑就能成功访问谷歌了
但此时我的电脑并不能访问谷歌,可以看到默认网关为2.1,这是主路由的ip地址,也就是电脑访问谷歌的数据直接发给了主路由,并没有经过旁路由,因为虽然主路由已经关闭了dhcp,但之前分配的ip租约还没到期,电脑没有主动释放这个ip,所以用的还是主路由下发的ip信息,此时可以先将网卡禁用,稍等片刻后再启用,手动释放掉主路由分配的ip信息,这样就会重新通过dhcp获取ip地址,由于现在局域网中只有旁路由开启了dhcp服务,很显然会由旁路由负责分配ip,可以看到网卡刚获取到ip,谷歌网页就进入了,说明我们已经成功通过旁路由实现了科学上网,再来验证一下,可以看到默认网关,dhcp服务器,dns服务器都是192.168.2.2,也就是旁路由的ip,此时你家局域网里所有的网络设备,只要是通过dhcp自动获取ip地址,都能通过旁路由进行科学上网了,比如我这台手机,尝试访问谷歌,发现无法访问,原因刚才也说过,dhcp租期还没到,用的还是主路由分配的ip信息,默认网关还是192.168.2.1,我们只需要断开wifi重连即可,此时的网关和dns都是旁路由的ip了,再来访问谷歌,直接就进去了,可以看到这种方式不需要改动你家原来的网络结构,只是在旁边接一台路由器就能解决科学上网问题了,但现在并没有解决我们刚开始提到的问题,也就是让某些设备不经过旁路由,比如家里的长辈不需要科学上网,就直接走主路由,那长辈的手机默认网关应该是主路由的192.168.2.1,但是现在所有的网络设备都是通过旁路由的dhcp,网关自然也就是旁路由了,除了通过dhcp自动获取ip,我们也可以手动为每台设备设置不同的ip和网关,你只需要把不走代理的设备网关改成主路由的ip就可以了,非常简单,但实际操作比较繁琐,并且像电视盒子之类的可能根本就没法修改网关,所以并不推荐这种方式
那有没有可能让dhcp服务器为不同设备分配不同网关?答案是可以的,openwrt默认使用dnsmasq提供dhcp和dns服务,他支持为不同设备分配不同网关,跟着视频演示进入dhcp静态地址分配,在已分配的租约里可以看到两台设备,分别是刚才演示的安卓手机和电脑,家里其他设备还没有找旁路由获取ip地址,因为主路由分配的ip租期还没到,你可以重新连接网线或Wi-Fi,或者直接重启主路由,让所有设备断线重连,就会重新找dhcp服务器获取ip信息,列表里也就会显示其他设备了,我这里再添加一台苹果手机做演示,此时有三台设备,假设我现在想让安卓和苹果不能科学上网,其他所有设备都能科学上网,那么只要让他两的网关和dns指向主路由,其他设备全部指向旁路由即可,先将安卓和苹果的mac地址进行静态绑定,静态绑定就是将mac地址和某个ip添加映射关系,以后这个mac地址找这台dhcp服务器要ip,都会分配固定的ip地址,点击添加,先绑定苹果手机,mac地址这里选择苹果,可以进入wifi连接中查看,这个无线局域网地址就是mac地址,我的是91结尾,也可以通过下方分配的ip地址来分辨,当前的ip地址是192.168.2.203,选中mac地址后,下方的IP地址也会自动选中当前一分配的ip 203,可以随便设置一个好记的主机名,给这个设备添加一个标签,可以随便写,假设为direct,也就是直连的意思,点击保存,接着再添加安卓手机,选择安卓的mac地址,不知道的话同样可以进入wifi连接中查看,如果你想给他分配一个好记的ip,可以在这里手动填写,比如222,填写之后按回车选中,随便给个主机名,标签同样填写direct,点击保存,跟着视频演示进入lan口的dhcp高级设置,在dhcp选项中输入tag:direct,3,192.168.2.1, 注意所有的标点符号都是英文的,意思是所有标签为direct的设备,给他分配的网关为192.168.2.1,也就是主路由的ip,其中3表示设置网关,接着再添加一条,将3改成6,6表示dns,这些都可以在官方文档中查看,这条意思是所有标签为direct的设备,给他分配的dns为192.168.2.1,其他不是direct标签的设备还是按默认的,谁提供dhcp服务,网关和dns就是谁,点击保存,然后应用,现在的情况就是安卓和苹果手机的dns和网关是主路由,电脑和其他所有网络设备的dns和网关都是旁路由,重启电脑的网卡,可以看到网关和dns都是旁路由的ip 192.168.2.2,可以正常科学上网,手机现在还可以正常科学上网,说明网关还是旁路由,接着重新连接wifi获取ip信息,此时可以看到网关和dns变成了主路由的ip192.168.2.1,此时再来尝试访问谷歌,就无法访问了,数据不会经过旁路由,只能访问没有被墙的网站
回到dhcp静态分配页面,刚才演示的是小部分设备直连,大部分设备走代理,接下来演示小部分设备走代理,大部分设备直连的情况,假设我现在只想让安卓手机走代理,其他设备全部走直连,也就是只让安卓手机的网关和dns分配到旁路由,其他设备全部分配为主路由,点击编辑,将安卓的标签删掉,改成proxy,也就是代理,注意这个只是为了方便我们区分,实际上可以随便写,点击保存,回到lan口的dhcp高级设置,将刚才添加的dhcp选项删掉,输入tag:!proxy,3,192.168.2.1,意思是如果标签不是proxy的设备,就给他分配网关为192.168.2.1,我们只设置了安卓手机的标签为proxy,也就是除了安卓手机,其他设备的网关都会分配主路由的ip192.168.2.1,再添加一条dns,点击保存,然后应用,现在电脑的网关是旁路由的2.2,重启网卡,可以看到默认网关和dns都变成了192.168.2.1,接着看看标签为prxoy的安卓手机,现在的网关还是之前分配的主路由ip,重连wifi,此时这台设备的网关和dns就变成了旁路由,可以正常访问谷歌
这样就能非常方便的实现按设备分配网关了,此时就算是配置好了
可以看到旁路由实现起来确实更简单,配置也更灵活,貌似完胜上期讲的主路由方式,事实真的是这样吗?接下来给大家泼泼冷水
现在我已经将电脑恢复到网关指向旁路由,此时电脑可以正常访问谷歌, 但他居然神奇的无法访问百度,同样可以正常访问推特,却无法正常访问知乎,也就是可以正常翻墙,但不需要翻墙的网站却无法访问,原因是我偷偷开启了防火墙界面里的丢弃无效数据包,默认情况下是没有开启的,也就是说我们访问百度的流量被旁路由判定是无效数据包,于是被直接丢弃了,要解释这种现象需要稍微讲细一点
假设电脑已经通过dns获取到了百度服务器的ip为6.6.6.6,在正式给百度发送http数据之前,电脑需要先和6.6.6.6进行三次握手建立tcp连接,首先由电脑发起建立连接的请求,由于目标ip6.6.6.6不属于192.168.2的网段,所以数据会交给网关,也就是旁路由,旁路由会记住你向6.6.6.6发起了建立连接的请求,由于这是国内的ip地址,代理工具通过分流判断不需要走代理,于是旁路由直接将数据转发给了他的网关,也就是主路由,接着再由主路由帮忙转发给百度,注意路由器会先进行nat处理,将wan口的公网ip替换掉数据包里的源IP,这是第一期讲过的内容,百度收到数据后,会回复我们同意连接,数据来到主路由,主路由会再进行nat处理,将公网ip替换回原来的内网ip,也就是电脑的ip,由于主路由和电脑在同一网段,所以数据会直接发给电脑,注意此时数据包没有经过旁路由,电脑收到数据后,发现是6.6.6.6返回的同意连接,于是会回复确认并开始发送数据,同样由于6.6.6.6不属于192.168.2的网段,所以数据会交给网关,也就是旁路由,此时就出现问题了,旁路由记得你发起了建立连接的请求,但是没有收到666返回的同意连接,因为主路由将同意连接的数据包直接转发给了电脑,并没有经过旁路由,现在电脑又直接发起接下来的流程,这个数据包就会被旁路由判定为无效数据包,由于我们勾选了丢弃无效数据包,所以电脑也就无法正常访问不需要被代理的网站了,这种往返数据包经过不同路径的情况叫做非对称路由,虽然我们只要不勾选丢弃无效数据包就不会出现这种情况,但非对称路由很有可能造成其他连接状态追踪问题,毕竟都已经被判定为无效数据包了
将这个取消勾选就能恢复了,另外有些朋友问需不需要关闭这个syn泛洪防御,有些教程说这个会有影响,其实关不关都无所谓,这个选项只是防御进入软路由本身的流量,不影响你的数据转发,另外这个功能的保护很有限,真的有人要ddos你可不是这个简单的开关就能防住的,更何况默认情况下根本就没有暴露在公网,所以开或关都无所谓,点击保存并应用,此时就能恢复访问国内网站了,同时也能正常科学上网,
除了这种情况,还有可能出现通过网线连接的设备可以正常上网,但是通过wifi连接的设备同样只能翻墙,不能访问国内网站,也是类似的原因,但这种情况和主路由也有关系,有些品牌的路由器会将网桥互相访问的数据交给iptables处理,也就是iptables会处理局域网设备之间互访的数据,iptables是用来配置数据包该怎么走的工具,比如数据包是否需要进行nat处理就是通过他来进行配置,防火墙主要也是通过它配置,我们当前用的openwrt版本已经把iptables改成nftables了,不过作用是一样的,
假设此时我通过wifi访问百度,wifi也桥接在交换机上,但由于wifi并不是基于以太网,需要先转换为以太网的帧格式才能交给旁路由,可能是cpu也可能是其他硬件进行转换处理,不管怎样数据都会经过操作系统虚拟的网桥,由于启用了刚才说的功能,此时会交给iptables处理,iptables会判断数据包是否需要进行nat,但是发现目标是旁路由,于是不会进行nat处理,此时需要注意,iptables会记录这个数据包的ip端口协议等五元组信息,之后再遇到这个五元组的数据包,为了提升效率,不再进行判断,直接采取和之前相同的策略,也就是不进行nat处理,数据来到旁路由,代理工具根据分流规则发现不需要代理,于是不对数据包进行处理,直接转发给主路由准备发往互联网,此时又会进入iptables处理,由于数据包的源ip和源端口,目标ip和目标端口以及协议都没有改变,和之前保存的五元组匹配上了,于是沿用之前的nat处理方式,也就是不进行nat,数据包直接转发到互联网,很显然,源ip是内网ip,数据包会被互联网上的路由丢弃,也就无法正常访问了
那为什么通过网线连接又可以正常访问呢?因为硬路由都有专门的以太网交换芯片来处理有线设备的连接,也就是从一个网口发给另一个网口的数据根本就不需要经过操作系统虚拟出来的网桥,电脑发给旁路由的数据没经过网桥,所以可以正常进行nat
要解决这个问题可以参考这篇文章,但文章中提供的方法可能并不适合你,最简单的方法就是开启这里的ip动态伪装,英文翻译为Masquerade,二次中文翻译为假面舞会,简称NAT,没错,这玩意就是干nat的活,当开启之后,wifi数据经过iptables被记录为不需要进行nat,接着数据来到旁路由,代理工具根据分流规则发现不需要代理,于是不对数据包进行处理,直接转发给主路由,但是在转发之前,由于开启了lan区域的ip动态伪装,所以会进行nat处理,将源ip替换为旁路由自己的ip,也就是192.168.2.2,然后转发给主路由,由于源ip改变了,不匹配之前的五元组,对于主路由来说就是一个全新的数据流,于是会进行nat判断,发现目标ip是不同网段,于是对源ip进行nat处理,将其转换为wan口的公网ip,再将数据发送到互联网,此时就能正常访问了,
另外即使我开启了丢弃无效数据包,无法访问国内网站,但如果我开启ip动态伪装,又能够正常访问国内网站了,因为这样就相当于将非对称路由强制通过nat转换为对称路由,不会出现无效数据包的问题,这里就不再浪费时间演示过程了,如果不理解的话自己慢慢缕一缕。
但开启ip动态伪装之后,数据会经过了两次nat处理,对性能有一定的影响
除了以上问题,还有非常头疼的ipv6问题,由于ipv6并不是通过dhcp下发网关,所以如果你的电脑分配到了ipv6地址,默认网关一般都是主路由,如果你要访问的网站刚好支持ipv6,就会直接通过主路由发到互联网,于是就出现了无法翻墙的情况,另外即使是主路由也会由于ipv6配置不当造成无法翻墙的问题,这也是为什么我一开头就让大家关闭ipv6,目前来看除了小部分用户有公网访问的需求,大部分用户并不需要ipv6,这玩意不需要就没必要开启,并不是说给了你你不用就有什么损失,相反关了会省去很多烦恼。关于ipv6的话题我们以后再讲
总之由于旁路由并不是一种标准的网络拓扑结构,可能会出现各种奇奇怪怪的问题,并且随着网络结构越复杂,出问题的概率越大,这应该就是旁路由存在争议的主要原因
但是有争议并不代表不能用,大部分朋友的家庭网络结构很简单,那么旁路由就够了,方便省事,配置得当也不会出现什么问题,但如果你家里是一个小型的idc,甚至还要跑BGP,那旁路由肯定就不适合你了,所以主要还是看每个人的需求,没必要一棒子打死
另外几乎所有在非路由系统上跑v2ray或者clash给其他设备做透明代理的方法,都和本期讲的旁路由是同一种东西,包括一些官方文档,只要你将网关指向了同网段里的其他的设备,而这个设备的网关又指向了主路由,这种用法就是旁路由,只是叫法不同,可能叫旁路网关、透明网关、透明代理、网关模式、网关代理等等
像是我之前发的用安卓手机,windows和linux共享科学上网环境本质上也是旁路由,还有人用apple tv共享,以及用mac mini共享,比如给王思聪装服务器的ak,用的就是surge的网关模式,这些也都是旁路由的用法
总之你的设备只要能开启ip转发,那就有成为旁路由的潜质,如果说是这种网络结构要排斥的话,那以上方法都属于旁路由,都应该被排斥,那样的话就只剩下买软路由了,可能观众也会有人排斥旁路由。
---------------------------------------------------------------------------------------------------
Windows、Linux、Mac充当软路由的方法,无需刷入openwrt,闲置笔记本电脑自带操作系统直接变身旁路由方法大全
参考视频:
软路由入门:https://youtu.be/JfSJmPFiL_s
旁路由教程:https://youtu.be/cFOob3djiOA
共享VPN方式大全:https://youtu.be/GjhetHGIKLg
Windows当软路由:https://youtu.be/dpmnkKhBFtc
Android当软路由:https://youtu.be/oRyjX44Bxw4
相关链接:
Windows
RouteForwarder:https://raw.githubusercontent.com/bulianglin/demo/main/RouteForwarder/RouteForwarder.zip
V2rayN:https://github.com/2dust/v2rayN/releases/download/6.33/zz_v2rayN-With-Core-SelfContained.7z
Linux(图形化)
开启IP转发(永久生效):echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
clash for windows:https://archive.org/download/clash_for_windows_pkg
Mac
开启IP转发(永久生效):sudo sh -c 'echo "net.inet.ip.forwarding=1" >> /etc/sysctl.conf && sysctl -w net.inet.ip.forwarding=1'
clash for windows:https://archive.org/download/clash_for_windows_pkg
Linux(命令行)
V2rayA:https://v2raya.org/docs/prologue/installation
ShellClash:https://github.com/juewuy/ShellCrash
OpenWrt(虚拟机)
固件下载:https://firmware-selector.immortalwrt.org
修改默认IP:/etc/config/network
重启网口:/etc/init.d/network restart
本期教大家使用闲置的笔记本电脑或者小主机充当软路由,实现全家设备科学上网,注意不是刷成openwrt系统,而是直接使用闲置设备当前的操作系统,不管原来是windows、linux还是苹果的mac系统,也不管是图形化界面还是命令行,都能通过进行简单的设置变身软路由
上期我们讲了怎么将openwrt配置成旁路由,并且解答了旁路由这种非标准的网络拓扑可能导致的网络问题,感兴趣的朋友可以回看,但由于旁路由配置非常方便灵活,即使有问题依然是很多朋友的首选组网方式,并且他还有一个独特的优势,不管你当前用的是什么操作系统,只要有权限开启系统的ip转发功能,也就是能帮忙转发别人的数据包,让别人的数据包经过本机的代理软件,就能共享科学上网环境,充当旁路由的角色,windows、linux、mac都可以开启ip转发,所以他们都能成为旁路由,我之前也做过教程用开启ip转发的安卓手机充当旁路由,,这活还真就只有旁路由结构才能最简单的实现,
接下来就来带大家实现各个操作系统的闲置电脑设备变成旁路由,让你在没有软路由设备的情况下,依然能够利用家里的闲置网络设备,实现网关级的科学上网环境共享,至于为什么需要网关级的共享,而不是允许局域网连接的代理共享,可以回看这期视频,对他们之间的区别有非常详细的解释,
首先演示最常见的windows系统,这个我之前单独出过一期视频,由于本期主要做方法汇总,顺便做一些补充,所以再来演示一次,为了方便,我使用虚拟机给大家演示,你可以不用开虚拟机,直接在宿主系统执行
windows当旁路由需要用到两个工具,routerforwarder和v2rayN,下载地址我会放在视频下方的说明栏,v2rayN当前的最新版本是6.33,建议和我使用相同的版本,防止出现不可预料的问题,下载这个zz开头的压缩包,下载之后将这两个工具解压出来,首先打开路由转发工具,软件会自动检测你的物理网卡接口和默认网关,如果你有多个网络接口,建议在网络连接中查看是否识别到正确的网关,我的物理网卡网关是192.168.1.1,没有问题,另外这个工具不支持ipv6,如果打开软件的时候报错了,可以在网卡属性中将这个ipv6取消勾选,或者在工具里手动设置默认网关
双击打开ipv4,目前电脑是通过dhcp自动获取ip,这种情况下次开机,ip可能会发生变动,建议跟着视频演示将电脑设置为静态ip,随便设置一个同网段的ip,刚才查到我家的网段是192.168.1,为了好记我填入192.168.1.2,其他参考视频填写,可以看到ip已经修改成功了
回到路由转发工具,勾选路由转发,如果你是首次使用,可能会弹出需要重启电脑的对话框,按要求重启后才会生效,开启转发之后打开v2rayN,注意要按鼠标右键,使用管理员权限运行,将你的节点导入到v2rayN中,然后将节点的地址复制下来,比如第一个节点的地址是ip,将其复制之后粘贴到路由转发工具的额外路由中,每行一条,第二个节点的地址是域名,同样将其复制粘贴到额外路由中,你要用哪些节点就粘贴哪些节点的地址进去,由于我用的这个机场是专线中转,每个节点的入口都是相同的域名,所以只要添加一次就行了,列表里原来的额外条目不要删了,如果你要使用全局模式,这里的路由条目要改成无,如果中国的ip需要直连不走代理 ,那就选择这个ip分流规则,路由动作为添加路由,确保网卡接口和默认网关设置正确,然后点击执行,不出意外的话会显示执行成功,回到v2rayN,将路由规则设置为全局,注意一定要设置为全局,如果你是以管理员权限运行v2rayN,这里应该可以看到tun模式,点击启动它,,稍等片刻,不出意外的话这里会多出一个网卡接口,此时就算是配置好了,尝试是否可以正常科学上网,没有问题
接着家里的其他设备就可以通过这台电脑实现科学上网了,需要进行简单的设置,先查看当前电脑的ip地址,以这台手机为例,正常情况下这台手机是无法访问谷歌的,我们需要将手机的网关改成电脑的ip地址,也就是让手机访问谷歌的数据经过电脑的v2ray进行代理,在wifi设置中将ip设置从dhcp改成静态,然后随便输入一个同网段的空闲ip,比如192.168.1.111,网关改成电脑的192.168.1.2,网络前缀长度是24,如果你的是填子网掩码,那就填入255.255.255.0,dns随便设置一个公网ip,即使不存在也可以,比如1.2.3.4,注意不要设置为192.168.1.1和192.168.1.2,会导致dns无法劫持,要解释这个问题比较费劲,可以回看我之前关于dns相关话题的视频,点击保存,然后断开wifi重连让其生效,此时就可以正常科学上网了,查询ip信息,使用的是香港的节点,尝试在v2rayN中切换日本节点,手机也会跟着变成日本节点,这样就实现了网关级的科学上网环境共享
有些网络设备不支持手动修改网关,只能通过路由器的dhcp自动获取,那就需要修改路由器的dhcp设置,电脑的默认网关ip就是路由器的管理地址,在浏览器中访问,输入路由器的管理账号密码,一般会写在路由器底部,来到dhcp设置,将网关改成电脑的ip,dns随便设置一个公网ip,点击保存,然后重启路由器,这样操作之后,家里所有通过dhcp自动获取ip的设备都能科学上网了,另外有些人把这种行为叫做网关互指,这并不是互指,只是修改了dhcp服务的网关,路由器本身的网关并没有指向旁路由,如果真的网关互指了的话根本就上不了网,路由器重启完成之后,将手机获取ip的方式改回dhcp,会自动获取我们在路由器里设置的网关和dns,此时就可以直接科学上网了,这就是windows充当旁路由的配置方式
如果要停止的话,先关闭v2rayN的tun模式,接着将路由转发关闭,然后将路由动作改成删除路由,点击执行, 这样就算是关闭了
关闭路由转发之后,这台以电脑为网关的手机也就无法正常上网了,需要重新修改回来
如果你的闲置电脑安装的是带图形化界面的linux系统,则可以更简单的实现旁路由,以kali系统为例,如果你是其他linux发行版,也是用同样的方法,注意不要使用root用户,首先使用这条指令开启路由转发,打开命令行工具,粘贴指令执行,输入你的密码,这里显示1就表示转发开启成功,重启电脑不会失效,所以只需要执行一次就行了,接着进入这里下载对应的clash for windows版本,由于官方项目已经删库了,这是备份下载地址,选择合适你系统的版本,虽然clash删库了但不代表就有安全风险,目前还可以正常使用,下载之后将其解压,然后双击运行目录下的cfw程序,首先导入你的节点,并测试是否可以正常连接,回到主界面,如果你这里的地球显示的是灰色,则需要先开启服务模式,点击manage管理,选择install安装,然后点击reload app重启软件,不出意外的话应该能点亮这个地球,最后开启tun模式,确保在log面板最下面能看到绿色的listening字样,此时就算是设置好了,先在本机上尝试访问谷歌,没有问题,可以正常翻墙,接着查看电脑的ip,建议和windows一样设置为静态ip,不要通过dhcp自动获取,由于大家系统不同,请自行谷歌搜索设置方法,将手机的网关改成linux的ip 192.168.1.103,dns同样随便输入即可,点击保存,建议断线重连网络,然后这台手机就能正常翻墙了,可以看到linux的实现方法要比windows系统简单的多
如果你的闲置电脑是mac系统,也可以实现旁路由,很多用户就是使用macmini当旁路由,有钱真好,如果你是高贵的surge用户,可以直接开启surge的网关模式来实现旁路由,但考虑到surge的价格比较贵,所以我们还是以免费的clash for windows为例,软件下载地址和linux版一样
首先查看电脑的ip地址,是通过dhcp自动获取的192.168.1.106,还是那句话,作为旁路由应该设置成静态ip地址,我这里就不浪费时间演示了
同样的,在命令行中执行这条指令开启路由转发,这里显示1表示开启成功,只需要执行一次就行了,重启电脑不会失效,接着打开clash for windows,同样先安装服务模式,然后开启tun模式,在开启之前建议将tun配置reset恢复成默认配置,防止你自己改动了某些设置导致无法正常使用,刚才的linux也建议执行这步操作,点击保存,然后启动即可,先确认电脑当前可以正常科学上网,接着用同样的方式,将其他设备的网关改成mac电脑的ip地址,192.168.1.106,然后随便设置一个公网ip的dns,配置好之后,这台手机就能正常科学上网了,mac的配置和linux一样简单
以上是有图形化界面的配置方式,有些朋友的闲置电脑已经刷成了无图形化的linux系统,用来跑各种服务,也可以当成旁路由,以ubuntu22.04为例,电脑的ip为192.168.1.104,同样建议将其改成静态ip,都已经用上命令行linux了,这些基本操作我就不啰嗦了,进入这个网址安装v2rayA,支持各种操作系统,包括openwrt,但是他没法在windows和mac系统上实现透明代理,也就是在windows和mac上不能当旁路由用,选择ubuntu,按他的安装步骤一步步操作就行了,显示completed就算是安装完成了,接着输入这条指令启用v2rayA,再输入这条指令设置为开机自启,这样就算是安装好了,通过ip加端口的方式访问v2raya的控制面板,默认端口为2017,第一次打开需要设置一个账号密码,你可以点击这里创建一个节点,也可以点击这里导入节点或者机场订阅,点击这里可以批量导入节点链接,导入之后,点击右上角的菜单,如果你打开不是中文界面,可以点击这里切换语言,点击设置,启用透明代理,并且点击开启ip转发,其他选项不懂的话就不要改动,按默认配置即可,点击保存并应用,然后选择需要使用的节点,点击左上角的启动,显示正在运行,这样就算是配置好了,按同样的方式将手机的网关改成ubuntu的ip地址,断线重连,这样也能正常科学上网了,点击这里可以停止,停止之后这台手机也就无法正常科学上网了,另外v2raya可以同时选择多个节点进行负载均衡,会自动设置延迟最低的节点
最后再来给闲置的电脑安装openwrt当旁路由,你可以根据我之前讲的方法将openwrt安装在u盘里,然后通过修改引导启动,或者跟着接下来的演示将openwrt安装在虚拟机里,以vmware虚 拟机为例,请先自行安装vmware
首先进入这个网址下载openwrt固件,选择x86/64,选择格式为vmdk的固件,返回404错误说明没有提供这个固件下载,换一个固件类型,新建一个虚拟机文件夹,将其保存到该目录里,如果你要用的固件只有img格式,可以使用这个工具将img固件转换为vmdk格式,接着在这里右键,新建虚拟机,选择自定义,硬件兼容性按默认,选择稍后安装操作系统,操作系统选择linux,位置选择刚才创建的文件夹,设置一个好记的名称,点击继续,处理器和内存按你需求选择,网络链接选择桥接,这一步很关键,磁盘选择使用现有虚拟磁盘,选择刚才下载的固件,点击下一步,再点击完成,这样就创建好了,启动他, 大约10秒后就启动了,按下回车建来到命令行,默认ip为192.168.1.1,这个很明显和路由器的ip地址冲突了,需要改成其他的,跟着视频演示使用vim编辑这个文件,将这里的ip地址改掉,然后保存并退出,接着输入这条指令重连网络,此时ip地址就变成了192.168.1.10了,在浏览器中访问,就能进入熟悉的openwrt界面了,怎么将他配置成旁路由上期已经非常详细的介绍过了,可以回看上期视频,这里就不再浪费时间演示了。
-------------------------
计算机网络通识教程,折腾软路由必看的家庭网络通信流程
先来创建一个最常见的家庭网络环境,你在运营商拉了一条宽带,他会给你分配一个光猫,一般来讲你会单独再买一台路由器,使用网线将路由器的WAN口与光猫相连,通常情况下颜色不一样的接口就是路由器的WAN口,路由器通过pppoe拨号获取运营商分配的公网IP,假设为2.2.2.2,当然也可能是光猫负责拨号,这种情况下路由器获取到的是光猫分配的内网ip,比如192.168.0.2,总之不管怎样,你的路由器WAN口会获取到一个ip,除了wan口,路由器还有多个颜色一样的LAN口,为了让大家思路清晰,我们需要单独提取出这4个lan口,把它当作一台交换机,并且和路由器这个虚拟的网口建立了连接,路由器连接交换机的这个网口有一个ip地址,假设为192.168.1.1,这个是路由器的内网IP,访问这个ip可以进入路由器的管理界面,同时也是你家里整个局域网的网关ip,你家里所有的网络设备都会通过网线或者wifi的方式连接到这台交换机,,这是大部分家庭的网络拓扑,装宽带的师傅会帮你配置好,确保你能正常上网,然后他就能交差走人了,接下来我们就来研究一下为什么这样设置之后就能正常上网了。
此时我有另一台电脑要连接到当前网络,假设该电脑设置获取ip的方式为自动获取,当我怼上网线之后,一个叫做dhcp的应用层协议就会开始工作,dhcp全称Dynamic Host Configuration Protocol,译为动态主机配置协议,顾名思义就是用来动态获取ip地址的,电脑的dhcp客户端会发起一个dhcp请求,找dhcp服务器获取ip地址,这个请求会被一层层的封装,以tcpip4层网络模型为例,每一层都有其特定的任务,数据来到传输层,传输层会指定这个dhcp请求通过什么传输协议发往什么端口,dhcp规定,客户端默认使用68号udp端口,服务端默认使用67号udp端口,也就是请求会使用UDP的68号端口发往UDP的67号端口,所以源端口是68,目标端口是67,使用udp的方式传输,这些都是规定好的,不需要深究,接着数据来到网络层,网络层需要确定数据包发给哪台网络设备,也就是负责封装ip地址,电脑现在目的是找dhcp服务器要ip地址,但他不知道现在谁是dhcp服务器,不知道该发给谁,所以干脆一不做二不休,直接发给这个网络里的所有设备,所以目标ip是一个广播ip:255.255.255.255,同时接收方也需要知道是谁发给他的数据,所以还需要加上源ip,但是电脑现在还没有ip,于是会直接使用0.0.0.0这个未指定的ip,接着数据会继续向下来到网络接口层,这一层会封装mac地址,每个网卡都有唯一的mac地址,也叫物理地址,源mac是你电脑网卡的mac地址,也就是为cc,同样由于不知道数据该发给谁,所以目标mac是一个全f的广播mac地址,然后这个经过层层封装的数据会从电脑的网卡接口发出,顺着网线来到了交换机的1号接口,普通的家用交换机是一种只能解析网络接口层数据的设备,也就是说他只能看到mac地址,里面的ip和端口等对他来说就是一堆无规则的数据,他看不懂也没必要看懂,交换机内部有个mac地址映射表,他会根据mac地址进行数据转发,至于你转发什么内容他并不关心,交换机从接口1收到数据后,会将接口1对应的mac地址保存到映射表中,然后查看目标mac,发现是全f的广播mac地址,于是交换机会将电脑的数据给每个连接的接口发送一份,当这台电脑收到数据包的时候,会根据网络模型一层一层的解封装,首先网络接口层会查看目标mac是不是发给自己的,发现是全f,虽然不是自己的mac地址,但这是一个广播mac地址,所以会接受它,继续向上来到网络层,查看目标ip是全255,虽然不是自己的ip地址,但这是一个广播ip地址,广播就类似学校的广播,当广播里说全体注意的时候,你肯定要听广播里讲啥,所以电脑为了看里面的内容也会接受这个数据包,来到传输层,发现是通过udp的方式发给67号端口,由于这台电脑没有运行dhcp服务,所以并没有监听67号端口,于是会将这个数据包丢弃
同样的数据来到路由器,一般的家用路由器会提供很多服务,比如dhcp、dns、ddns、qos、upnp、dmz、端口转发、防火墙等等,接口层会接受这个目标mac是全f的广播,同样网络层会接受这个目标ip是全255的广播,向上来到传输层,发现目标端口是udp的67,一般情况下路由器默认就开启了dhcp服务,而dhcp服务默认的监听端口就是udp的67,于是这个数据包将会交给dhcp服务,dhcp服务收到数据后,将会从自己的地址池中选择一个未被占用的ip地址,假设为192.168.1.3,除了ip地址,还会包含子网掩码、网关、dns服务器、租约等信息,假设租约为12个小时,然后重新封装数据包,源端口是本机的dhcp服务67端口,目标端口是对方发过来的端口,也就是68,并且通过udp传输,网络层封装源ip地址为路由器自己的ip,也就是192.168.1.1,由于对方没有IP,所以目标ip还是全255的广播ip,来到网络接口层,源mac是路由器lan口的mac地址,路由器从刚才电脑发过来的数据包中已经知道了电脑的mac地址,所以目标mac是电脑的mac地址,数据来到交换机,刚才说过交换机只能解析mac地址,当他看到目标mac是cc的时候,会查看自己的mac地址映射表,发现cc插在接口1上,于是会将这个数据包从接口1发送出去,电脑收到数据后,会一层层的解封装,接口层发现目标mac是自己,于是接受该数据,网络层发现目标ip是广播ip,同样也接受了,传输层发现是发往udp的68号端口,而dhcp客户端监听了该端口,于是数据将会由dhcp应用程序处理,dhcp会拿着这些信息给电脑进行相关配置,于是乎我们电脑就有了ip地址、网关、dns等信息了
并且在6个小时之后,也就是租约的二分之一,会再次发送dhcp请求续约ip地址,续约成功的话租期将会再次变成12小时,如果dhcp服务器没有回应的话,会在时间剩余四分之一、八分之一再尝试发送续约请求,如果续约成功将会再次变成12小时,如果失败了,说明路由器提供的dhcp服务挂了,等到租约到期后将会自动释放ip,然后重新发起dhcp获取ip的广播请求,但是由于局域网内唯一的dhcp服务器挂了,所以电脑永远也得不到dhcp回应,当尝试多次都没有收到回复之后,dhcp客户端会给电脑自动分配一个全球统一的网段ip,地址为169.254.xxx.xxx,确保和局域网的其他设备还能正常通信,所以当你发现电脑获取到了169.254的ip,说明你家的局域网中没有提供dhcp服务的设备,建议检查网络,除了一台都没有的情况,还有可能配置不当导致存在多台dhcp服务器的情况,这也会出现网络问题,大家可以自行搜索了解dhcp攻击,如果电脑关机了没有再发送续约请求,租约到期后,路由器的dhcp服务就会释放这个ip,重新放回地址池,再分配给其他有需要的人,所以像机场或者商场之类的公共场所wifi设置的dhcp租期都会比较短,一般十来分钟,确保你人走后ip能够尽快的释放出来给别人用,防止地址池被占满,家庭的话就可以设置的久一点,一般默认是720分钟,也就是12小时,这就是dhcp的整个执行流程,是局域网中比较关键的服务。
我这里虽然讲的很详细,但为了便于理解还是简化了dhcp的通信流程,实际上要更复杂,本教程并不是什么严谨的权威教程,而是希望普通用户也能看懂的通识教程,包括之后的讲解我也会精简一些对整体理解没啥影响的流程,防止视频过于冗长繁琐
除了通过dhcp自动获取ip地址,你也可以在设置中手动配置ip,手动配置的时候你需要提前知道你家里的局域网是在哪个网段,比如路由器的ip是192.168.1.1,那么你的ip就要在192.168.1.2-192.168.1.254中间随便设置一个,注意要避免ip地址和其他设备冲突,比如192.168.1.3,子网掩码默认为255.255.255.0,子网掩码有点不太好理解,等会我们用到了再讲,网关和dns一般设置为路由器的ip地址,这样就不需要通过dhcp分配,能确保ip地址固定不变,当然dhcp也可以通过绑定mac地址实现每次都给电脑分配同样的ip,路由器一般都有这个功能,叫做DHCP静态IP分配
电脑有了ip之后,就可以开始上网了,以访问百度为例,当我在浏览器的地址栏输入baidu.com并按下回车键时,浏览器拿到了baidu.com这个域名,但是计算机之间的通信需要使用ip地址,而这个域名只是为了方便我们人类记忆的一串字符,不过这串字符绑定了百度的ip地址,所以我们需要通过这个域名找到百度的ip,负责获取域名对应的ip是一个叫做dns的服务提供的,首先浏览器会发起一条dns请求,内容是获取baidu.com的ip地址,接着数据包来到传输层,源端口是浏览器随便选的一个空闲端口,假设为9527,dns默认使用udp的53号端口,所以目标端口是53,传输协议是udp,接着来到网络层,源ip就是电脑的本机ip192.168.1.3,目标ip是电脑配置的dns服务器,也就是路由器的ip地址,数据来到网络接口层,源mac地址是电脑网卡的mac,数据要发给路由器,所以目标mac是路由器lan口的mac地址,但此时电脑并不知道路由器的mac地址,所以会先发送一个叫做arp的广播请求,内容是我是192.168.1.3,谁是192.168.1.1,源mac地址是电脑的mac,目标mac是全f,也就是广播地址,数据来到交换机,交换机看到目标mac为全f的广播地址,于是转发给所有接口,这台电脑接受了这个广播数据,但是发现它要找的是192.168.1.1,而他的ip是192.168.1.2,不是找他的,于是会丢弃数据包不做回应,不过他从这个arp广播中得知了192.168.1.3的mac地址是cc,会在自己的arp缓存表里保存一段时间,当这台电脑想和192.168.1.3通信时,就可以直接在缓存中找到对方的mac地址,不需要发送arp广播询问了,而路由器收到这个数据包的时候,发现是找自己的,于是会给电脑一个回应,我是192.168.1.1,mac地址是bb,源mac就是路由器的bb,目标mac是电脑的mac,并且同样会将电脑的mac地址记录到arp缓存列表,数据包来到交换机,交换机查看目标mac在接口1上,于是将数据发给了接口1,电脑将会收到这个数据包,这样就成功获取到了路由器的mac地址,于是在这个数据包里填入目标mac为路由器的bb,并且将路由器的mac地址在arp缓存中保存一段时间,,数据包来到交换机,看到目标mac挂在接口0上,于是转发给路由器,路由器收到数据后,会一层层解封装,首先确认了目标mac是自己,并且确认了目标ip是自己,然后将数据转发给监听了UDP 53号端口的dns服务,路由器的dns服务收到数据后,会发给它的上游dns服务器获取baidu的ip地址,上游是通过pppoe拨号获取到运营商分配的dns服务器,于是路由器会找该dns服务器获取百度的ip地址,从这个接口出去就是公网了,本期的重点是讲解局域网内部,外部就不介绍了,可以进入我的youtube频道了解更多以前发布过的视频,总之路由器会收到上游的dns响应,里面会有百度的ip地址,路由器会将其保存到dns缓存一段时间,在此时间段内,局域网其他设备再找路由器要百度的ip就会直接在缓存里获取,之后路由器给电脑创建一个dns回复,原端口是dns服务的53,目标端口是对方发过来的端口9527,使用udp传输,源ip是路由器的lan口ip,目标ip是电脑的ip,源mac是路由器lan口的mac,目标mac是电脑的mac,然后从网口发出,交换机会根据目标mac将其转发到接口1,电脑收到数据包之后,会一层层的解封装,发现目标mac和目标ip都是自己,于是接受了这个数据包,并将结果返回给了9527端口,这个端口是浏览器开启的,于是浏览器会收到这个dns响应,此时就获取到了baidu的ip地址了,同样也会将dns结果缓存到电脑里,以便下次再访问百度就不需要找dns服务器获取了,具体缓存多久是看ttl时间是多少秒,ttl到期之后就会从缓存列表中删除,需要重新找dns服务器获取,拿到百度的ip之后,浏览器就会向这个ip发起一条http请求,获取baidu.com的首页内容,数据来到传输层,原端口是浏览器开的随机端口,假设为9527,http协议规定默认端口是80,默认传输方式为tcp,所以目标端口为80,使用tcp传输,来到网络层,源ip是电脑的ip,目标ip是baidu服务器的ip,此时电脑通过子网掩码算出目标ip和自己不在同一网段,当前电脑配置的ip地址为192.168.1.3,这是点分十进制的表示方式,转换为二进制是32个比特位,11000000101010000000000100000011,子网掩码是255.255.255.0,转换为二进制就是11111111111111111111111100000000,子网掩码和ip地址是一一对应的关系,子网掩码前面24个比特位都是1,表示ip地址的前24个比特是网络部分,也就是网段,剩下的8个比特是主机部分,将ip地址的前24个比特转换回10进制,也就是192.168.1,这就是当前电脑所在的网段,也可以使用192.168.1.3/24的表示方法,其中/24表示网络部分的长度为24个比特,这种叫做cidr表示法,假设要访问的目标ip是192.168.1.2,将其转换为2进制,可以看到前24个比特位都是相同的,说明和你在同一网段,如果目标ip是192.168.0.4或者192.168.2.4或者其他任何公网ip,由于前24个比特位不相同,所以不属于同一网段,电脑无法直接访问,这种情况下会将数据发给默认网关,请求网关帮忙转发,而电脑配置的网关ip是路由器的ip地址,所以数据将会发给路由器,源mac是电脑的mac,目标mac是路由器Lan口的mac,由于刚才的dns请求已经通过arp获取到了路由器的mac,并且arp缓存没有过期,所以电脑不需要再发送arp广播,可以直接在缓存中获取路由器的mac,数据包来到交换机,交换机会根据目标mac将其转发到接口0,路由器收到数据后,通过目标mac得知数据包是发给自己的,于是向上来到网络层,但发现目标ip并不是访问自己,
如果是普通的网络设备,当收到不是发给自己的数据包时会直接丢弃,但这是一台路由器,他的主要工作就是负责转发其他设备的数据包,所以并不会直接丢弃,而是会帮忙进行转发处理,另外普通的网络设备如果有权限开启ip转发功能,也可以让其帮忙转发数据,充当网关,俗称旁路由,但这样做会存在一些问题,以后再讲
路由器查看到目标ip是公网某个ip,于是将其转发到wan口,准备发送到互联网,但在发送之前,路由器发现数据包的源ip是192.168.1.3,这是一个只能在局域网内部使用的ip地址,无法在公网进行路由,所以路由器还会干一件很重要的事情,nat,也就是网络地址转换,将源ip的192.168.1.3修改为路由器wan口的公网ip地址,同时随机选择一个空闲端口替换掉源端口,假设改成4134,然后将修改前后的对应关系保存到路由器的nat映射表中,这样修改之后,数据包就能在公网上进行路由了,接着封装mac地址,源mac是路由器wan口的mac,目标mac是下一跳某个路由设备的mac,然后数据从wan口发出到互联网,大概经过十几个路由设备的转发,最终数据会到达百度服务器,百度服务器处理之后会将网页数据返回给我们,
路由器解封装到网络层时,发现百度的数据是发给自己的4134端口,而这个端口在nat映射表中,对应了192.168.1.3的9527端口,于是会进行nat转换回原来的ip和端口,然后重新封装mac地址,源mac是路由器lan口的mac,目标mac是电脑的mac,数据包来到交换机,根据mac地址将数据转发到接口1,电脑收到数据后会一层层解封装,数据将会发送到监听了tcp的9527端口,而这个端口正是浏览器开启的,浏览器收到百度的数据后,通过渲染将网页内容呈现在我们面前,至此一个简单的访问百度请求就算是完成了,看似很复杂,但实际上确实很复杂,真实网络环境要比我讲的复杂得多,即使我屏蔽了很多细节,自认为已经讲的很通俗了,但肯定也有没看懂的朋友,毕竟大家的基础不同,原谅我只能做到这个程度了,可以收藏起来偶尔翻出来看看或许有新的收获。
------------------------
windows系统充当软路由,实现全家科学上网,小白也能轻松上手,代替电视盒子的openwrt
相关链接:
RouteForwarder:https://github.com/bulianglin/demo
clash for windows:https://github.com/Fndroid/clash_for_windows_pkg/releases/latest
v2rayN:https://github.com/2dust/v2rayN/releases/tag/6.21
SSTap:https://github.com/githello123/sstap
你是否有过这样一个问题
海淘的电子产品
需要在科学上网环境中联网激活
而你手上只有一台能科学上网的windows电脑
该怎么利用它进行激活
本期就来教大家把windows电脑配置成旁路由,实现全家科学上网
只要你的电脑能科学上网
你家里的手机 电视盒子
游戏机等网络设备
无需运行任何代理工具
即可自带科学上网
在局域网共享VPN那期视频中
我给大家详细的介绍了目前
已知的所有共享模式
代理共享模式 网关共享模式
路由共享模式
以及这三种共享模式各自的优缺点和实现方法
没看过的强烈建议先看一下
比较遗憾的是
windows系统无法实现网关共享
要实现的话只能通过安装Linux虚拟机实现
虽说比较鸡肋但也并不一无是处
正如我们刚开头讲的
你的电子设备需要科学上网环境才能激活
比如mate的VR设备quest2
还有一些海外版的手机
但你手上只有一台
单网口的windows电脑
这种情况就需要通过Linux虚拟机实现网关共享了
而今天我们介绍的方法
不需要安装Linux虚拟机
直接使用你的windows系统实现网关节的共享
将上次的遗憾补上
有些朋友可能有疑问
windows电脑的clash或者v2rayN
不是都有共享局域网的功能吗
共享局域网属于代理共享
我们这里说的是网关共享
类似于旁路由
关于他们具体有什么区别的话
建议回看局域网共享VPN那期视频
有非常详细的解释
这里就不浪费大家的时间了
直接开始今天的视频教程
为了方便我使用windows虚拟机演示
大家可以直接使用
实体机的windows系统操作
虽然这可能是一个比较小众的需求
考虑到手动配置比较麻烦
我还是花时间做了这个小工具
主要是协助我们进行路由配置
尽量降低大家的操作难度
而且软件还有非常精美的UI界面
在此跟大家要个小小的赞应该不过分吧
软件下载地址
我会放在视频下方的说明栏
打开后默认会检测你的物理网卡以及网关
如果你的电脑有多张网卡
需要在网卡接口选择正确的网卡
我的局网默认网关是192.168.0.1
先跟着视频演示
找到网卡的IP设置页面
将电脑的IP固定下来
随便设置一个同网段的IP
比如192.168.0.140
记住这个ip地址后面要用
子网掩码按默认 默认网关填写
192.168.0.1
DNS也设置为默认网关
修改后点击确认进行保存
然后开启路由转发
此时提示我们需要重启电脑
点击是进行重启
如果你没有弹出这个提示
就不需要重启
重新打开路由转发工具
确认路由转发已经开启
也可以在命令行中输入ipconfig /all
IP路由已启用这里显示是
说明已经成功开启了路由转发
第一步就算是完成了
接着运行代理工具
先以clash为例
点击右键
以管理员权限运行
进入TUN设置
我这个是clash的默认设置
有3个DNS服务器
你需要将这些DNS服务器
填入软件中的额外路由条目
软件默认已经填入了
可以不用管
如果你设置了fallback DNS
也需要填入到额外路由条目中
你也可以将这些DNS删除
直接填入你家的默认网关
因为路由器一般也充当了DNS服务器
这个IP是局域网的IP
所以不需要填入到额外路由中
点击保存
还没完 你需要将你所有的节点IP
填入到额外路由
打开你的配置文件进行编辑
复制节点服务器的地址
不管是域名还是ip地址
都可以将其填入额外路由
机场一般都有很多节点
但是中转机场很多节点都是同样的域名或者IP
重复的只需要填入一个即可
如果是直连机场
每个节点的IP都不一样
所以需要全部填入
填完之后
确保路由动作是添加路由
然后点击执行
提示成功
这样配置就算是完成了
跟着步骤一步一步操作也不是很麻烦
最后打开它的模式
此时这台windows
电脑就已经成为了一台旁路网关了
电脑可以正常科学上网
查询IP为香港的节点
接下来将局域网其他设备的网关
改成这台电脑的IP
有两种修改方式
第一种是通过手动修改
单台设备的网关IP
先以windows为例
跟着视频演示找到配置
IP的地方 随便设置一个同网段的IP
子网掩码按默认
默认网关填写
192.168.0.1
也就是我们开启了路由转发的windows电脑IP
DNS随便填写一个公网ip地址
比如1.1.1.1
clash默认会进行DNS劫持
点击确定进行保存
就算是配置好了
接着演示Linux的kali系统配置方式
目前这台电脑无法科学上网
跟着演示找到设置IP的地方
将DHCP改成手动
添加一个同网段的ip地址
网关同样也要设置为
192.168.0.140
再设置一个公网DNS服务器
点击保存
重启一下网卡
此时就能正常访问谷歌了
查询ip地址为香港节点
回到clash
将节点切换为日本
kali的IP也会跟着一起变化
先来测个速
手机也是同样的设置方式
关键就是修改默认网关
进入Wifi设置页面
修改当前已连接的Wifi
将IP设置的DHCP改成静态
将网关改成192.168.0.140
其他设置按之前的方式填写
点击保存
重新连接一下Wifi
此时就可以正常访问谷歌了
查询IP也是日本的节点
切换节点后需要先断开连接再查询IP
这是第一种设置网关的方式
通过手动修改单台设备的网关IP
还有一种方式
是直接修改路由器的DHCP设置
在浏览器中输入路由器的ip地址
一般是默认网关的IP
找到DHCP设置
将DHCP下发的网关设置成电脑的IP
再设置一个公网DNS服务器
这样家里所有设备无需任何设置
通过DHCP直接获取电脑的IP作为网关了
如果你家的路由器不支持修改DHCP的网关
比如小米的部分路由器
只能设置ip地址池 没法设置网关
那只能通过手动修改单台设备的网关了
或者关闭路由器的DHCP服务
把DHCP服务转移到其他设备上
这个问题就有点超纲
感兴趣的朋友可以自行研究
另外再补充一点
这种方式只能通过IP进行分流
并不完善
但好过没有
可以点击这里查看路由表
包含了所有国内的ip地址
在clash的规则模式下
路由表中的IP会走直连
由于每个人使用的clash分流规则不一样
如果规则模式的域名设置为直连
而域名的IP又不是国内的IP
就会造成路由环路
导致clash卡死
需要将域名手动添加到额外路由条目
比较麻烦
所以clash更建议使用全局模式防止路由环路
或者使用待会要介绍的v2rayN
不会有这种情况
此时如果要停用路由转发
先将clash的TUN模式关闭
将路由动作改成删除路由
点击执行
其实路由表不删也没有关系
这只是临时路由
重启后会自动恢复
然后将路由转发关闭
这样就算是恢复如初了
最后再提醒大家
路由转发不用了一定要关闭
否则会出现问题
关闭之后 其他把windows
当做网关的设备也就无法上网了
需要重新将网关改回路由器的IP
用windows当旁路网关我更推荐使用v2rayN
v2rayN是通过调用sing-box内核实现TUN模式
在v2rayN中
TUN模式的默认配置不会导致路由环路
使用管理员权限运行v2rayN
6.0以上的版本添加了TUN模式
先将你使用的节点添加到额外路由中
前三个我都已经添加过了
只需要将不在列表里的加上即可
将动作改成添加路由
点击执行即可
不要忘了打开路由转发
将v2rayN的路由改成全局
最后启动TUN模式即可
此时就算是配置好了
可以正常访问
查询IP为香港的节点
虽然我们在v2rayN中设置了全局
但是我们已经通过IP路由实现了分流
其他设置了网关的设备也恢复了联网
查询IP同样为香港的节点
将节点切换为日本
这边也会跟着变
再来测个速
设置过网关的手机也是同样没有问题的
此时如果要停用路由转发
先将v2rayN的TUN模式关闭
再关闭路由转发
然后将路由动作改成删除路由
点击执行
关闭路由转发和删除路由没有先后顺序
这样就算是恢复如初了
这就是v2rayN中实现旁路网关的方法
虽然我觉得这个小工具很方便
让操作步骤少了很多
而且还有精美的UI界面
但如果你还是觉得麻烦的话
还有一个更方便的方法
就是利用SSTap
SSTap也是一个代理工具
虽然已经停止更新了但并不影响使用
由于它只支持SS节点
所以我们需要额外借助clash或者v2ray
开启的socks代理
此时路由转发工具不需要进行任何设置
只需要开启路由转发即可
另外刚才忘记说了
这个工具设置完成之后可以随时关闭
不需要常驻后台
接着点击加号添加节点
选择第一项添加socks代理
服务器IP填写127.0.0.1
端口填写clash
开启的监听端口默认是7890
随便给个备注 点击保存
再来添加v2ray
同样服务器IP填写127.0.0.1
端口填写v2ray
开启的监听端口 默认是10808
随便给个备注 点击保存
注意clash和v2ray都不需要开启TUN模式
可以在这里选择需要使用的节点
这里也可以选择IP分流规则
比如让国内的IP走直连
然后直接点击连接即可
不需要配置什么额外路由
SSTap会自动帮我们设置好
连接之后
相当于SSTap使用了clash中的香港节点
可以正常访问
如果要使用v2ray
需要先断开连接
将代理改成v2ray重新连接
v2ray中选中了日本的节点
可以看到没有问题
可以随时切换节点
刚才我们已经开启了路由转发
所以其他设备可以直接
科学上网了 非常方便
但是也有缺点
SSTap不会进行DNS劫持
所以你需要填写一个能够正常使用的DNS服务器
并且为了防止DNS污染
建议填写国外的DNS走代理
比如我们刚才填写的1.1.1.1
但是这样会造成CDN舍近求远的情况
并且SSTap的速度衰减的也比较厉害
所以这三种方式的话
大家可以按自己的使用需求选择
如果想关闭
先断开SSTap的连接
重新打开工具
将路由转发关闭即可
---------------------------------------------------------------------------------------------
安卓手机当旁路网关,无需购买软路由,即可让家里所有设备实现科学上网
MT管理器:https://mt2.cn
box5magisk:https://github.com/bulianglin/demo
box4magisk:https://github.com/CHIZI-0618/box4magisk
极客湾root指南:https://youtu.be/wz-ErdDf8AM
本期教大家把闲置的安卓手机打造成一台软路由,实现全家科学上网
只要你的手机能科学上网
你家里的电脑 电视盒子
游戏机等网络设备
无需运行任何代理工具
即可自带科学上网
让你的闲置安卓手机
在角落里默默的继续发光发热
去年我发了一篇
手机充当软路由的视频教程
本以为这是一个非常小众的需求
结果竟意外的出圈了
成了我播放量最高的视频
看样子大家对这个内容很感兴趣
所以本期就来填上期视频结尾挖的坑
通过直接调用clash内核
实现旁路网关
就像你在软路由中使用openclash一样
并且对上期的方法进行优化
不用再敲命令 实现零配置
让这两条出镜率最高的报错信息
永远不会再出现
并且可以开机自启 使用更方便
先来演示一下运行之后的效果
有两种模式
一种是上期介绍过的第三方VPN客户端模式
另一种是调用clash内核模式
以下简称客户端模式和内核模式
在客户端模式下
你可以在手机上运行任何VPN客户端
比如clash v2ray AnXray 茉莉 冲浪板等等
以clash为例
启动VPN服务
可以看到右上角的VPN小锁标志
先确认手机是否可以正常科学上网
可以看到没有问题
此时我的电脑没有运行任何代理工具
尝试访问谷歌
可以正常访问
查看一下ip地址
是香港的节点
此时在手机上切换节点
电脑也会跟着一起改变
因为电脑用的就是手机
共享的网络环境
切换到v2rayNG试试 启动服务
确保这个日本的节点可以正常使用
再来查询电脑IP
同样跟着变成了日本
你也可以使用某某加速器
某某VPN这种自带节点的客户端
以这款VPN为例
自动连接到了香港的节点
回到电脑检测IP
可以看到变成了香港的IP
这就是客户端模式的效果
使用非常方便
在某些客户端只有安卓版的情况下
用这种方式就能突破这种局限性
共享给其他设备使用
是这种模式的一大亮点
而这种模式最大的缺点是
切换节点不方便
必须在手机上切换
作为一台软路由
他应该7x24小时在角落里默默的工作
客户端模式不能很好的解决这个问题
而在内核模式下
通过clash的WEBUI
可以轻松实现
在局域网其他设备上更换节点
当前我已经切换为内核模式
右上角没有VPN的标识
因为内核模式绕过了安卓系统的VPN服务
直接加载了clash的内核
此时我的手机已经可以正常科学上网了
同样的电脑没有运行任何代理工具
访问谷歌也是没有问题的
查询一下IP
是香港的节点
此时如果我想切换节点
可以在电脑的浏览器访问clash的WEBUI即可
直接在浏览器中更改clash的相关设置
比如切换到新加坡
查询ip地址没有发生变化
是因为连接还没有断开
先将连接全部断开
此时再来检测就会变成新加坡的IP了
再切换到美国
同样先断开连接
可以看到没有问题
这就是内核模式的效果
这两种模式都属于透明代理
和局域网共享的socks系统代理
有本质的区别
具体可以回看我的这两期视频
有详细的解释
在一些无法设置代理的设备上
透明代理的方法是必备的
这也是为什么很多人需要软路由的原因
对比软路由的openWRT上手门槛
用安卓手机当软路由
相当于直接把门给拆了
不过虽然从硬件的角度来看
手机性能肯定要比软路由强悍
但手机的主要使用场景并不是做路由转发
可能为了省电会做相应的限制
所以手机也不一定比普通的软路由表现更好
教程的目的在于让大家有更多的选择
接下来正式开始教程
首先第一步将手机root
第二步刷入Magisk
俗称面具
现在的手机要root比较麻烦
需要解BL锁
每个手机品牌方法都有差异
推荐大家先看一下极客湾的root入坑视频
学习一些相关概念
这是最难的一步
root之后刷入面具就比较简单了
虽然不用面具也可以
但是不同的系统环境有差异
会导致不一样的执行结果
所以还是建议直接使用面具
统一系统环境
就不会出现莫名其妙的问题了
root和刷入面具只有靠你自己解决了
没有统一的解决方法
毕竟每个人的设备都不一样
只要你能解决这两步后面就非常简单了
用到的工具有MT管理器和box5magisk的面具模块
下载地址我会放在视频下方的说明栏
box5的原版是box4magisk
box4是一款支持使用v2ray clash
sing-box内核实现透明代理的面具模块
使用前需要进行一些配置
小白用户上手比较困难
所以我将clash.meta内核
以及相关设置整合到了box4中
安装后就能直接使用了
为了和box4共存
我把名字改成了box5
如果你已经安装了box4
安装box5不会覆盖你原本的box4
但是两个模块不能同时启用
会有冲突
如果你想使用v2ray或者sing-box的内核
请自行根据github上box4的教程进行配置
地址我会放在视频下方
先将box5传到手机里
你可以使用任何方式
我这里通过adb push指令
将box5推送到手机里
随便找个位置
假设推送到/data/adb这个文件夹
接着打开面具
进入模块页面
选择从本地安装
找到我们刚才传过来的box5
在/data/adb目录下
选中之后就会开始安装
稍等片刻
显示Done说明安装完成了
点击右下角的按钮重启手机
重启之后
此时的手机就已经
成为了一台旁路网关了
没错就是这么简单
先来运行clash
可以正常访问google
接着我们在局域网的另一台设备上
访问google
可以看到无法访问
因为我们还没有将这台电脑的默认网关
改成安卓手机的ip地址
根据视频演示
找到修改网卡ip地址的地方
选择手动配置IP
打开MT管理器
进入终端模拟器
输入ip a 回车
可以看到wlan0是手机的Wifi网卡接口
ip地址是192.168.0.108
我们需要给电脑手动设置一个在同网段的IP
比如192.168.0.133
子网掩码按默认填写255.255.255.0
默认网关填写手机Wifi网口的ip地址
192.168.0.108
由于不同客户端对DNS的处理方式不一样
比如clash会进行DNS劫持
填写不存在的DNS服务器都不影响
但其他客户端可能不会劫持
所以建议填写1111和8888这种国外DNS
一般都会通过分流走代理
可以一定程度上防止DNS污染
关于DNS的话题
可以回看我这三期视频
设置完成之后点击确定
此时电脑访问互联网的请求
就会交给安卓手机了
这是第一种设置网关的方式
通过手动修改单台设备的网关
还有一种方式是直接在路由器中
将DHCP下发的网关设置成手机的IP
这样家里的所有网络设备无需任何设置
可以直接获取手机的IP作为网关了
上次的教程中有详细的演示
想了解的可以回看
这里就不浪费大家的时间了
再来尝试访问google
可以看到没有问题
查询IP为台湾的节点
在手机上切换为香港的节点
再次查询就会变成香港IP了
尝试进行测速
我家的宽带是100M
目前手机是通过Wifi连接到局域网的
只跑到了30M
由于我家的上古配置
这个结果也在意料之中
如果你家的Wifi质量不错
直接用Wifi就可以了
如果你想更快速稳定
建议和我一样
购买一条type-c转网卡的转换器
通过网线将手机接入主路由
这样速度会非常稳定和快速
并且为了让其7x24小时在线
最好是买带PD充电口的
我已经将手机通过网线
连接到了路由器
可以看到右上角没有了Wifi的标志
转而变成了网线连接的标识
要注意Wifi和网线不是同一个网卡
所以ip地址也不同
再次使用ip a指令查看网络接口
这个eth0就是我的网线接口
ip地址为192.168.0.111
关于ip地址再补充一点
最好是将其设置为静态IP
防止每次连接后ip地址都会发生变化
导致电脑的网关地址不正确
将会无法正常上网
Wifi可以在网络设置中将其改为静态IP
网线在手机上不好设置
可以直接在路由器中
将ip地址和麦克地址进行绑定
这样路由器每次都会给手机分配同一个ip地址
当网络接口名称发生变化之后
我们需要修改模块的配置
先进入面具模块将box5的服务停止
这一步很关键
改动任何配置之前都需要先关闭服务
否则会出现不可预料的问题
关闭之后跟着视频演示找到box.config的配置文件
打开进行修改
将这里的接口名称
从默认的Wifi接口名称wlan0
改成网线接口的名称eth0
点击保存
这样就算是修改好了
非常简单
回到面具中重新启动模块
重新尝试测速
可以看到无法访问
因为Wifi和网线接口的ip地址不一样
需要重新设置一下
网关地址改成网线的111
此时就通了
重新测速
看过上期教程的朋友
应该知道我的家庭状况
这个是我的满速状态
远没有达到手机的性能瓶颈
这就是客户端模式
在Wifi下和网线下的配置方式
客户端模式是我添加的功能
接下来演示box4原版的内核模式
修改配置之前需要先关闭模块功能
打开配置文件
将代理的方式从APP改成TPROXY
在这里填入你的订阅地址
如果你是自建节点没有订阅地址
就在这里填入你的URI链接
比如这种格式
直接全部复制粘贴到两个单引号中间
也支持这种纯base64编码格式的节点链接
订阅地址支持v2ray和clash的格式
v2ray类似这种格式
clash类似这种格式
使用订阅地址替换掉原来的内容即可
要注意的是 订阅地址和节点分享链接不能同时使用
设置了订阅地址就不要设置节点链接
反之亦然
也不能添加多个订阅
我的配置只能尽量符合大多数人的使用习惯
不能满足所有人
如果你觉得这样不方便
可以研究一下原版的使用方法
填入订阅地址后点击保存
重新启动模块
此时就已经启用内核模式了
要注意的是
使用内核模式
需要先关闭安卓的VPN服务
可以看到右上角没有VPN的标志
但我们的手机已经可以科学上网了
前提是你刚才添加的订阅地址存在有效的节点
手机上可以正常访问google
电脑也没有问题
查看IP为台湾节点
此时如果想更换节点
直接在浏览器中输入手机的ip地址
加上英文的冒号
再加上端口和ui路径 9090/ui回车
这是错误示范
注意要使用小写 回车
之后即可进入WEBUI
复制地址和端口
粘贴到这里
结尾的斜杠要删掉
点击添加
点击地址进行访问
此时就进入了WEBUI的控制台了
可以先进入config页面
将语言切换为中文
这样我们就可以直接在浏览器中
更换节点了
这些就是我们刚才配置的
订阅地址里的节点
刚才我们检查的IP是台湾的节点
切换到香港
先把之前的连接断开
刷新页面
可以看到变成了香港的IP
再来切换试试
可以看到没有问题
这就是内核模式的使用方式
如果此时想回到客户端模式
先将模块停止
重新编辑配置文件
将代理模式改成APP即可
保存后重新启动模块
这样就又恢复成客户端模式了
启动任意客户端的VPN服务
目前选中了阿根廷的节点
尝试查询IP
就变成了阿根廷的节点了
同样的想切回内核模式
也先关闭模块服务
编辑配置文件
将代理模式改成TPROXY即可
另外我给大家的clash模板
类似v2rayN的绕过大陆模式
如果觉得这个分流规则不好用
可以跟着视频演示
打开这个clash的模板文件
将最底下的分流规则改成你习惯的即可
比如v2rayN的黑名单模式
这些分流规则
我在DNS的教程中都已经详细介绍过了
修改完成后点击保存
最后重启模块
可以正常访问
电脑也是没有任何问题的
目前我们是通过透明代理的方式访问
如果你不喜欢TPROXY的透明代理
也可以使用系统的socks代理
在配置页面可以看到
clash开启的系统代理端口是7890
将电脑的IP恢复成自动获取
使用浏览器插件
将代理配置成手机的IP和代理端口7890
将浏览器的代理
切换为刚才设置的代理
尝试进行测速
可以在这边看到
电脑的连接类型为socks5
最后再补充一点
如果想要7x24小时在线
那就必须长期充电
这样对电池的寿命影响比较大
还有可能出现电池鼓包的情况
所以可以刷入这个ACC面具模块
这个模块的主要作用就是控制充电
安装之后默认充电到75%就停止充电
当电量低于70%的时候
又会自动开始充电
强烈建议安装.
( 闲置安卓手机当旁路网关,无需购买软路由即可让家里所有设备实现科学上网
安卓shell
电脑使用adb
下载地址:
Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip
使用方式:
需开启“Android调试”,在「设置」-「开发者选项」-「Android 调试」,如果找不到“开发者选项”,需要在「设置」-「关于手机」连续点击「版本号」7 次
查看设备:adb devices
无线连接:adb connect 192.168.0.111
无线连接需要开启网络ADB调试
进入shell:adb shell
上传文件到手机:adb push 电脑路径 手机路径
下载文件到电脑:adb pull 手机路径 电脑路径
安装APK:adb install APK路径
手机使用Termux
下载地址:
https://github.com/termux/termux-app/releases
配置旁路网关
建议先将手机设置为固定IP,方式很多请自行Google
一键脚本:
#!/system/bin/sh
tun='tun0' #虚拟接口名称
dev='wlan0' #物理接口名称,eth0、wlan0
interval=3 #检测网络状态间隔(秒)
pref=18000 #路由策略优先级
# 开启IP转发功能
sysctl -w net.ipv4.ip_forward=1
# 清除filter表转发链规则
iptables -F FORWARD
# 添加NAT转换,部分第三方VPN需要此设置否则无法上网,若要关闭请注释掉
iptables -t nat -A POSTROUTING -o $tun -j MASQUERADE
# 添加路由策略
ip rule add from all table main pref $pref
ip rule add from all iif $dev table $tun pref $(expr $pref - 1)
contain="from all iif $dev lookup $tun"
while true ;do
if $(ip rule) != *$contain* ; then
if $(ip ad|grep 'state UP') != *$dev* ; then
echo -e "[$(date "+%H:%M:%S")]dev has been lost."
else
ip rule add from all iif $dev table $tun pref $(expr $pref - 1)
echo -e "[$(date "+%H:%M:%S")]network changed, reset the routing policy."
fi
fi
sleep $interval
done
赋予可执行权限:chmod +x proxy.sh
执行:nohup ./proxy.sh &
更改网关
全局设备更改:修改主路由的DHCP设置
单一设备更改:更改设备的网关
排错:
安卓系统每次切换网络设置都会将部分设置重置,一些“永久生效”的配置方式在手机重启后也会被重置
检查IP转发功能是否启用:cat /proc/sys/net/ipv4/ip_forward
检查iptables是否允许数据包通过:iptables -nvL -t (filter|nat|mangle)
检查路由策略:ip rule
检查网卡接口:ip a
用安卓手机当软路由可行吗?
已知大部分软路由都是刷openwrt系统
并且openwrt是基于linux
又因为安卓也是基于linux
可知安卓就是软路由
没毛病
闲置的安卓手机相信大部分家庭都有
本期教大家利用它充当家里面的旁路网关
让他继续发光发热
你可以在手机上使用任何VPN进行科学上网
只要手机能科学上网你家里面的电脑
电视盒子
VR头显等网络设备不需要运行任何科学上网工具
只需要接入居域网
即可实现居域网内所有设备通过安卓手机进行科学上网
接触过软路由的朋友 是不是感觉非常熟悉
没错 我们要做的就是将安卓手机当旁路由用
这样做的好处是省去了购买软路由的钱
并且如果你之前没有接触过软路由的话
需要通过一定时间去学习才能上手
而安卓手机的话人人都会用
省去了这部分的学习成本
还有一个优势是VPN客户端非常丰富
你可以使用需要导入节点的clash
也可以使用自带节点的第三方VPN、加速器等客户端
并且可以突破设备限制
比如某VPN
他家的客户端只允许绑定两台设备
使用这个方式就可以突破限制
你可能知道其他通过手机共享网络的方式
比如wifi共享vpn
http代理共享等
这些都只能临时用一下
并且每台设备都需要单独设置
长期使用并不方便
而我介绍的这种旁路网关模式
是可以真正用来7x24小时长期稳定使用的方式
你可能听过透明网关
透明代理 旁路网关 旁路由 网关模式
网关代理等等这些名词
从原理来讲其实说的是同一种方式
由于通过不同终端设备实现
导致造出来这么多不同的术语
本期的实现方式使用旁路网关的叫法更贴切一点
其中的关键词就是网关
网关是什么 以及能干什么
我在节点搭建系列第一节已经详细介绍过了
感兴趣的朋友可以回去看一下
简单来讲 就是你家里面的电脑访问任何公网ip都需要去找网关
相当于家里面的网络出口
你可以简单的理解为网关就是路由器
旁路网关的意思是在旁边又加了一台当做网关的路由器
局域网其他设备访问任何公网ip都会交给这台旁路由
这台旁路由常见的做法是购买软路由设备
或者使用电脑开个linux虚拟机
或者使用linux开发版
而我们本期则是使用安卓手机来充当旁路由
只要确保这台手机能科学上网
使用它当做网关的其他设备也都可以实现科学上网了
对于局域网其他设备而言
他并不知道网关已经帮他实现了科学上网
这个过程对他来讲是完全透明的
所以也称为透明代理
或者叫透明网关
虽然从硬件配置的角度来看手机肯定要比软路由性能强悍
但手机毕竟是手机 不是一个路由器
没有专门针对路由转发做相应的优化
甚至可能为了省电还会有性能限制
肯定是比不过专门为路由开发的openwrt系统
和专门为路由而生的软路由设备
不过 这种旁路网关的方式可以很大程度上减少手机的负担
内网设备之间的数据传输并不需要经过手机
只有上网的数据才需要发给手机进行路由转发
这样才让路由转发性能不强的安卓手机充当网关成为可能
经过我的实际使用体验
跑满我本地的100M带宽是没有任何问题的
什么
作为一个专注与网络知识分享的youtuber博主
竟然还在使用100M的带宽
我的上帝
还使用了两台上古时期的路由器
分别是2009年产的DIR-600M
和2010年产的MW300R
通过一条19.9元包邮长度30米的垃圾网线连接
unbelievable
我的实际网络环境就是这样子的
主要的原因是因为穷
字幕君:企图掩盖穷的本质
可以发现我的网络拓扑中性能最好的
就是这台不是路由器的安卓手机了
由于性能瓶颈不在手机上
所以接入旁路网关之后感觉不到区别
没法测出手机的性能极限
我的安卓手机是锤子的坚果Pro2s
安卓9 刷的魔趣系统
这个配置当路由跑个500M应该是没有问题的
大家的设备和系统应该都不一样
由于各个手机厂商对安卓系统进行不同程度的定制
所以在我这里能成功实现并不代表适合所有安卓手机
如果你的预期效果和我不同
只能靠你自己想办法解决了
接下来正式开始教程
首先 第一步
先将手机root
这是最难的一步
只要root了后面就简单了
root之后最好再刷一个比较原生的安卓系统
每个厂商的root方式都不太一样
只能靠你自己去网上找相关的教程去解决了
接着我们需要进入手机的命令行环境
电脑端可以使用adb工具
手机端可以使用termux
我这里演示以电脑为例
下载你电脑对应的adb版本
我这里下载windows版本
下载完成之后 将其解压出来
进入该文件夹
直接在地址栏输入cmd回车
即可在当前目录运行cmd
在连接安卓手机的命令行之前
我们还需要先开启安卓的
调试模式
在设置里的开发者选项
每个品牌都略有不同
我的在系统的高级里
目前并没有看到
因为默认情况下是隐藏的
点击关于手机
划到最底下的版本号
对其疯狂输出七次
会提示我们启动了开发者选项
回到刚才的位置
进入开发者选项设置
首先将root授权开启
然后将安卓调试开启
我这边默认已经开启了
如果你是直接通过usb将手机连接电脑
这样设置之后就可以直接使用了
如果你是通过wifi或者网线连接局域网
需要开启网络adb调试
设置完成之后 就可以将你的手机通过usb连接电脑
接着 在cmd命令中输入adb devices
查看已连接的设备
可以看到已经连接了
如果你的没有输出结果
你可以尝试自己排错
搞不定的话可以使用待会要讲的手机终端termux
然后使用adb进入手机的命令行界面
输出这一行就表示已经成功进入了手机的shell
确保这里是#号 表示 root用户
输入ls可以查看手机的文件列表
用法和linux的终端是一样的
如果觉得用电脑连接很繁琐
就可以使用手机终端termux
进入这个网址下载
大部分较新的设备都可以安装第一个
如果不清楚 可以直接下载这个通用版
效果是一样的 只是安装包有点大
我这里已经安装好了
直接打开即可进入命令行环境
可以看到开头是$
这个是普通用户
输入su回车切换为root用户
提示我们需要授权 点击允许
这样就变成了root用户的#号
接下来的操作都是一样的
输入ls可以查看手机的文件列表
我这里为了方便视频演示 就直接使用adb了
首先需要先确保手机可以正常的科学上网
我这里以clash为例 你可以使用任何vpn工具
点击启动服务
此时右上角多了一把小锁
说明开启了VPN服务
你手机的图标可能和我的不太一样
尝试一下是否可以正常访问谷歌
可以看到是没有问题的
另外还需要再补充一点 作为网关使用
手机的ip地址 强烈建议改成静态ip
设置的方式有很多 可以使用linux指令
也可以在主路由上绑定静态ip到mac地址
还可以直接在手机上设置
我这里演示直接在手机上设置
打开wifi设置
进入你当前连接的wifi设置
可以在高级中查看路由器目前给我们分配的ip信息
但是这个ip并不是固定的
下次连接可能就变了
所以需要手动设置成固定的静态ip
在当前的wifi设置中 将dhcp改成静态
然后输入你需要的地址
注意要和刚才自动分配的ip段在同一网段
为了好记 我这里设置成192.168.0.123
如果实在不会填写
可以直接填写刚才路由器给我们手机自动分配的ip信息
保存后 ip就不会再随意变动了
再来确认一下是否可以正常上网 没有问题
确保手机的ip固定不变
确保手机可以科学上网
这样前期的准备就算是完成了
接下来要让他成为一台网关
在手机的shell里执行这条指令进入这个目录
创建一个名叫proxy的文件夹
进入到这个文件夹
使用vi编辑器创建一个名为proxy.sh的脚本文件
如果对vi编辑器使用不熟悉
也可以直接使用文件管理器创建
复制我给大家准备的这段脚本
将其粘贴上去
可以看到中文注释乱码了
不影响 将其保存 退出
可以查看一下当前目录下的文件
目前这个文件没有可执行权限
输入这条指令赋予可执行权限
这样就可以执行了
最后再输入这条指令 将其设置成后台运行
此时这台手机就成为了一台旁路网关
就是这么简单
接着 我们需要将局域网其他设备的网关改成这台手机的ip地址
有两种方式
一种是直接修改主路由的dhcp设置
让其直接给局域网的其他设备下发手机ip作为网关
这样做的好处是可以让所有设备直接翻墙了
另一种是手动修改单一设备的网关
只有这台修改了网关的设备才能进行翻墙
看你自己的需求
我这里先演示第一种
先来查看一下我这台电脑当前的网关
默认网关是192.168.0.1
也就是说 访问任何公网ip都会转交给这个地址
这个ip地址是我们的主路由
在浏览器中访问该地址进入路由器的控制台
输入账号密码进行登录
默认账号密码一般写在路由器的底部
直接输入密码进行登录
每个厂商的设置页面都不太一样
但是都会有dhcp功能 自己找一下
找到之后我们只需要改动网关这里
将其改成手机的ip地址
也就是123 点击保存
此时再有设备接入当前网络
路由器给该设备下方的网关就变成了手机的ip地址了
此时我们需要重新连接来获取新的ip信息
找到你的网络设置页面 先将网卡禁用
然后再启用
接着再来查看ip信息
可以看到默认网关已经变成了手机ip地址
接下来电脑不需要运行任何科学上网工具即可直接翻墙了
退出科学上网工具 尝试访问谷歌
可以看到是没有问题的
查看一下当前节点的ip
这是香港的节点
在clash中切换节点试试
可以看到电脑一起跟着换了
如果你的预期效果和我一样 那是最好的
说明你已经成功实现了旁路网关
由于各个手机系统的差异
在仔细确保每部操作都没问题 还是无法使用
可以在评论区反馈
此时我们可以在手机上运行任何vpn工具
注意 在切换其他VPN客户端之前 最好是先断开原来的VPN服务
否则可能会出现无法连接的情况
后面会说明
尝试使用v2rayNG
切换为日本的节点
可以看到也是没有问题的
也可以使用自带节点的第三方VPN客户端
比如某VPN 连接了阿根廷的节点
也是没有问题的
另外 这种方式可以突破设备限制
由于没有流量限制
他家一个账号只能绑定两台设备
明显是不够用的
当旁路网关之后
局域网所有的设备都可以直接使用了
无视设备限制
其他有设备限制的VPN客户端应该都能突破
尝试更换节点
另外设备的分流信息也是跟着旁路网关走的
由于缓存的原因 出现了两个IP
换个其他的网站来测试
可以看到是没有问题的
分流规则为全局模式
回到clash
此处有一个注意事项
当我们点击启用时
右上角的小锁并不是先消失再重新显示
也就是说 clash在启动VPN服务前并没有帮我们优雅的先关闭VPN服务
而是直接将VPN服务挤掉了
这样造成的问题是 虚拟网卡接口的名称会发生变化
我给大家提供的脚本需要手动设置接口名
所以是固定的 如果名称发生了变化
将会无法正常添加路由规则 导致无法科学上网
解决方法也很简单
只需要先断开连接 再重新启用即可
这样虚拟网卡的接口名称又会恢复了
这种情况只会出现在切换不同VPN客户端时才会出现
直接在clash中切换其他节点是不会出现这种情况的
接下来 尝试进行测速
我家的带宽是一百兆
目前手机是通过wifi连接到局域网的
只跑到了二十兆 由于我家的上古配置
这个结果也在意料之中
如果你家的wifi质量不错
直接使用wifi就可以了
如果你想更快速稳定
建议和我一样购买一条type-c转网卡的转换器
使用网线将手机接入主路由
这样速度会非常稳定和快速
并且为了让其7x24小时在线
最好买个带PD充电口的转换器
接着就来演示使用网线接入的方式
先将脚本停止 你可以直接重启手机
或者在手机终端输入这条指令
查看脚本的进程id为3241
通过kill命令将进程杀死
建议直接将wifi关闭
然后将手机通过网线插在主路由上
连接之后可以在这里看到有线连接的图标
wifi和网线使用的接口是不一样的
所以ip地址也不一样
我们可以在手机终端查看ip地址
输入su 切换为root用户
输入ip a 回车
可以查看各个网络接口设备的信息
比如wlan0就是wifi的接口
wlan1就是手机开启wifi共享的接口
tun0就是vpn开启的虚拟网卡接口
eth0就是网线接口
可以在下方查看当前接口的局域网ip是192.168.0.111
还有mac地址
由于充电口被转换器占用
无法通过usb直接连接 电脑访问adb
可以使用adb connect 192.168.0.111
使用网络连接的方式访问adb
连接之后就可以进入shell了
现在我们的网关地址需要改成网线接入的地址
也就是192.168.0.111
但是我并不希望家里所有设备都翻墙
那就可以手动为单台设备设置网关
先将dhcp配置恢复
另外 网线接口在手机上配置静态ip不太方便
可以在你家的路由器上将接口的mac地址和ip进行绑定
这样也能实现每次连接都会分配相同的ip地址
接着我们来测试一下在连接网线的情况下测速是否有提升
先确定手机可以科学上网
接着回到刚才存放脚本的位置
此时需要修改一下脚本
将这里的接口改成网线接口
也就是eth0 保存退出
然后后台启动脚本
这里有一条提示信息
是之前添加的路由策略 不用管
ctrl+c退出即可
由于我们没有配置dhcp
下发给电脑的网关并不是手机的ip
所以需要手动配置电脑的ip地址
跟着视频的演示找到配置ip的位置
给电脑随便设置一个同网段的ip
关键是默认网关要设置成手机的ip地址
也就是111
另外关于dns 如果出现某些网站无法访问
大概率是dns污染的问题
将其改成1.1.1.1
可以缓解dns污染的问题
但是会出现其他问题
比如国内网站解析到国外
dns是一个比较棘手的问题
后续会专门出视频讲解
修改完成后 这台电脑的网关会变成手机
其他设备要想科学上网 也需要手动配置网关
尝试访问
可以看到是没有问题的
接着来测试一下 看看通过网线连接的方式对速度有没有提升
这个速度已经非常不错了
已经算是跑满我的带宽了
我直连也差不多只能跑到这个速度
最后再说一点注意事项
手机每次重启后网络设置都会被重置
需要再次重新启动一键脚本
有的手机可能熄屏之后 为了省电会降低设备性能
当路由器用肯定不能让这种情况发生
网络需要时刻保持稳定
将一切省电的选项全部关闭
性能调整为最优
并且关闭没必要的后台进程
这些的话就需要你自己去了解了
毕竟每个人的设备不一样
如果你的手机出现莫名其妙无法解决的问题
可以直接重启手机
网络设置都会被恢复
如果操作的过程中有什么问题 或者解决了什么疑难杂症
也可以在评论区给大家分享
完成知识的传递
这是第一种方式
使用安卓的VPN服务实现旁路网关
好处是可以直接在手机上切换节点
坏处是只能在手机上切换节点
如果手机不再触手可及的地方
切换节点还比较费劲
还有一种方式可以绕过安卓系统的VPN服务
直接使用linux内核加载v2ray
或者clash的内核实现旁路网关
通过clash的webui
就能在局域网的其他设备上切换节点了
就和普通的linux开发版用法是一样的
好处是切换节点比较方便
坏处是无法使用第三方VPN客户端
由于时间关系 本期就不介绍了
毕竟这个需求比较小众。)
----------------------------------------
https://www.youtube.com/watch?v=ytgTOQOaqcs
闲置安卓手机代替光猫,全家共享网络并实现全局科学上网,宽带都不用拉!使用移动蜂窝网络代替光纤宽带的三种方法,搭配免流教程白嫖手机流量,省下每月上百元的宽带费用
----------------------------