使用软路由、cf、反代、frp等建立个人/家庭网络 - 网络技术(Networking)版 - 北大未名BBS
返回本版
1
2
3
4
下一页 >
/ 4
跳转

使用软路由、cf、反代、frp等建立个人/家庭网络

[复制链接]
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 1楼

0. 写在前面

        自从购入了某双网口小主机用作软路由后,lz一发不可收拾,在家陆续搭建了个人服务器以及其上搭载的各类服务,包括但不限于jellyfin(影音流媒体),next_terminal(堡垒机与远程连接管理和共享),lms(音乐播放器),alist(网盘管理),kodbox(可道云,云文件管理),qbit(bt下载),jupyter(代码管理和共享),bitwarden(密码管理),frpc(内网穿透)等。

        众所周知,国内是很难获取公网ip的,对于建站等需备案的服务要求也极其严格,以上也是曾经很大程度劝退lz折腾这些的因素。但经研究发现,利用恰当的工具及配置,是很容易绕开所有的限制的,因此本文也主要是分享这个模式,希望能够对大家有所启发和帮助,也欢迎大家多多交流。

        最终我们期望达成的效果为,使用同一个域名,在局域网外可以正常访问局域网内的服务(但可能速度较慢,因为是有cf的代理),在局域网内也可以使用该域名正常访问同一个服务,但走的路径是局域网内直连,而非出局域网走cf的代理再绕回来。


1. 需要准备的材料

        1.1 一个域名,最好长期使用,并解析到cf(必备)。注:cf即cloudflare,可以白嫖众多服务,大家都亲切地称呼其为大善人,后文中大家可以发现其发挥着无法替代的作用,也是本操作的核心。当然享受这一切的前提是需要有域名解析进去。建议大家在海外的域名平台上购买域名,一是长期使用价格一般比国内低,二是海外对建站这些事没这么敏感,不需要到处搞身份验证备案什么的,相对轻松些。毕竟我们所有的服务也都自己用,并不打算在国内备案。

        1.2 至少一台linux服务器(必备)。作为我们所需要的服务所搭建的平台,如果有一定linux/docker基础,应该可以发现在linux架构下搭建和管理自己的服务端省时省心。毕竟管理服务端完全用不到图形化桌面。

        1.3 软路由(必备,或可替换为具备dns反代功能的路由器,常开)。软路由一般也为linux服务器,使用软路由可以极大丰富我们对网络的操控和管理。必备软路由的原因是需要将我们的域名在内网解析至反向代理服务端。

        1.4 内网反向代理服务端(必备,常开)。该服务端必须常年运行,作用为在内网将子域名分发至各个服务。

        1.2-1.4所提到的机子可以是同一台,这也是大家常提到的AIO(All In One),不过操作不当可能会变成AIB(All In Boom),所有东西一起挂掉,希望大家谨慎


2.操作步骤

        2.1 使用cf的Tunnels功能进行服务端内网穿透

        该步骤目的是能够使内网服务端在公网进行访问,具体操作步骤为:

        2.1.1 在内网某台机子上建立隧道客户端:

        登录cf,左侧边栏单击选择Zero Trust,进入后左侧边栏单击Networks下三角,进一步弹出的选项里单击选择Tunnels,界面点击Create a tunnel,根据cf提供的步骤在自己的服务端/软路由/win客户端/其他设备上建立隧道,这个建立隧道的设备需要满足的要求是:能够在内网访问所有需要访问的服务,且在外网访问内网服务时,这个设备需满足开启且在运行cf Tunnel程序的状态。

        2.1.2 为某一个需要公网访问的服务建立隧道:

        建好隧道后,该页面点击对应的Tunnel name,在右边弹出栏中选择edit,弹出界面上方选择Public Hostname,页面切换后点击Add a public hostname,弹出界面中,Subdomain为子域名,Domain选择解析到cf的域名,Path留空。下方Type选http,URL填写内网访问该服务的IP地址及端口。或者说,在内网访问该服务时地址栏写啥这里就写啥。填完后右下角Save Hostname

        做完这一步之后,这一个服务应该就可以用你的域名在公网进行访问了,一般国内的延迟在200ms左右,大家可以进行测试。

        2.1.3 重复2.1.2的步骤,为所有的服务搭建隧道


        2.2 使用内网反向代理服务端,配合软路由,将域名解析至内网ip和端口

        经过以上操作后,我们在局域网外应该是能正常使用域名访问我们的服务了,在局域网内也可以正常访问,但是相比局域网内ip+端口的模式会慢不少,因为流量实际上是走cf绕了一圈回来。因此采用软路由dns反向代理解析域名至内网反代服务端+内网反代服务端反向代理解析子域名至对应的服务上,这一思路可以使我们用同一个域名在内网走内网链路访问服务。

        2.2.1 软路由dns反向代理解析域名至内网反代服务端

        软路由系统lz选择ikuai,主要因为配置简单+功能丰富。Ikuai环境下操作步骤为:网络设置-DNS设置-DNS设置-开启DNS加速服务-开启强制客户端DNS代理-最下方添加DNS反向代理。域名为*.+你解析到cf的域名,解析类型ipv4,解析地址为内网反代服务端的IP地址。

        2.2.2 内网反代服务端反向代理解析子域名至对应的服务上

        内网反代服务端lz选择在软路由docker下架设的lucky服务,当然也可以选择nginx等其他服务。lz是小白,搞不定nginx的配置文件,lucky全图形化配置,方便友好,资源占用也低,强烈推荐。

        具体操作步骤如下:在lucky面板左侧选择web服务,点击添加web服务规则,监听类型全选,监听端口443(https默认端口)。之后在创建的规则下添加子规则,前端地址为2.1为访问该服务在局域网外用到的地址(即子域名),后端地址为局域网内直接访问该服务用到的地址(局域网内ip+端口),其他的都不用改。

        进行测试可以发现,在局域网内也可以用域名快速访问对应服务了,使用tracert(win平台)或traceroute(linux平台)对域名进行追踪可以发现访问路径为内网路径。


        经过以上步骤,即可以达成我们的目标,即同一域名在内外网,均以最佳的方式访问同一个服务。在该策略下,大家可以发现全程没有使用任何公网ip,所有的域名也仅仅只是解析到cf的cdn节点,因此该策略具备极强的普适性。甚至说,即使有了公网ip,因为大部分的服务其实不刚需低延迟,结合曾经爆出新闻运营商可能会扫描所有端口看有没有人私自建站,使用cf的方案甚至也优于公网ip。毕竟,公网ip还有更重要的用途,尤其是刚需低延迟的时候(没错说的就是你,RDP)。


3. 写在后面:该方案的不足与补充

        3.1 该方案主要解决家庭组网,在校园网环境下,该策略其实仍不完全好用。因为校园网是个大局域网,理想环境下在校园网内且在自己在校园网内搭的局域网(如宿舍自建的wifi等)外时,也应当直接走校园网访问自己的服务,而不是从cf绕一圈。但显然,校园网的绝大多数使用者无法在校园网全网的环境下配置dns反代和静态路由。这一情况是否有好的解决方法,也可以请大家集思广益。

        3.2 RDP怎么办?

        cf的服务有两个问题,一是延迟高,二是根本就不支持tcp协议,因此无法用于RDP。但在白嫖cf解决绝大多数服务的问题后,RDP显得并不那么棘手。在没有公网ip的情况下,可以白嫖市面上部分提供免费frp服务的站点。目前lz的感觉,国内最好用的是skaura frp,白嫖的情况下每月10g基础流量+签到赠送流量,带宽10mbps,可以创建两个免费服务。大家选择离自己近的节点,延迟基本可以控制在100ms内,远程桌面是差不多够用了。使用skaura提供的frp配置文件与自己的frpc客户端进行反代映射即可。

        当然,rdp也可以做到同一个连接配置在局域网内走局域网,在局域网外走skaura的效果。在cf将子域名做cname解析至frp提供的域名,然后在lucky内做端口转发即可。

        3.3 关于软路由

        软路由功能强大,包括但不限于多条wan聚合,流控分流设置,自动化科学上网,静态路由配置,dns代理等等,推荐大家研究和使用。

        一般情况下软路由需要至少有两个板载的网口,这件事情在一般的电脑上并不常见。当然对于只有单网口的主机也可以做软路由,使用usb转网口即可,但该操作配置复杂,需要在无网络或非软路由接入其他路由lan口的情况下做usb网口的驱动,不建议大家轻易尝试。


欢迎大家互相交流指正

 最后修改于2024-08-14 11:29:18
  • 发表于2024-08-14 11:26:21

yzs [离线]

江户川闰土

4.2维尼熊

发帖数:2104 原创分:0
<ASCIIArt> 2楼

nb


我记得cf zero trust是可以反代ssh的,几年前搞过现在不知道了

naonao (12138) 在 ta 的帖子中提到:

0. 写在前面

        自从购入了某双网口小主机用作软路由后,lz一发不可收拾,在家陆续搭建了个人服务器以及其上搭载的各类服务,包括但不限于jellyfin(影音流媒体),next_terminal(堡垒机与远程连接管理和共享),lms(音乐播放器),alist(网盘管理),kodbox(可道云,云文件管理),qbit(bt下载),jupyter(代码管理和共享),bitwarden(密码管理),frpc(内网穿透)等。

        众所周知,国内是很难获取公网ip的,对于建站等需备案的服务要求也极其严格,以上也是曾经很大程度劝退lz折腾这些的因素。但经研究发现,利用恰当的工具及配置,是很容易绕开所有的限制的,因此本文也主要是分享这个模式,希望能够对大家有所启发和帮助,也欢迎大家多多交流。

……

签名档


发表于2024-08-14 16:41:53

ANMEWM [在线]

西岭白鹭

3.7中级站友

发帖数:966 原创分:0
<ASCIIArt> 3楼

感谢楼主分享

自己想搭建软路由让多台电脑科学上网,请问有什么推荐吗?包括软件/方法/教程等等

naonao (12138) 在 ta 的帖子中提到:

0. 写在前面

        自从购入了某双网口小主机用作软路由后,lz一发不可收拾,在家陆续搭建了个人服务器以及其上搭载的各类服务,包括但不限于jellyfin(影音流媒体),next_terminal(堡垒机与远程连接管理和共享),lms(音乐播放器),alist(网盘管理),kodbox(可道云,云文件管理),qbit(bt下载),jupyter(代码管理和共享),bitwarden(密码管理),frpc(内网穿透)等。

        众所周知,国内是很难获取公网ip的,对于建站等需备案的服务要求也极其严格,以上也是曾经很大程度劝退lz折腾这些的因素。但经研究发现,利用恰当的工具及配置,是很容易绕开所有的限制的,因此本文也主要是分享这个模式,希望能够对大家有所启发和帮助,也欢迎大家多多交流。

……

发表于2024-08-14 20:30:14
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 4楼

建宝塔或者1panel或者next terminal,http访问服务一样能调起ssh,归根结底,ssh有延迟也能用,怎么都好说

yzs (江户川闰土) 在 ta 的帖子中提到:

nb


我记得cf zero trust是可以反代ssh的,几年前搞过现在不知道了

发表于2024-08-14 21:28:21
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 5楼

我的操作是,软路由那台机子装pve,里面俩虚拟机,ikuai和openwrt。ikuai作主路由,openwrt装openclash(或其他的)负责科学上网。pve虚拟出一个网口,同时分配给ikuai(wan2)和openwrt(lan1),将ikuai的lan1口也分配给openwrt做wan1口,ikuai的wan1口负责拨号上网,不共享给op。在ikuai设置规则,触发特定域名或ip时流量走wan2,此时wan2连接到了op的lan1,op小软件常开实现科学上网。op的wan1再连ikuai的lan1,再走ikuai的wan1与公网连通。


总体来说就是设置一个旁路由,触发特定规则的时候流量走旁路由绕一圈回来。


可以参考此教程:https://www.bilibili.com/read/cv34815260/?jump_opus=1

但此教程有个坑,如果用的是openwrt需要建好虚拟机后进后台vi /etc/config/network,检查wan和lan的网口是否正确(可以用mac地址对着看)。如不正确需要做修正,以及更新wan口为正确的dhcp网关(即ikuai的网关)

ANMEWM (西岭白鹭) 在 ta 的帖子中提到:

感谢楼主分享

自己想搭建软路由让多台电脑科学上网,请问有什么推荐吗?包括软件/方法/教程等等

发表于2024-08-14 21:47:10

ANMEWM [在线]

西岭白鹭

3.7中级站友

发帖数:966 原创分:0
<ASCIIArt> 6楼

楼主写的看的是懵懵懂懂,教程看的是云里雾里,看来对新手来说有点难度。

我现在的机子是有两个物理网口,这个要怎么操作呀?还有就是,可以不用虚拟机吗,虚拟机完全不懂

naonao (12138) 在 ta 的帖子中提到:

我的操作是,软路由那台机子装pve,里面俩虚拟机,ikuai和openwrt。ikuai作主路由,openwrt装openclash(或其他的)负责科学上网。pve虚拟出一个网口,同时分配给ikuai(wan2)和openwrt(lan1),将ikuai的lan1口也分配给openwrt做wan1口,ikuai的wan1口负责拨号上网,不共享给op。在ikuai设置规则,触发特定域名或ip时流量走wan2,此时wan2连接到了op的lan1,op小软件常开实现科学上网。op的wan1再连ikuai的lan1,再走ikuai的wan1与公网连通。

总体来说就是设置一个旁路由,触发特定规则的时候流量走旁路由绕一圈回来。

可以参考此教程:https://www.bilibili.com/read/cv34815260/?jump_opus=1

……

发表于2024-08-14 23:29:45

ysmintor [在线]

YorkYu

3.4水盆

发帖数:534 原创分:0
<ASCIIArt> 7楼

国外称为HomeLab。

文字有点长,提炼下

1.外网访问内网核心是内网程序保活,用于建立信道。

2.内网访问服务要快,所以内网自建了DNS来解析域名到内网IP。

技术好文。

naonao (12138) 在 ta 的帖子中提到:

0. 写在前面

        自从购入了某双网口小主机用作软路由后,lz一发不可收拾,在家陆续搭建了个人服务器以及其上搭载的各类服务,包括但不限于jellyfin(影音流媒体),next_terminal(堡垒机与远程连接管理和共享),lms(音乐播放器),alist(网盘管理),kodbox(可道云,云文件管理),qbit(bt下载),jupyter(代码管理和共享),bitwarden(密码管理),frpc(内网穿透)等。

        众所周知,国内是很难获取公网ip的,对于建站等需备案的服务要求也极其严格,以上也是曾经很大程度劝退lz折腾这些的因素。但经研究发现,利用恰当的工具及配置,是很容易绕开所有的限制的,因此本文也主要是分享这个模式,希望能够对大家有所启发和帮助,也欢迎大家多多交流。

……

发表于2024-08-14 23:37:05
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 8楼

emmm,pve还是好用的,如果不用pve的话,可以考虑ikuai里面装虚拟机(需要cpu满足一定要求)或者直接装openwrt然后装openclash,如果想简单就直接openwrt里面装openclash插件


网上教程关于openwrt和openclash应该一抓一大把,直接参考就行。你的物理机是双网口,基本上是easy模式了。

ANMEWM (西岭白鹭) 在 ta 的帖子中提到:

楼主写的看的是懵懵懂懂,教程看的是云里雾里,看来对新手来说有点难度。

我现在的机子是有两个物理网口,这个要怎么操作呀?还有就是,可以不用虚拟机吗,虚拟机完全不懂

签名档


 最后修改于2024-08-15 08:43:22
  • 发表于2024-08-15 08:41:16

ANMEWM [在线]

西岭白鹭

3.7中级站友

发帖数:966 原创分:0
<ASCIIArt> 9楼

用软路由是为了让实验室十几台电脑实现科学上网,目前我们有机器也有交换机

naonao (12138) 在 ta 的帖子中提到:

emmm,pve还是好用的,如果不用pve的话,可以考虑ikuai里面装虚拟机(需要cpu满足一定要求)或者直接装openwrt然后装openclash,如果想简单就直接openwrt里面装openclash插件


网上教程关于openwrt和openclash应该一抓一大把,直接参考就行。你的物理机是双网口,基本上是easy模式了。

发表于2024-08-15 10:23:12

Omnivorous [离线]

大佬的膝盖

2.9主序星

发帖数:152 原创分:0
<ASCIIArt> 10楼

为什么不用tailscale之类的简便方案

naonao (12138) 在 ta 的帖子中提到:

0. 写在前面

        自从购入了某双网口小主机用作软路由后,lz一发不可收拾,在家陆续搭建了个人服务器以及其上搭载的各类服务,包括但不限于jellyfin(影音流媒体),next_terminal(堡垒机与远程连接管理和共享),lms(音乐播放器),alist(网盘管理),kodbox(可道云,云文件管理),qbit(bt下载),jupyter(代码管理和共享),bitwarden(密码管理),frpc(内网穿透)等。

        众所周知,国内是很难获取公网ip的,对于建站等需备案的服务要求也极其严格,以上也是曾经很大程度劝退lz折腾这些的因素。但经研究发现,利用恰当的工具及配置,是很容易绕开所有的限制的,因此本文也主要是分享这个模式,希望能够对大家有所启发和帮助,也欢迎大家多多交流。

……

发表于2024-08-15 14:01:15
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 11楼

粗暴一点直接上openwrt吧,lan口网线接出来接交换机,接出来后啥都有了

ANMEWM (西岭白鹭) 在 ta 的帖子中提到:

用软路由是为了让实验室十几台电脑实现科学上网,目前我们有机器也有交换机

签名档


发表于2024-08-15 14:22:23
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 12楼

因为无法在没有预装tailscale的电脑上访问,而cf方案可以在全世界任意一个地方任意一台电脑访问


比如突发情况要使用一台不是自己的电脑的时候,基本不用担心cf方案无法连接上去,也不需要花时间配置,记得网址就行

Omnivorous (大佬的膝盖) 在 ta 的帖子中提到:

为什么不用tailscale之类的简便方案

签名档


发表于2024-08-15 14:24:11

sport [在线]

magic

3.6中级站友

发帖数:719 原创分:0
<ASCIIArt> 13楼

frp也可以把内网服务暴露到外网,public server搞一个vps安装frps,内网服务的server上安装frpc客户端。临时的话,ssh也可以端口转发。科学上网也可以在public  vps上自己搭一个trojan服务。ssh本身也可以临时科学上网,动态端口转发就行。

naonao (12138) 在 ta 的帖子中提到:

我的操作是,软路由那台机子装pve,里面俩虚拟机,ikuai和openwrt。ikuai作主路由,openwrt装openclash(或其他的)负责科学上网。pve虚拟出一个网口,同时分配给ikuai(wan2)和openwrt(lan1),将ikuai的lan1口也分配给openwrt做wan1口,ikuai的wan1口负责拨号上网,不共享给op。在ikuai设置规则,触发特定域名或ip时流量走wan2,此时wan2连接到了op的lan1,op小软件常开实现科学上网。op的wan1再连ikuai的lan1,再走ikuai的wan1与公网连通。

总体来说就是设置一个旁路由,触发特定规则的时候流量走旁路由绕一圈回来。

可以参考此教程:https://www.bilibili.com/read/cv34815260/?jump_opus=1

……

发表于2024-08-15 15:02:05
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 14楼

学到了,感谢大佬


最主要的一个问题是,国内的vps太贵了,国外的vps延迟略高,本着能嫖就嫖的精神,就emmmm

sport (magic) 在 ta 的帖子中提到:

frp也可以把内网服务暴露到外网,public server搞一个vps安装frps,内网服务的server上安装frpc客户端。临时的话,ssh也可以端口转发。科学上网也可以在public  vps上自己搭一个trojan服务。ssh本身也可以临时科学上网,动态端口转发就行。

签名档


发表于2024-08-15 15:16:49

TheUnkindled [离线]

AAA钩机叉车租赁老张

3.4中级站友

发帖数:478 原创分:0
<ASCIIArt> 15楼

可以试试sakura frp

免费的10M 40G流量

个人用户够用了


国内还有的Tailscale服务的还有Xedge


我现在日常就是用这两个

naonao (12138) 在 ta 的帖子中提到:

学到了,感谢大佬


最主要的一个问题是,国内的vps太贵了,国外的vps延迟略高,本着能嫖就嫖的精神,就emmmm

发表于2024-08-15 15:33:27

ANMEWM [在线]

西岭白鹭

3.7中级站友

发帖数:966 原创分:0
<ASCIIArt> 16楼

小白多问几句,是说机器只需要装openwrt吗?然后这台机器lan口接交换机?

naonao (12138) 在 ta 的帖子中提到:

粗暴一点直接上openwrt吧,lan口网线接出来接交换机,接出来后啥都有了

发表于2024-08-15 16:07:15
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 17楼

感谢,待我研究一下Xedge

skaura确实好用,就是免费隧道数太少了

TheUnkindled (AAA钩机叉车租赁老张) 在 ta 的帖子中提到:

可以试试sakura frp

免费的10M 40G流量

个人用户够用了

……

签名档


发表于2024-08-15 16:34:02
楼主

naonao [离线]

12138

4.3主序星

发帖数:2851 原创分:2
<ASCIIArt> 18楼

对,机器装opwrt,lan接交换机,wan接上游过来的网线,交换机下面接你们的设备

ANMEWM (西岭白鹭) 在 ta 的帖子中提到:

小白多问几句,是说机器只需要装openwrt吗?然后这台机器lan口接交换机?

签名档


发表于2024-08-15 16:35:09

ANMEWM [在线]

西岭白鹭

3.7中级站友

发帖数:966 原创分:0
<ASCIIArt> 19楼

感谢楼主细心解答,我按照这个方法去尝试,有问题再来叨扰

naonao (12138) 在 ta 的帖子中提到:

对,机器装opwrt,lan接交换机,wan接上游过来的网线,交换机下面接你们的设备

发表于2024-08-15 20:28:59

Bigscience [在线]

🔞🧜‍♀️|已毕业87天11时21分40

4.6主序星

发帖数:4229 原创分:6
<ASCIIArt> 20楼

感谢分享折腾home lab的经验,已为您申请原创分,Networking版因你而精彩!

Networking版版务Bigscience敬上

naonao (12138) 在 ta 的帖子中提到:

0. 写在前面

        自从购入了某双网口小主机用作软路由后,lz一发不可收拾,在家陆续搭建了个人服务器以及其上搭载的各类服务,包括但不限于jellyfin(影音流媒体),next_terminal(堡垒机与远程连接管理和共享),lms(音乐播放器),alist(网盘管理),kodbox(可道云,云文件管理),qbit(bt下载),jupyter(代码管理和共享),bitwarden(密码管理),frpc(内网穿透)等。

        众所周知,国内是很难获取公网ip的,对于建站等需备案的服务要求也极其严格,以上也是曾经很大程度劝退lz折腾这些的因素。但经研究发现,利用恰当的工具及配置,是很容易绕开所有的限制的,因此本文也主要是分享这个模式,希望能够对大家有所启发和帮助,也欢迎大家多多交流。

……

签名档

But mitochondria is the powerhouse of the cell


发表于2024-08-16 10:49:33
返回本版
1
2
3
4
下一页 >
/ 4
跳转

请您先 登录 再进行发帖

快速回复楼主
标题
建议:≤ 24个字
签名档
发布(Ctrl+回车)

您输入的密码有误,请重新输入