旧电脑改造服务器和外网访问家庭nas/软路由实战记录

对于旧电脑,很多时候都闲置在家,技术好一些的同学可能会把他改造成软路由,但是很多旧电脑都只有百兆接口,作为软路由也未必能满足现在家里动辄500M,1000M的宽带。技术差一些的,可能会直接去闲鱼上卖掉,虽然可能只能卖几十块钱,毕竟也能买点菜或者买包烟。还有的小伙伴会改造成nas,但是nas本身也不贵,而且旧电脑硬盘有限,不是一个很好的选择。最近在家中没法出门,刚好手边有一台旧电脑,突然阿里云提醒我服务器到期了,必须续费了,我就突发奇想,尝试把旧电脑改造成云服务器。
那么就先介绍一下我的这台旧电脑,是很久以前(2016年)在闲鱼上淘的,当时以600元的价格购入。

这款笔记本采用了AMD Fusion APU E-300的CPU,主频为1.3GHz,内存2G,放在2016年也只能算个上网本,放在今天可就是电子垃圾的水平了。甚至连手机的性能也不如。这款笔记本打开网页都能卡上半天,基本没有正常使用的可能。

给旧电脑刷Ubuntu系统并暴露22端口

要开始改造成服务器,第一步就是刷上喜欢的系统。这里我采用的是Ubunutu20.03的发行版,LinuxMint。各位可以去官网下载:https://linuxmint.com/。下载过后就要开始制作U盘启动盘,在Windows,MaxOS系统下,都有常用的制作启动盘软件,我用的是MacOS下的BalennaEtcher(https://www.balena.io/etcher/)。整个过程也是非常傻瓜,打开软件后选择刚才下载的LinuxMint镜像,写入U盘,几分钟过后,就完成了制作。然后插上U盘,开机进BIOS,选择从U盘启动,一路安装即可。

安装完成后,需要给这台Ubuntu暴露22端口

sudo apt install openssh-server

如果该电脑有防火墙,还需执行:

sudo ufw allow ssh

网络拓扑

接下来,我想花一些时间和各位聊下如何进行网络拓扑。如果您的旧电脑可以直接暴露在公网上,那么这件事情就变得非常简单了。也就是说,你的电脑能够直连你家的猫(调制解调器)拨号,或者只通过二层设备(例如交换机)连接猫拨号,并且(划重点),你的宽带运营商提供给你一个固定外网IP。然而,大多数情况下,移动宽带用户是一定拿不到固定外网IP,而电信宽带用户不一定能拿到固定外网IP。再说,一般家里都会在猫后面加装路由器或者其他NAT设备,这样,你的旧电脑的IP一般都是192.168.*.*的形式。就必须进行端口映射。我的网络拓扑如下:

当然,您也可以根据自己的实际情况进行调整。例如:如果您家中只有一级路由,则可以直接在旧电脑上配置frpc客户端。如果您的一级路由可以支持frpc功能,则可以在一级路由上配置fprc等等。

施工

购买ECS、购买域名并解析

既然网络拓扑已经设计好,那么可以开始实施了。首先,我们要把云端的资源配置好。我这里选择的是阿里云,您也可以根据自己的实际情况选择天翼云或腾讯云。第一步当然是购买ESC服务器啦,大家可能要问,你利用旧电脑就是为了节省ECS的费用,但是为了利用起来,不得不又买了一个ECS,这不是多此一举吗?这个问题问得很好。这里的ECS就是为了解决内网穿透的中继问题,但是你只要购买一个,你就可以利用这台中继,访问包括旧电脑在内的所有内网设备,例如nas、软路由、二级路由等等。购买好ECS过后,还需要购买一个域名。一般的域名一年50多元,经济实惠。然后把您的域名解析到ECS的IP上。
解析完成之后,测试一下,果然已经能够正确被DNS识别了。

在ECS上部署frps

接下来我们要在服务器上部署frp。
首先认识一下frp。简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。在服务器端,我们要运行frp的server版本。我们先去frp的官方github上下载发行版本:https://github.com/fatedier/frp/releases。可以本地下载再scp到服务器上,也可以直接在服务器上下载。
下载完成后,解压(以下载的是0.37.1的版本为例):

tar -zxvf frp_0.37.1_linux_amd64.tar.gz

然后打开解压后的文件夹

cd frp_0.37.1_linux_amd64/

我们注意到,这个文件里有frpc和frps两个可执行文件,分别对应frps_full.ini和frpc_full.ini两个配置文件。我们在这里需要运行的是服务器文件也就是frps,因此也只要选择frps.full.ini进行配置即可。打开frps_full.ini,进行一些配置,配置无需做太大改动,根据自己的需求配置即可。:

# [common] is integral section
[common]
# 如果有多个IP,可以选择绑定到不同的ip上
bind_addr = 0.0.0.0
bind_port = 7000
# udp port to help make udp hole to penetrate nat
bind_udp_port = 7001# 虚拟主机配置,不能和系统中已监听的端口冲突。http和https可以设置成同一个
vhost_http_port = 8080
vhost_https_port = 4433# 服务端web面板
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# 设置用户名密码,默认都是admin,请注意做修改
dashboard_user = admin
dashboard_pwd = admin# 普罗米修斯运维服务,go语言相关监控,可以关闭
enable_prometheus = false# 设置日志文件地址
log_file = /var/log/frps.log
# trace, debug, info, warn, error
log_level = info
log_max_days = 3
# disable log colors when log_file is console, default is false
disable_log_color = false
# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true.
detailed_errors_to_client = true# 最新版本支持的验证方式比较多,这里还是选用token模式
# AuthenticationMethod specifies what authentication method to use authenticate frpc with frps.
# If "token" is specified - token will be read into login message.
authentication_method = token
# AuthenticateHeartBeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false.
authenticate_heartbeats = false
# AuthenticateNewWorkConns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false.
authenticate_new_work_conns = false
# auth token 相当于密码,请注意保护
token = my_token# 允许配置绑定的端口
# only allow frpc to bind ports you list, if you set nothing, there won't be any limit
allow_ports = 2000-3000,3001,3003,6000-7000,4000-50000# pool_count in each proxy will change to max_pool_count if they exceed the maximum value
max_pool_count = 5# max ports can be used for each client, default value is 0 means no limit
max_ports_per_client = 0# TlsOnly specifies whether to only accept TLS-encrypted connections. By default, the value is false.
tls_only = false# 子域名配置,取决于你使用的dns服务器是否支持泛域名解析,如果不支持,请不要填写。
# 如果填写了域名,客户端只需要填写子域名即可。例如客户端填写 client1,那么访问域名就是 client1.frps.com
subdomain_host = frps.com# if tcp stream multiplexing is used, default is true
tcp_mux = true# 定制404页面
# custom_404_page = /path/to/404.html

保存好配置文件后,在项目根目录下运行

nohup ./frps -c frps_full.ini &

即可在后台启动frps。

在ECS上开启指定端口

再接下来就是设计好自己要开的端口。例如,访问旧电脑的我们使用6002端口,访问nas使用6001端口,访问软路由使用6000端口。这样远程设备和局域网内的设备就可以在服务器的指定端口进行通信。
开通端口的第一步,就是去ECS上开通指定的端口,允许所有设备访问:

服务器端的配置到这里已经设置好,接下来去配置客户端的内容。我这里使用的家里的软路由作为客户端,原因是软路由的lede/openwrt系统中可以安装frp的客户端,配置方便快捷。如果没有软路由的朋友,也可以直接在自己的旧电脑上修改配置文件frpc_full.ini,并运行

nohup ./frpc -c frpc_full.ini &

在lede/openwrt上配置frpc

接下来介绍如何在软路由(lede/openwrt)系统上配置frpc。
首先打开lede/openwrt系统,选择“酷软“,再安装frpc,进入到配置页面。

服务器地址:就是你购买的ECS的IP
服务器端口:就是配置文件中绑定的服务器端口
底层通讯协议选择tcp
tcp多路复用选择true
连接设置:失败后重复连接
连接密码:就是你在配置文件中配置的密码
http穿透服务端口选择80
https穿透服务端口选择443
(注意,当使用80和443端口的时候,一般需要进行域名备案,这里可以自行备案,详情参照各大云服务提供商,都有备案服务,备案服务需要等管局审批,一般需要10-20个工作日)
日志选项默认即可。

然后到了frpc穿透配置中
服务名称可以根据目的填写
如果需要ssh访问,协议类型选择tcp,如果是网页访问,协议类型选择http。例如,我需要外部既可以通过网页访问我内网的nas,也可以通过ssh访问nas,那么应该填写两条记录,分别是http的协议和tcp的协议。
域名一般使用二级域名,也就是你的域名加上一个前缀。如果是ssh访问,则域名不用填写。
内网地址就是在本局域网内,指定服务所在的地址,因为我的frpc服务是配置在lede上的,但ssh的机器并不是lede本身,而是内网内的一台旧电脑,因此内网地址应该填写为旧电脑的内网IP,例如:192.168.100.240。如果您的frpc配置机器和旧电脑是同一台电脑,IP可以写作127.0.0.1。如果是ssh服务,内网端口一般写作22,如果是http访问,则根据你内网服务暴露的端口来决定,一般网页都是80,而群晖的nas有自己专用的端口5000。对于http服务来说,远程端口一般默认为80,但是对于ssh服务需要指定端口,也就是刚才我们设计的端口6000,6001,6002。最后两个参数默认为关闭。

测试

到这里,所有的配置已经大功告成。我们首先通过外网来访问一个nas试试

顺利外网上了内网的群晖管理页面,万一出差在外,需要翻看以前的照片,没问题,直接登陆访问即可!

如果刚好在家,家里人告诉我网络坏了,没关系,自己动手就能进到家中软路由的管理页面。

接下来测试下ssh连接是否正常。
我们先来连接旧电脑:

ssh -oPort=6002 旧电脑用户名@服务器IP


顺利登陆

接下来测试下ssh连接软路由

ssh -oPort=6000 软路由用户名@服务器IP


顺利登陆,如果软路由上跑的clash挂了,家里看不了Youtube,登不了Twitter了,没问题,远程帮忙搞定!

最后测试下nas

ssh -oPort=6001 nas用户名@服务器IP


虽然nas说了,官方不建议你通过ssh来登陆系统,但是有个备份功能还是挺不错的,毕竟nas上还能装nodejs,能跑docker,多一种方法,多一种选择。

总结

此次实战中,解决了旧电脑利用率不高的问题,家庭网络出现故障出差在外无法现场解决的问题。如果以后自己搭建nas或黑群晖,没有quickconnect的情况下,这样的方式很好的解决了在外访问家庭nas的问题。

番外

如果配合上Windows的远程桌面使用,就能打造属于自己的云电脑。
配置方法也非常简单,首先在windows电脑上开启远程桌面功能
在软路由上使用TCP连接,映射端口为3389(远程桌面端口)

然后在macOS上下载Microsoft Remote Desktop软件,添加电脑为

然后点击保存,连接,输入电脑的用户名和密码后,就能享受远程控制家里windows电脑的便捷啦!

旧电脑改造服务器或云电脑和外网访问家庭nas/软路由实战记录相关推荐

  1. 记录一次用VNC Server配置window电脑远程访问,并在另一台电脑上外网访问远程桌面

    记录一次用VNC Server配置window电脑远程访问,并在另一台电脑上外网访问远程桌面 有一台window和macbook,平时带着macbook出门办公(轻便,不用带充电线),但有时候有些工作 ...

  2. 关于腾讯云redis 无法外网访问的解决方案

    关于腾讯云redis 无法外网访问的解决方案 参考文章: (1)关于腾讯云redis 无法外网访问的解决方案 (2)https://www.cnblogs.com/gu-bin/p/12164466. ...

  3. Linux服务器部署Kibana并通过外网访问

    Linux服务器部署Kibana并通过外网访问 修改kibana.yml 设置安全组,开放kibana对应的端口号 如果还是不能访问,连接远程,执行命令 防火墙开启指定端口 /sbin/iptable ...

  4. 在天翼云服务器部署程序不能被外网访问的问题

    一.背景 在客户的天翼云服务上部署程序,部署成功之后,发现它的公网IP不能被外网访问,刚开始认为是没有把部署网站设置默认的网址端口80,最后发现并不是这个原因. 二.原因 1. 云服务要添加安全协议 ...

  5. 公网域名如何解析到内网IP服务器——快解析域名映射外网访问

    在本地搭建主机应用后,由于没有公网IP或没有公网路由权限,在需要发布互联网时,就需要用到外网访问内网的一些方案.由于内网IP在外网不能直接访问,通常就用通过外网域名来访问内网的方法.那么,公网域名如何 ...

  6. 如何解决华为云数据库没有外网访问的难题

    目录 前言 购买最便宜的云服务器 配置云数据库的出方向规则 最重要的n g i n x 代 理跳板到华为云数据库 前言 今天公司购买了一台华 为 云 数 据 库(R D S M y S q l),让人 ...

  7. 外网网络唤醒/外网访问以及NAS常用套件

    原先有的:公网IP,光猫改为桥接,ddns 由于电脑没有机箱所以每次开机都得短接开机 很麻烦 于是很懒的我就折腾了这些 1.WOL(wake on lan)网络唤醒 实现功能:通过网络开机 (后面还有 ...

  8. 外网访问家庭局域网方案,解决运营商100.x.x.xIP问题

    相信不少网友和我一样,为了实现远程控制.NAS访问.组建私有云.摄像头监控之类的需求,把光猫改成了桥接模式,并用自己的路由器拨号.进行端口了映射.本人之前一直用着没啥问题,不过,最近突然出现了无法访问 ...

  9. 【部署】外网访问家庭计算机( 内网穿透)

    场景 很多时候需要通过远程访问来进行跨网络跨机器.大部分的场景是访问公司机器.这种一般比较容易实现,因为公司都是固定ip,或者有vpn服务等等.实在不行也可以有teamviewer,anydesk,向 ...

  10. 在内网建一个FTP服务器,并且可以通过外网访问

    转自:http://bbs.51cto.com/archiver/tid-602231.html ========================================= 一.前言 1.什么 ...

最新文章

  1. 推荐8个令人骄傲的国产软件,改变你对国产的认知
  2. jquery实现抽奖系统
  3. C语言指针入门 《C语言非常道》
  4. HDU 4609 3-idiots(FFT)
  5. matlab在图像处理中的应用论文,MATLAB在数字图像处理中的应用
  6. Some tips from Inject Lib sample application
  7. 粒子群算法(PSO)求解TSP问题
  8. 【评价模型】熵权法和模糊评价模型
  9. 【自定义View】从零开始写一个PDF查看器
  10. sem与seo的区别与联系
  11. LeetCode-171. Excel 表列序号(java)
  12. CC2530F256RHAR收发器
  13. VR和AR将如何发展下去?哪个更有前景?
  14. 《增强现实:融合现实与虚拟世界》
  15. 安装BT5 backtrack5 linux 无线网卡驱动
  16. Cocostudio学习笔记(2) Button + CheckBox
  17. 明年打算考会计证 -柯桥有没有推荐的地方-泓畅
  18. python读取usb数据_PyUSB:从USB设备读取
  19. Path In Zigzag Labelled Binary Tree(C++二叉树寻路)
  20. iOS和Android开发异同点(一)

热门文章

  1. Java解压ZIP、RAR文件
  2. 工业机器人的算法概述
  3. 立体合唱声效果器:Roland Cloud JUNO-60 Mac
  4. excel表格怎么求时间差值_怎么用excel的函数计算日期差值
  5. 冯诺依曼结构和哈佛结构
  6. 苹果11相机权限开启不了_iOS11 访问相册、相机权限,居然变化了,巨坑啊........
  7. 超震惊!!微软产品经理每天的工作内容竟然是这个...
  8. 台式计算机主板接口识别,硬件丨当前台式机主板接口知识普及与主板结构全讲解...
  9. DOS窗口打开本地应用,打开chrome浏览器
  10. 微信群二维码七天失效如何解决?有没有办法创建一个长期有效的微信群?