树莓派、个人电脑与一台家庭存储服务器的搭建(进一步内网突破!)
如上一篇比较无聊的文章所讲,我们可以通过一些方式拿到我们自己家里的公网IP地址,同时通过对家里路由器的一些简单设置,我们便可以通过互联网访问到家里网络内的NAS主机,同时在上一篇文章的结尾也曾经提及过,那种方法虽然我们可以实现外网访问的功能,但是对于网络安全方面来说,也是一种极大的挑战,例如,你的用户名和密码比较好猜,这样网络上别有用心的人一旦知道你的IP地址和相关的服务,他们会利用一切办法去破解你的账号,而恰巧你的用户名密码又比较好猜,那后果你可以自己好好想想了。
有些人可能会说:我洁身自好,身正不怕影子歪,黑客进来也不能拿我怎么样,我没有小电影之类的; 黑客进来在你电脑装个挖矿插件, 或者网赚的程序, 你家电表疯狂的转, 你家网络疯狂的卡, 结果后来排查你家这台映射出去的电脑一天跑了150GB的流量的时候, 你才知道侥幸这个事儿最终害得还是你自己. 关于侥幸这个事情
上一篇文章的链接,<<虽然对于上篇文章来说,没有足够的安全防控能力的人不推荐那样配置,但是大家还是可以可以看看的.
#上周干嘛去了?#
坦白讲,当牛马,作为一个即将要干到小70岁才能退休的当代年轻人来说,正常周一到周五一定是在当牛马,但今天休息,不提牛马的事情,除了牛马之外,肯定最主要的任务就是宇宙机器人了,上周五开始玩,周六的时候宇宙机器人的联名PS5手柄到了,于是使用新手柄玩儿宇宙机器人,天天玩,夜夜玩,没时没晌的玩儿,去朋友家玩儿也在用ipad玩儿,等媳妇儿下班也在车上玩儿,没错,我就是如此热爱宇宙机器人,像口袋妖怪里面的皮卡丘一样。
有网友肯定会疑惑: 你这不扯么, PS5这种路由器虽然我们家也有,你这在外面用ipad玩就有点过于吹牛逼了吧?但事实上,从ps4路由器发布之后,所以对于路由器就有了一个突破路由器本质的功能: 远程游玩!拥有PS路由器的网友都知道,PS不但可以连接网络,增强家里网络信号之外,它还可以连接手柄玩一些这个平台的游戏,而sony为了让这个路由器的使用场景更多,便在这个路由器系统里面设置了一个远程游玩的设置,打开这个设置,你便可以在你的手机,ipad,电脑上远程游玩网内这台路由器上的游戏,所以sony也被称为给大家带来快乐的公司,我更愿称PS4或者PS5为游戏机,而并非一台传统的路由器!
理论上,我们可以使用PS Remote Play APP在任何一个有网的地方远程游玩PS5上的游戏,但事实上由于国内网络的问题,绝大多数时候我们使用5G或者外面的wifi都无法正常连接到我们家里的PS,而PS Remote Play的特性其实是优先会去寻找网内的PS5,如果找不到,它才会尝试通过互联网去连接,为了拥有一个稳定的连接,我们计划通过一种方式持久将我们和家里的设备保持在一个"局域网"内,于是,便有了这篇真正实现"网络突破"的文章,文章又臭又长,请耐心观看。
如果说上一篇文章是对内网(我们家里面的网络)的NAS设备实现端口映射或者整体暴露在互联网上的话,这一篇文章便是我们反向连接到家里的网络后,再去访问我们的NAS服务器做文件操作,使用内网IP地址连接家里电脑的远程桌面,甚至直接游玩PS5, 这一技术在IT专业里面叫做VPN, 是一种叫做虚拟专用网络的东西,它会基于你现在的网络之上产生一个专有的连接实现网络的通信,更详细的专业知识可以自行度娘,但需要提醒大家的是: VPN并不特指翻墙,梯子这些违法的事情,网友们也不要尝试违反国家法律的事情,本文只是站在个人需求和技术的角度去讲实现。
技术本质是辅助人类发展的一种方法,技术的目标也应该是带领人类能向更好的方向去发展,为人类生存提供更好的支持,而并非做一些不利于人类发展或者违背法律的事情。所以不要利用技术做坏事,成为一个坏人。 关于技术
我们通过与第一篇文章进行比较,如果我们的内网需要有一台远程桌面的主机进行外网访问,还有一台NAS需要访问,那么我们需要将每一个服务对应的端口,以及启动这个服务的内网主机IP地址进行外网发布配置,这样除了每一种服务需要安全相关的考虑和配置外,我们还要逐一在路由器中进行端口映射等操作,而使用现有这种技术来说,我们只需要将这个服务器进行公开,所有服务都是通过登入内网进行操作的,所以对于管理角度讲,它更适合我们的需求。
简单来说,你对外发布的端口,黑客们也基本能通过端口号反向推断出这个端口对应的服务,然后使用各种方法搞你心态。这应该是绝大多数人都可以理解的。 你可能能理解的黑客攻击方式
#准备工作#
要开始了,我们依旧需要准备我们需要的所有东西,如果你已经看过之前的几篇文章,那么你那个吃灰的树莓派应该已经装了一个fedora, 即便你没有树莓派,按照之前文章的描述,你目前也应该有了一个简简单单安装有fedora的台式机了吧。
其次,我们需要在我们的树莓派Fedora系统上部署的一个VPN的服务器,虽然Fedora自己的软件仓库里拥有现成的服务软件, 但如果按照原生系统自带的服务进行配置的话,我自己都不敢保证我作为这个公众号的号主会不会取消关注我自己,因为这个过程极其无聊,繁琐且不容易上手,而我们的目标就是: 简单。
所以,这次我们选择一个第三方软件: softether,这个软件是一个开源的软件,由小日子过得不错的几个大学生在上大学的时候做出来的(瞅瞅人家,如今很多计算机系大学生在宿舍王者既没打上钻石,学习也没学好,惨烈),然后卖给某个知名公司差点被玩儿死,后来软件创始人一气之下就开源了,然后大家就都用上了,自我感觉也过一些其他的软件,SoftEther还是非常非常好用的。
和传统Linux上的软件一样,SoftEther拥有一个最小化的服务端程序,以及一套命令行的管理系统,同时,它还拥有一套独立的服务器管理工具程序提供给我们进行独立下载安装,这样,我们变可以只在我们的Fedora上面安装SoftEther的服务端,然后在我们的Windows PC上面安装SoftEther的管理工具程序进行远程管理,所以,我们需要首先下载服务端和管理端两个安装包,操作方法如下:
- 服务端
打开网址: https://www.softether-download.com/cn.aspx
如上图所示,我们首先需要下载服务端软件,在组件里面选择"SoftEther VPN Server", 操作系统选择"Linux", 下面就是比较关键的地方:
如果你是fedora的树莓派设备,CPU请选择ARM 64bit;
如果你是fedora的PC,请选择Inter x64 / AMD64这个选项;
选择完成后进行下载,这个步骤可以直接在我们的fedora上面做,要不一会儿还得把文件拷贝上去。
- 管理工具
打开网址: 还是上面那一个
这个步骤,在组件选择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, 我这里改成谷歌的DNS
nmcli 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的小白,已经可以看到这里了,那么不会用命令不丢人,如下图操作即可:
- 专用网络设计
在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 --permanent
firewall-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.9
Copyright (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>ServerPasswordSet
ServerPasswordSet command - Set VPN Administrator Password
Please enter the password. To cancel press the Ctrl+D key.
Password: ********
Confirm input: ********
The command completed successfully.
VPN Server>
到此,SoftEther服务的命令操作到此结束,接下来的配置转至Windows的管理工具进行更简单的交互操作。
- 图形化管理工具连接配置
打开刚才已经安装好的管理工具,类似于下图所示,我已经创建好了一个连接,如果第一次使用,我们需要新建一个连接配置,也就是点击"新设置"打开新设置对话框。
新的链接设置如图:
如上图中红框所示,在初次登录时,我们需要注意几个点:
1. 设置名: 这个自定义,叫什么取决于你给他起的名字
2. 主机名: SoftEther的服务端的IP地址,我这里就是192.168.0.251
3. 服务端管理模式: 固定的
4. 输入管理密码
然后点击"确定"保存即可完成连接配置的创建。然后通过连接即可连接到服务端,然后你就看到和前面一模一样的主界面了。
- 初次登录的简单安装
如上图所示:首次登录且没有设置别的东西时,SoftEther会给我们一个向导,它提供了三个选择,分别是SoftEther的三种使用场景,对于我们的需求来说,第一种其实更符合我们的需求,所以选择第一个,然后下一步。
- 创建HUB
HUB,这个算是SoftEther一个比较核心的东西,叫虚拟交换机,简单的说有了它,我们便有了外网连接进来的客户端与我们内网主机的一个连接的媒介,目前我们只是创建,不做太多细节考究,所以这里输入一个你喜欢的HUB名称,然后确定即可,这个HUB便会在你的程序主界面出现,正如我上面发过的一张图一样。
- 动态DNS功能
这个阶段,也是一个比较关键的部门,因为其实在传统的家庭宽带网络里面,我们通过上一篇文章从供应商那里能争取到一个公网IP就已经很不容易了,而如果家里的宽带能拥有一个固定的IP那更是一种不敢想的事情,毕竟如果有了固定IP地址后,我们只需要像记住我们的电话号码一样,随时随地能访问到家里的网络,这个很容易理解嘛,IP不变,你的位置总是固定的;然鹅,对于我们这种动态分配的IP,也许你目前用的IP就会在下一次连接时被供应商回收。
你可以试试看,供应商如果真的在意这个事情,他有100种办法搞你心态。 我让连接不断开,不就可以保持这个IP了么
此时,除了固定IP之外,我们还有一个办法: 在家里电脑上有一个小弟,这个小弟每隔一段时间就像我们去度娘查询我们的公网IP一样查询到我们现在生效的IP地址,然后告诉公网的一个域名服务,使用能标识我们的一个名称与这个新的IP地址进行绑定,当我们使用我们独有的域名进行解析的时候,我们就可以访问到我们生效IP对应的网络位置,而这个章节所描述的小弟,SoftEther就在充当这个全角色,这也恰恰是我们需要的。
其实DDNS动态DNS这种服务并不是SoftEther的专属,例如国内的花生壳等服务商都有这种服务,这里的原则是说: 一个服务能解决的问题,就不用多个服务,毕竟人生苦短。
所以在上图的改变动态DNS主机名那里设置一个你独一无二的主机名,然后点击设置上述主机名后,只要你的Softether服务持续能连接到互联网,你便可以使用你设置的域名找到你家里网络的位置。
- IPSec/L2TP 协议配置
对于目前的绝大多数VPN来说,IPSec+L2TP是最常用的方案,SoftEther也支持此种协议,如果你的手上拥有苹果的手机电脑等产品和传统的Windows PC,这些操作系统里面已经内置了标准的l2tp+ipsec的客户端,所以我们只需要进行简单配置就可以通过ipsec+L2TP链接到自己家的网络,当然这个中间需要一件事情: 就是像上图一样配置一下SoftEther的L2TP和IPSec。
对于目前的安卓系统来说,绝大多数设备已经不具备此类连接方式了,这个就需要另一个SoftEther提供的功能,后续会说。
- Azure云模式
如果说前面说的DDNS那个小弟只是让你能在互联网通过一个域名知道你们"家"实际的"位置",这个功能可以叫做"中介",学名叫做代理,他由两部分构成,SoftEther在你的内网作为服务人员做所有的数据流量处理工作,Azure则作为中介,他与SoftEther构成一个持续的连接,这个连接是由SoftEther服务端主动发起向Azure服务的(Azure有固定IP,你家里的SoftEther没有,SoftEther能找到Azure,Azure找不到SoftEther),当你连接到Azure上面的时候,Azure服务会牵线搭桥,把你们家的链接共享给你,这样即便你家里要不到真正意义的公网IP地址,你也可以通过SSTP协议的方式连接到你们家的SoftEther,所以那些拿不到公网IP且坚持看我文章的人看到这里是有意义的,这个终极穿透方案一定适合你们。
目前SSTP已经嵌入到了如今的Windows操作系统内,其他操作系统需要借助第三方软件才能实现。
对于这种反向连接的模式来说,确实是一种好的技术手段,但是能用自己家IP这种方式,不推荐使用这种方式,首先安全有待考究;其次这种服务由SoftEther免费提供,但据我了解Azure并不免费, SoftEther团队一定每年都会有成本,所以为了节省能源的情况下,把更多的资源让给需要的人。
- 创建用户
作为客户端连接到SoftEther的基本鉴权方法,一个带有密码的用户是最基础的解决方案,通过点击主界面的管理虚拟HUB, 便能看到虚拟HUB的一些设置,这里首先需要创建一个用户,如图所示:
这里的用户名密码在客户端配置VPN的时候会用到.
- 禁用虚拟NAT和虚拟DHCP服务器
这两个功能是SoftEther自带的,据说是在HUB上给连接HUB的客户端推IP地址然后做地址转发用的,但是我之前用它之后,我家内网的所有主机都收到了它推的IP地址,所以索性关闭它,由上面设置的dhcp和转发实现这两个功能,如下图所示:
- 本地网桥设置(CallBack 上面的专用网络设置)
这个步骤就是要Callback上面文章中我们说到专用网络的设置了,在这上图这个步骤中,我们会创建一个本地网桥,这个网桥基于现有的虚拟HUB,虚拟HUB可以通过这个网桥与系统上的网络适配器获得同等的操作感受,简单的说,按照上面的方式创建本地网桥后,你会在你的系统中查看到一个新的网络适配器,如下图红框中所示:
此时我们只需要给这个网络适配器提供之前设计好的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, 保存!连接!成功后应该如下图所示:
这里如果有条件的话,可以使用外面的网络,例如测试PC连接你手机的热点,然后对这个SSTP的连接进行测试,如果能像我上述的图上一样,那么恭喜你!内网已经穿透成功!你可以直接像访问你内网电脑一样,使用你的内网IP访问你的内网电脑吧!与此同时,如果通过那个图形化管理工具去看的话,我们可以通过虚拟HUB中的管理会话查看到已经多了一个用户连进来了,如下图所示:
如果你没有成功,请先翻到文章最后查看TroubleShooting部分.
- L2TP的测试
测试目标: 通过支持l2tp的设备使用l2tp进行内网测试连接.
首先需要明白的一点是: L2TP+IPSec需要固定的几个服务端口,即便是在内网测试,也需要你的SoftEther服务器的防火墙放行他们,命令如下所示:
# L2TP+IPSec 有三个UDP服务端口: 1701,500,4500 需要在防火墙放行
firewall-cmd --permanent --add-port=1701/udp
firewall-cmd --permanent --add-port=4500/udp
firewall-cmd --permanent --add-port=500/udp
# 刷一下让它生效
firewall-cmd --reload
然后我用我内网的iPad进行连接测试,需要注意的是,内网测试服务器应该填写你的内网SoftEther的IP地址,如下图所示,服务器,用户名,密码,秘钥(l2tp/ipsec那里设置的那个),如下图所示:
保存后尝试进行连接,如果连接成功后,你便可以通过ipad通过SoftEther访问到了你内网的所有主机,如下图所示,注意图中右上角的小图标、服务器地址和服务器推给你的IP地址:
- 安卓机的解决方案(openvpn)
上面说过了,目前安卓没有办法用l2tp了,就像安卓没法用mount cifs一样让人觉得比较无语,为了解决这个问题,我们需要使用新的办法来解决这个问题: openvpn! 但这里不是要安装一个OpenVPN, 仍旧使用SoftEther来提供openvpn的服务!操作如下:
首先,一个红框内确保勾选,按照图上说的,我们又要开启一个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,安装上,以我的遥遥领先举例:
接下来,将第一步那个文件传到你的手机,通过这个软件加载那个文件,具体界面如下:
到此,客户端已经准备就绪,但是配置文件中其实使用的是外网的访问方式,这里,我们也会进入到这个话题核心的最终章: 外网映射
#内网突破自传最终章#
所有服务都已经万事俱备,接下来,我们可以结合上一篇文章的路由器映射端口的功能, 将我们使用的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是不是1
6. 是否已经使用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 available
Mem: 7775 695 128 1 7259 7080
Swap: 7774 0 7774
我的树莓派上跑了softether,samba和ftp服务,还有一个图形化界面,可以看出内存还是比较宽裕的,我使用一块1T的硬盘作为我基本的网络文件缓存,这样我可以降低购买手机时存储的成本,每次需要同步文件的时候,连接到家里的网络就可以直接操作了,不需要太多第三方需要接触到我个人文件的应用或者服务,当然还有其他种种。
公众号: CookieX