树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!)

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第1张图片如上一篇比较无聊的文章所讲,我们可以通过一些方式拿到我们自己家里的公网 IP 地址,同时通过对家里路由器的一些简单设置,我们便可以通过互联网访问到家里网络内的 NAS 主机,同时在上一篇文章的结尾也曾经提及过,那种方法虽然我们可以实现外网访问的功能,但是对于网络安全方面来说,也是一种极大的挑战,例如,你的用户名和密码比较好猜,这样网络上别有用心的人一旦知道你的 IP 地址和相关的服务,他们会利用一切办法去破解你的账号,而恰巧你的用户名密码又比较好猜,那后果你可以自己好好想想了。

有些人可能会说: 我洁身自好, 身正不怕影子歪, 黑客进来也不能拿我怎么样, 我没有小电影之类的; 黑客进来在你电脑装个挖矿插件, 或者网赚的程序, 你家电表疯狂的转, 你家网络疯狂的卡, 结果后来排查你家这台映射出去的电脑一天跑了 150GB 的流量的时候, 你才知道侥幸这个事儿最终害得还是你自己.

关于侥幸这个事情

上一篇文章的链接,<< 虽然对于上篇文章来说, 没有足够的安全防控能力的人不推荐那样配置, 但是大家还是可以可以看看的.

#上周干嘛去了?#

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第2张图片

坦白讲,当牛马,作为一个即将要干到小 70 岁才能退休的当代年轻人来说,正常周一到周五一定是在当牛马,但今天休息,不提牛马的事情,除了牛马之外,肯定最主要的任务就是宇宙机器人了,上周五开始玩,周六的时候宇宙机器人的联名 PS5 手柄到了,于是使用新手柄玩儿宇宙机器人,天天玩,夜夜玩,没时没晌的玩儿,去朋友家玩儿也在用 ipad 玩儿,等媳妇儿下班也在车上玩儿,没错,我就是如此热爱宇宙机器人,像口袋妖怪里面的皮卡丘一样。

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第3张图片

有网友肯定会疑惑: 你这不扯么, PS5 这种路由器虽然我们家也有,你这在外面用 ipad 玩就有点过于吹牛逼了吧?但事实上,从 ps4 路由器发布之后,所以对于路由器就有了一个突破路由器本质的功能: 远程游玩!拥有 PS 路由器的网友都知道,PS 不但可以连接网络,增强家里网络信号之外,它还可以连接手柄玩一些这个平台的游戏,而 sony 为了让这个路由器的使用场景更多,便在这个路由器系统里面设置了一个远程游玩的设置,打开这个设置,你便可以在你的手机,ipad,电脑上远程游玩网内这台路由器上的游戏,所以 sony 也被称为给大家带来快乐的公司,我更愿称 PS4 或者 PS5 为游戏机,而并非一台传统的路由器!

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第4张图片

理论上,我们可以使用 PS Remote Play APP 在任何一个有网的地方远程游玩 PS5 上的游戏,但事实上由于国内网络的问题,绝大多数时候我们使用 5G 或者外面的 wifi 都无法正常连接到我们家里的 PS,而 PS Remote Play 的特性其实是优先会去寻找网内的 PS5,如果找不到,它才会尝试通过互联网去连接,为了拥有一个稳定的连接,我们计划通过一种方式持久将我们和家里的设备保持在一个"局域网"内,于是,便有了这篇真正实现"网络突破"的文章,文章又臭又长,请耐心观看。

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第5张图片

如果说上一篇文章是对内网 (我们家里面的网络) 的 NAS 设备实现端口映射或者整体暴露在互联网上的话,这一篇文章便是我们反向连接到家里的网络后,再去访问我们的 NAS 服务器做文件操作,使用内网 IP 地址连接家里电脑的远程桌面,甚至直接游玩 PS5, 这一技术在 IT 专业里面叫做 VPN, 是一种叫做虚拟专用网络的东西,它会基于你现在的网络之上产生一个专有的连接实现网络的通信,更详细的专业知识可以自行度娘,但需要提醒大家的是: VPN 并不特指翻墙,梯子这些违法的事情,网友们也不要尝试违反国家法律的事情,本文只是站在个人需求和技术的角度去讲实现。

技术本质是辅助人类发展的一种方法,技术的目标也应该是带领人类能向更好的方向去发展,为人类生存提供更好的支持,而并非做一些不利于人类发展或者违背法律的事情。所以不要利用技术做坏事,成为一个坏人。

关于技术

我们通过与第一篇文章进行比较,如果我们的内网需要有一台远程桌面的主机进行外网访问,还有一台 NAS 需要访问,那么我们需要将每一个服务对应的端口,以及启动这个服务的内网主机 IP 地址进行外网发布配置,这样除了每一种服务需要安全相关的考虑和配置外,我们还要逐一在路由器中进行端口映射等操作,而使用现有这种技术来说,我们只需要将这个服务器进行公开,所有服务都是通过登入内网进行操作的,所以对于管理角度讲,它更适合我们的需求。

简单来说,你对外发布的端口,黑客们也基本能通过端口号反向推断出这个端口对应的服务,然后使用各种方法搞你心态。这应该是绝大多数人都可以理解的。

你可能能理解的黑客攻击方式

#准备工作 #

要开始了,我们依旧需要准备我们需要的所有东西,如果你已经看过之前的几篇文章,那么你那个吃灰的树莓派应该已经装了一个 fedora, 即便你没有树莓派,按照之前文章的描述,你目前也应该有了一个简简单单安装有 fedora 的台式机了吧。 其次,我们需要在我们的树莓派 Fedora 系统上部署的一个 VPN 的服务器,虽然 Fedora 自己的软件仓库里拥有现成的服务软件, 但如果按照原生系统自带的服务进行配置的话,我自己都不敢保证我作为这个公众号的号主会不会取消关注我自己,因为这个过程极其无聊,繁琐且不容易上手,而我们的目标就是: 简单。 所以,这次我们选择一个第三方软件: softether,这个软件是一个开源的软件,由小日子过得不错的几个大学生在上大学的时候做出来的 (瞅瞅人家,如今很多计算机系大学生在宿舍王者既没打上钻石,学习也没学好,惨烈),然后卖给某个知名公司差点被玩儿死,后来软件创始人一气之下就开源了,然后大家就都用上了,自我感觉也过一些其他的软件,SoftEther 还是非常非常好用的。 树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第6张图片

和传统 Linux 上的软件一样,SoftEther 拥有一个最小化的服务端程序,以及一套命令行的管理系统,同时,它还拥有一套独立的服务器管理工具程序提供给我们进行独立下载安装,这样,我们变可以只在我们的 Fedora 上面安装 SoftEther 的服务端,然后在我们的 Windows PC 上面安装 SoftEther 的管理工具程序进行远程管理,所以,我们需要首先下载服务端和管理端两个安装包,操作方法如下: - 服务端 打开网址:  https://www.softether-download.com/cn.aspx

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第7张图片

如上图所示,我们首先需要下载服务端软件,在组件里面选择"SoftEther VPN Server", 操作系统选择"Linux", 下面就是比较关键的地方: 如果你是 fedora 的树莓派设备,CPU 请选择 ARM 64bit; 如果你是 fedora 的 PC,请选择 Inter x64 / AMD64 这个选项; 选择完成后进行下载,这个步骤可以直接在我们的 fedora 上面做,要不一会儿还得把文件拷贝上去

- 管理工具 打开网址: 还是上面那一个

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第8张图片

这个步骤,在组件选择 Server Manager for Windows, 不是 Client! 不是 Client! 不是 Client! 重要的事情需要说三遍. 然后再选择系统里面有两个,首先 Windows 的下载下来是一个安装包,需要安装后才能使用,而另外一种是免安装的绿色版本,可以解压出来直接执行的那种,根据个人情况自行选择进行安装,这里的安装就是在 Windows 里面下一步下一步下一步完成,这个过程不表,很简单。

# 服务端安装前配置 #

安装服务端之前,我们需要规划一下我们这台树莓派的一些基本角色和功能,因为这些功能角色是 SoftEther 能够正常运行使用的基本支持,请按照下面的部分以及根据自己网络的情况进行规划。 - 基本网络计划配置 首先,我们需要给树莓派一个固定的内网 IP 地址,用于后续我们对它进行管理,路由器里面的映射等用途,毕竟作为一个服务器角色的主机来说,一个固定的 IP 是必须的,目前我们家内网的 IP 网段是 192.168.0.0/24 这个网段,所以简单看了一下我家路由器里面 dhcp 目前推的 ip 地址的状态,192.168.0.251 这个地址没有别的机子在用,那么我就把他作为这台树莓派的固定 IP 地址,配置 IP 地址,可以通过树莓上的 fedora 图形化里面的网络设置去设置固定 IP 地址,也可以通过下面的方式去操作:

# 使用 ifconfig 命令先看一下树莓派上面的所有网络连接ifconfig# 然后查看 ifconfig 命令展示出来的有线连接的那个名称,大概是 enXXXSXXX 这种开头的名称。# 然后使用 nmcli 进行网卡的 ip 地址配置,id 后面可以通过 tab 按键按两次去匹配你的网卡nmcli connection modify id XXX ipv4.addresses 192.168.0.251/24# 然后然后!改网关,也就是这里应该是你们家路由器的 IP 地址,因为它让你能 s 上网的nmcli connection modify id XXX ipv4.gateway 192.168.0.1# 第三步: 改 DNS, 我这里改成谷歌的 DNSnmcli connection modify id XXX ipv4.dns "8.8.8.8,8.8.4.4"# 第四步: 变更 IP 地址获取 f 方式nmcli connection modify id XXX ipv4.method manual# 其实上面这几步能一行就搞定,但是最近遇到一个论代码行数决定你做得好不好的人,我也就这么写了。

假如上面太难的话,那不如进图形化操作吧,当今这个阶段,如果你是一个 Linux 的小白,已经可以看到这里了,那么不会用命令不丢人,如下图操作即可: 树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第9张图片

 - 专用网络设计 在 SoftEther 配置成功后,会存在一个专用的网络连接,我们从外网通过 SoftEther 的所有连接都会连接到这个网络上,和我们家里网络一样,这个网络需要有一个专用的网段,这个网段不要和我们家里的网段一致,于是,我家里的网段是 192.168.0.0 这个网段,我的专用网络的网段则被定义为 192.168.100.0 这个网段,而作为这个网段的服务端,我们预定义我们在这个网段的 IP 地址为 192.168.100.1,服务 192.168.100.0/24 这个网段,也就是 192.168.100.2~192.168.0.254 这两百多个 IP,这个可以现在小本本上记下,因为目前还不需要任何的配置,后面会用到。

- DHCP(给连接进来的客户端推个能用的 IP 地址) 因为客户端连接成功后,他们会被连接到 192.168.100.0 这个网段,但是在这个网段上,客户端需要服务器给他们一个合法的 IP 地址,但 IP 并不是凭空来的,需要一个推 IP 的服务给这些客户端进行推 IP 的操作,于是我们需要自己安装一个,操作如下:

# 一个超级小巧好用的 dhcp 服务端软件,除了配置文件不友好,其他都挺好的。dnf install dhcp-server -y# 然后编辑一下配置文件,配置文件其实是个空的vi /etc/dhcp/dhcpd.conf# 下面是我 dhcpd.conf 里面 d 的内容,我简单解释一下每一行的意思# subnet 192.168.100.0 netmask 255.255.255.0# 代表着我需要在 100.0 这个网段推 IP 地址,dhcp 服务# 会自动根据你写的网段自动找到对应网段的网卡,然后启动推 IP 的服务subnet 192.168.100.0 netmask 255.255.255.0 {# range 代表你推的具体 IP 段,我这从 1 推到 250,这里# 和你路由器的 dhcp 的地址段差不多    range 192.168.100.1 192.168.100.250;# option 是选项,在推 IP 的同时还推什么东西# subnet-mask 子网掩码    option subnet-mask 255.255.255.0;# routers 网关,这里的网关写你树莓派在 100 网段的 ip,并不是你的路由器 ip    option routers 192.168.100.1;# dns 这里写你的路由器地址,因为连接上服务端后,便可以通过路由器进行 dns 解析    option domain-name-servers 192.168.0.1;# default-lease-time,max-lease-time 固定写法,是用来规定 ip 的租期的,具体设置    default-lease-time 43200;     max-lease-time 43200}# 然后:wq 保存这个文件# 然后先不要起服务,因为你现在都没有 100.1 这个网卡呢,目前这个步骤就做完了。# 然后将 dhcp 服务在防火墙放行firewall-cmd --permanent --add-service=dhcp# 因为还没有配置完,先把防火墙通过--permanent 写好,不用现在生效

然后先不要起服务,因为你现在都没有 100.1 这个网卡呢,目前这个步骤就做完了。

- IP 和数据的转发 内网确定了,专用网络概念也有了,客户端要能访问到内网的 NAS 等设备,还需要我们的专用网络的主机与内网的主机进行通信,这里就需要用到 IP 的转发和路由操作了,理论上这里其实很深奥很深奥,但是简单来说就几条命令: 开启转发, 操作如下:

# 开启 Linux 中的 IP 转发功能,这个是一个 Linux 的内核运行参数,用来实现 IP 的转发功能# fedora 39 版本 sysctl 功能有些许变化,相关参数修改位置变了,先把文件创建出来touch /etc/sysctl.d/ipv4_forwarding.conf# 然后打开这个文件vi /etc/sysctl.d/ipv4_forwarding.conf# 把下面这个话输入然后 wq 保存net.ipv4.ip_forward=1# 通过-p 加上刚才 d 的配置文件让配置生效sysctl -p /etc/sysctl.d/ipv4_forwading.conf

192.168.100.0 到 192.168.0.251 的路由操作如下

firewall-cmd --add-masquerade --permanentfirewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 192.168.0.251# 为了一会儿拨进来的客户端能够访问到你网内的其他主机,这里需要把专有网段的数据通过你树莓派的物理网口路由一下子。# --to-source 后面这个 IP,应该是前面你树莓派网卡上设置的那个固定的 IP 地址# 以上两条命令只是永久配置上了,但目前还没有生效,也不需要现在生效,先放着

以上 IP 和转发就已经结束了.

#服务端安装与配置 #

确保上面的所有任务做完之后,我们就可以开始安装 SoftEther 了,操作如下:  - 解压和移动服务端文件 我的安装包下载到了我的家目录中,对于 tar.gz 这种文件来说,我们需要解压文件,然后将解压出来的服务端文件放到指定的问题,这里我直接放到了/vpnserver 里面:

# 使用 tar 命令解压,对应 gz 压缩格式,需要用 z 参数明确目标压缩包格式tar zvxf softether-vpnserver-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz# 得到 vpnserver 的目录,然后移动到/下,我们要在/vpnserver 启动 softether 服务mv vpnserver /

 - 编译服务 为了兼容绝大多数 Linux 系统,Linux 系统上的软件都会以系统上编译器将软件源代码编译成最终的可执行应用,这样可以最大限度的保证软件可以正常在 Linux 系统上面正常运行,SoftEther 也是一样,所以我们需要 make 它一下,操作如下所示:

# 安装编译相关的工具组件dnf install -y gcc zlib-devel openssl-devel ncurses-devel readline-devel# 进入到/vpnserver/中,使用 make 命令编译服务端到系统中,做系统最后的链接make# 然后简单加个防火墙,这个马上会用到firewall-cmd --add-port=443/tcp # 然后再整一个永久的配置firewall-cmd --permanent --add-port=443/tcp

 - 启动服务 编译成功后,我们就可以开始 SoftEther 服务了

# 使用 vpnserver start 进行服务的启动/vpnserver/vpnserver start

 - 命令配置服务 第一次启动后,我们需要对 SoftEther 做一些基本的设置,这些设置是维持 SoftEther 运行的最基本支持,例如我们上面没有完全实现的专用网络设置,还有 SoftEther 服务端的管理密码设置,以及客户端的用户创建工作等都需要在这里做设置,操作如下:

# 使用 vpnserver 目录下面的 vpncmd 命令进行最基础的设置/vpnserver/vpncmd

执行成功后,vpncmd 会显示如下内容,但根据系统设置的语言不同,显示的内容也是不同的语言,我的是中文:

vpncmd 命令 - SoftEther VPN 命令行管理工具SoftEther VPN 命令行管理工具 (vpncmd 命令)Version 4.43 Build 9799   (Simplified_Chinese)Compiled 2023/08/31 10:50:49 by buildsan at crosswin with OpenSSL 3.0.9Copyright (c) 2012-2023 SoftEther VPN Project. All Rights Reserved.
通过使用 vpncmd 程序,可以取得以下成果。
1. VPN Server 或 VPN Bridge 的管理。2. VPN Client 的管理。3. 使用 VPN 工具 (证书创建和网络传输速度测试工具)
选择 1, 2 或 3: 

因为我们是做初次服务配置,我们需要选择 1

选择 1, 2 或 3: 1
指定的主机名或目标 VPN Server 或 VPN Bridge 正在 运行的计算机 IP 地址。通过以 "主机名: 端口号" 格式指定,您还可以指定端口号。(当没有指定端口号时,使用 443 。)如果不输入任何内容并按下回车键,将连接到端口号为 443 的本地主机 (这台电脑) 。目标 IP 地址的主机名:

这个时候,程序提示我们需要管理哪台服务器,我们只管理我们自己,所以这里直接回车就可以了。

目标 IP 地址的主机名:
如果通过虚拟 HUB 管理模式连接到服务器,请输入虚拟 HUB 的名称。如果通过服务器管理模式连接,无须输入任何内容请按回车键。指定虚拟 HUB 名称:

这里也是直接回车,这个 HUB 就是我们所谓的专用网络,虽然需要设置,但并不是现在,我们现在的目标是给 SoftEther 服务端设定一个管理密码,所以直接回车继续~

与服务器 "localhost" 的连接已建立 (端口 443) 。
您有整个 VPN Server 的管理员权限。
VPN Server>

目前我们就已经登陆到了服务端上,接下来,我们通过 ServerPasswordSet 命令给 SoftEther 服务设定一个管理密码,这个管理密码是我们使用 SoftEther 工具管理 SoftEther 服务用的,一定要拿个小本儿记好,并且记得设定一个复杂一些的密码。

VPN Server>ServerPasswordSetServerPasswordSet command - Set VPN Administrator PasswordPlease enter the password. To cancel press the Ctrl+D key.
Password: ********Confirm input: ********
The command completed successfully.
VPN Server>

到此,SoftEther 服务的命令操作到此结束,接下来的配置转至 Windows 的管理工具进行更简单的交互操作。  - 图形化管理工具连接配置 打开刚才已经安装好的管理工具,类似于下图所示,我已经创建好了一个连接,如果第一次使用,我们需要新建一个连接配置,也就是点击"新设置"打开新设置对话框。

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第10张图片

新的链接设置如图:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第11张图片

如上图中红框所示,在初次登录时,我们需要注意几个点: 1. 设置名: 这个自定义,叫什么取决于你给他起的名字 2. 主机名: SoftEther 的服务端的 IP 地址,我这里就是 192.168.0.251 3. 服务端管理模式: 固定的 4. 输入管理密码 然后点击"确定"保存即可完成连接配置的创建。然后通过连接即可连接到服务端,然后你就看到和前面一模一样的主界面了。 - 初次登录的简单安装

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第12张图片

如上图所示: 首次登录且没有设置别的东西时,SoftEther 会给我们一个向导,它提供了三个选择,分别是 SoftEther 的三种使用场景,对于我们的需求来说,第一种其实更符合我们的需求, 所以选择第一个,然后下一步。 - 创建 HUB

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第13张图片

HUB,这个算是 SoftEther 一个比较核心的东西,叫虚拟交换机,简单的说有了它,我们便有了外网连接进来的客户端与我们内网主机的一个连接的媒介,目前我们只是创建,不做太多细节考究,所以这里输入一个你喜欢的 HUB 名称,然后确定即可,这个 HUB 便会在你的程序主界面出现,正如我上面发过的一张图一样。 - 动态 DNS 功能

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第14张图片

这个阶段,也是一个比较关键的部门,因为其实在传统的家庭宽带网络里面,我们通过上一篇文章从供应商那里能争取到一个公网 IP 就已经很不容易了,而如果家里的宽带能拥有一个固定的 IP 那更是一种不敢想的事情,毕竟如果有了固定 IP 地址后,我们只需要像记住我们的电话号码一样,随时随地能访问到家里的网络,这个很容易理解嘛,IP 不变,你的位置总是固定的;然鹅,对于我们这种动态分配的 IP,也许你目前用的 IP 就会在下一次连接时被供应商回收。

你可以试试看,供应商如果真的在意这个事情,他有 100 种办法搞你心态。

我让连接不断开,不就可以保持这个 IP 了么

此时,除了固定 IP 之外,我们还有一个办法: 在家里电脑上有一个小弟,这个小弟每隔一段时间就像我们去度娘查询我们的公网 IP 一样查询到我们现在生效的 IP 地址,然后告诉公网的一个域名服务,使用能标识我们的一个名称与这个新的 IP 地址进行绑定,当我们使用我们独有的域名进行解析的时候,我们就可以访问到我们生效 IP 对应的网络位置,而这个章节所描述的小弟,SoftEther 就在充当这个全角色,这也恰恰是我们需要的。

其实 DDNS 动态 DNS 这种服务并不是 SoftEther 的专属,例如国内的花生壳等服务商都有这种服务,这里的原则是说: 一个服务能解决的问题,就不用多个服务,毕竟人生苦短。

所以在上图的改变动态 DNS 主机名那里设置一个你独一无二的主机名,然后点击设置上述主机名后,只要你的 Softether 服务持续能连接到互联网,你便可以使用你设置的域名找到你家里网络的位置。

- IPSec/L2TP 协议配置

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第15张图片

对于目前的绝大多数 VPN 来说,IPSec+L2TP 是最常用的方案,SoftEther 也支持此种协议,如果你的手上拥有苹果的手机电脑等产品和传统的 Windows PC,这些操作系统里面已经内置了标准的 l2tp+ipsec 的客户端,所以我们只需要进行简单配置就可以通过 ipsec+L2TP 链接到自己家的网络,当然这个中间需要一件事情: 就是像上图一样配置一下 SoftEther 的 L2TP 和 IPSec 。 对于目前的安卓系统来说,绝大多数设备已经不具备此类连接方式了,这个就需要另一个 SoftEther 提供的功能,后续会说。 - Azure 云模式

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第16张图片

如果说前面说的 DDNS 那个小弟只是让你能在互联网通过一个域名知道你们"家"实际的"位置",这个功能可以叫做"中介",学名叫做代理,他由两部分构成,SoftEther 在你的内网作为服务人员做所有的数据流量处理工作,Azure 则作为中介,他与 SoftEther 构成一个持续的连接,这个连接是由 SoftEther 服务端主动发起向 Azure 服务的 (Azure 有固定 IP, 你家里的 SoftEther 没有,SoftEther 能找到 Azure,Azure 找不到 SoftEther),当你连接到 Azure 上面的时候,Azure 服务会牵线搭桥,把你们家的链接共享给你,这样即便你家里要不到真正意义的公网 IP 地址,你也可以通过 SSTP 协议的方式连接到你们家的 SoftEther,所以那些拿不到公网 IP 且坚持看我文章的人看到这里是有意义的,这个终极穿透方案一定适合你们。

目前 SSTP 已经嵌入到了如今的 Windows 操作系统内,其他操作系统需要借助第三方软件才能实现。

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第17张图片

 

对于这种反向连接的模式来说,确实是一种好的技术手段,但是能用自己家 IP 这种方式,不推荐使用这种方式,首先安全有待考究;其次这种服务由 SoftEther 免费提供,但据我了解 Azure 并不免费, SoftEther 团队一定每年都会有成本,所以为了节省能源的情况下,把更多的资源让给需要的人。

- 创建用户

作为客户端连接到 SoftEther 的基本鉴权方法,一个带有密码的用户是最基础的解决方案,通过点击主界面的管理虚拟 HUB, 便能看到虚拟 HUB 的一些设置,这里首先需要创建一个用户,如图所示: 树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第18张图片

这里的用户名密码在客户端配置 VPN 的时候会用到.

 - 禁用虚拟 NAT 和虚拟 DHCP 服务器 这两个功能是 SoftEther 自带的,据说是在 HUB 上给连接 HUB 的客户端推 IP 地址然后做地址转发用的,但是我之前用它之后,我家内网的所有主机都收到了它推的 IP 地址,所以索性关闭它,由上面设置的 dhcp 和转发实现这两个功能,如下图所示:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第19张图片

 - 本地网桥设置 (CallBack 上面的专用网络设置)

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第20张图片

这个步骤就是要 Callback 上面文章中我们说到专用网络的设置了,在这上图这个步骤中,我们会创建一个本地网桥,这个网桥基于现有的虚拟 HUB,虚拟 HUB 可以通过这个网桥与系统上的网络适配器获得同等的操作感受,简单的说,按照上面的方式创建本地网桥后,你会在你的系统中查看到一个新的网络适配器,如下图红框中所示:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第21张图片

此时我们只需要给这个网络适配器提供之前设计好的 IP 地址,开启我们的 DHCP 服务后,我们就可以在内网进行初步的测试了! 网络相关命令如下:

# 我们之前设计的这个专用网络的 IP 地址为 192.168.100.1,于是我们需要输入下面命令ifconfig tap_ssnetwork 192.168.100.1 netmask 255.255.255.0# 然后通过 ifconfig 检查一下你的适配器的 ip 地址是否已经设置成功,过程在此不表# 让刚才配置的所有防火墙放行firewall-cmd --reload

然后开启 dhcp 服务

systemctl start dhcpd

目前我们便可以完成基本服务的搭建,接下来开始测试和调试环节.

# 测试 #

- SSTP(Azure 模式) 测试目标: 在 Azure 模式下,直接使用 SSTP 方式连接到家里的 SoftEther 上。 需要 Windows 电脑,在网络设置 - VPN 中添加对你刚才 SoftEther 里面提供的***.vpnazure.net 的地址,你设置的用户名和密码,当然协议选择 SSTP, 保存!连接!成功后应该如下图所示:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第22张图片

这里如果有条件的话,可以使用外面的网络,例如测试 PC 连接你手机的热点,然后对这个 SSTP 的连接进行测试,如果能像我上述的图上一样,那么恭喜你!内网已经穿透成功!你可以直接像访问你内网电脑一样,使用你的内网 IP 访问你的内网电脑吧!与此同时,如果通过那个图形化管理工具去看的话,我们可以通过虚拟 HUB 中的管理会话查看到已经多了一个用户连进来了,如下图所示: 树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第23张图片

如果你没有成功,请先翻到文章最后查看 TroubleShooting 部分. - L2TP 的测试 测试目标: 通过支持 l2tp 的设备使用 l2tp 进行内网测试连接. 首先需要明白的一点是: L2TP+IPSec 需要固定的几个服务端口,即便是在内网测试,也需要你的 SoftEther 服务器的防火墙放行他们,命令如下所示:

# L2TP+IPSec 有三个 UDP 服务端口: 1701,500,4500 需要在防火墙放行firewall-cmd --permanent --add-port=1701/udpfirewall-cmd --permanent --add-port=4500/udpfirewall-cmd --permanent --add-port=500/udp# 刷一下让它生效firewall-cmd --reload

然后我用我内网的 iPad 进行连接测试,需要注意的是,内网测试服务器应该填写你的内网 SoftEther 的 IP 地址,如下图所示,服务器,用户名,密码,秘钥 (l2tp/ipsec 那里设置的那个), 如下图所示:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第24张图片

保存后尝试进行连接,如果连接成功后,你便可以通过 ipad 通过 SoftEther 访问到了你内网的所有主机,如下图所示,注意图中右上角的小图标、服务器地址和服务器推给你的 IP 地址:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第25张图片

 - 安卓机的解决方案 (openvpn) 上面说过了,目前安卓没有办法用 l2tp 了,就像安卓没法用 mount cifs 一样让人觉得比较无语,为了解决这个问题,我们需要使用新的办法来解决这个问题: openvpn! 但这里不是要安装一个 OpenVPN, 仍旧使用 SoftEther 来提供 openvpn 的服务!操作如下: 树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第26张图片

首先,一个红框内确保勾选,按照图上说的,我们又要开启一个 UDP 端口:1194 用来做 OpenVPN 的服务,所以同理需要在防火墙上把 1194/udp 放行:

# 快写吐了firewall-cmd --permanent --add-port=1194/udp# 刷,懂?firewall-cmd --reload

用过 OpenVPN 的人都知道在客户端配置 OpenVPN 的时候那些配置有多变态,但是 SfotEther 可以自动生成这个连接配置,只需要点击第二个框框下载一个配置文件,这是一个压缩包,打开压缩包后,会有 4 个文件,对于我们的需求来说,我们只需要 remote_access_l3.ovpn 结尾的那一个文件. 再然后,使用你的安卓手机下载一个 openvpn 的客户端 apk, 安装上,以我的遥遥领先举例:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第27张图片

接下来,将第一步那个文件传到你的手机,通过这个软件加载那个文件,具体界面如下:

树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!) - 第28张图片

到此,客户端已经准备就绪,但是配置文件中其实使用的是外网的访问方式,这里,我们也会进入到这个话题核心的最终章: 外网映射

#内网突破自传最终章 #

所有服务都已经万事俱备,接下来,我们可以结合上一篇文章的路由器映射端口的功能, 将我们使用的 1701,500,4500,1194 这 4 个常规服务端口映射出去,撤回上一篇映射出去的 139 端口。这个根据不同的路由器里面设置不一样,所以这里不表。 接下来,使用你的手机/电脑,将服务器地址换成 ddns 的地址或者 azure 的地址,进行外网的测试吧! 这里仍然需要强调: 1. SoftEther 服务器架设位置: 如果你们家有一个光猫,后面挂了一个路由器,你平常都是使用这个路由器的 wifi 上网的话,那他应该和你家电脑,游戏机,NAS 服务器同在这个路由器下面,你不能把他挂在你们家光猫底下,因为这样你虽然能连回来,但是因为有个路由器的限制你已然没有办法直接简单且有效的访问到你们家的这些设备;同时,这时候做路由器映射,你首先需要在 SoftEther 上面这个路由器上做 DMZ(端口映射也可以,但综合考虑没有 DMZ 容易),随后使用你这个路由器的 IP 地址以及上述的 4 个端口在光猫里面做端口映射,此部门特指那种路由器 wan 口连接光猫获取到一个 ip, 然后路由器又给下面的设备推一次 ip 的这种情况。 2. 服务维护: SoftEther 服务一次配置之后基本不用任何修改,用户也可以很方便通过用户管理对用户进行增删改以及一些更丰富的功能,这里特别说明每次机器的服务启动顺序应按照如下方式进行:

# 1. 启动 SoftEther 主服务/vpnserver/vpnserver start# 2. 设置网桥 IP 地址ifconfig 192.168.100.1 netmask 255.255.255.0# 3. 启动 dhcp 服务systemctl start dhcpd

有能力的可以把上面的步骤做成 systemd 服务,小白可以等我下一篇文章。 3. 系统迁移: 我相信现在有一些森友肯定要重新搭建一个正规一点的小服务器了,或者将之前搭建的这个服务器 “上线” 到真正的服务器上,在这里,你可以将 softether 目录下面的 vpn_server.config 文件直接拷贝到你的正式环境上,这样你之前的 ddns 的域名和所有设置都会在新的服务器上生效,但需要注意的是: 新服务器服务开启前,一定要将旧的服务关闭,否则会出现一些意想不到的问题。 下面的是一些常规可能会出现问题的地方,提供给各位参考:

#TROUBLE SHOOTING#

1. 问题: 客户端配置好了,显示正在验证信息也过了,连接中卡了很久然后断了.

1. 检查虚拟 HUB 的网桥有没有启动成功,先在 SoftEther 管理界面的本地网桥设置里面查看网桥运行状态是不是运行中2. 通过 ifconfig 查看网桥是否存在,是否已经设置过 ip 地址,没有按照上面教程设置3. 通过 systemctl status dhcpd 查看 dhcp 服务是否启动4. 通过 dhcpd.conf 文件里面查看一下,dhcp 推的 IP 地址是不是和内部网桥的 ip 地址段时一致的5. 通过 sysctl -a|grep ipv4.ip 查看 ipforward 是不是 16. 是否已经使用 firewall-d 增加了 dhcp 的放心,ip 数据的路由和 masq 三个上文提及的操作

2. 问题:能连接,看连接也有 100.2 这种 IP,但死活上不了网。

1. 从问题 1 中第 6 点找原因2. 如果是 Mac 系统,VPN 有个选项叫做"使用所有流量"类似的一个选项,打上勾

3. 其他的问题可以留言.

#后记 #

至此,我想很多人已经开始摩拳擦掌购买更大的硬盘,或者开始购买树莓派搭建这个小服务器了,那么恭喜你,你成功的又向 IT Ops 的深渊更近了一步。

sensirx@Home-NAS:~$ free -m               total        used        free      shared  buff/cache   availableMem:            7775         695         128           1        7259        7080Swap:           7774           0        7774

我的树莓派上跑了 softether,samba 和 ftp 服务,还有一个图形化界面,可以看出内存还是比较宽裕的,我使用一块 1T 的硬盘作为我基本的网络文件缓存,这样我可以降低购买手机时存储的成本,每次需要同步文件的时候,连接到家里的网络就可以直接操作了,不需要太多第三方需要接触到我个人文件的应用或者服务,当然还有其他种种。

这一周挤出各种时间,终于将新版本宇宙机器人进度达成 100% 了,讲真新版本有些关卡是真的难,过的时候就像炼狱一样,也有点像写这篇文章一样苦不堪言,不过好在这篇文章马上就要结束了,接下来没想好要写什么,也没想好什么时候继续开始写,不过最有可能的是下一篇文章会续写一些 SoftEther 这台服务器以及它服务本身的一些调校,或各位有什么想法投稿之类的都可以告诉我~~

公众号: CookieX

 

《树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!)》留言数:0

发表留言