侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计创建 30 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

家庭网络配置外部访问(无需云服务器)

Cook
2024-11-29 / 0 评论 / 0 点赞 / 109 阅读 / 0 字

本文内容是根据作者自身的设备以及经验写的,所以覆盖面以及深度可能严重不足,仅供参考!

1、实现方案

想要在外部访问家里的设备/服务,要么用公网ip,要么就得内网穿透。

1.1、公网ip

公网IP(Public IP)是指可以在互联网中直接访问的IP地址。它是由互联网服务提供商(ISP)分配给用户的,用于在全球互联网上标识和定位网络设备。

一般运营商分配给用户的都是内网ip(ipv4),因为ipv4是有限的,公网ip可以拿来给企业做企业宽带提供固定ip。

家庭宽带即使是公网ip也都是动态ip,也就是ip地址会变化。所以需要配合域名和DDNS(动态域名解析)使用。

随着ipv6的普及,现在大多数家庭网络都已经支持ipv6,而且获取到的ipv6的ip也是公网ip(ipv6数量庞大),并且每个设备都可以获取到一个v6公网!

公网IP

公网ipv4目前已经极难获取(少部分地区仍可以获取,可以打运营商的客服尝试下)。

而公网ipv6,大多数的家庭网络已经普及,但是可能默认是关闭的,需要手动打开。

开启方式:参考文档注意:此教程中的关闭防火墙的步骤不建议操作,建议开启特定端口作为入口

优点:

1、访问速度快,因为是直连,不经过中转,直接利用的宽带的上传带宽。

2、成本较低,不需要额外购买服务器。只需要买个域名即可。

3、配置和使用简单,只需要配置家里的设备,在外部即可访问。

缺点:

1、因为ip地址会变,所以需要配合域名使用。

2、公网v6需要访问的设备和网络都支持ipv6才可以访问。一般公司或一些公共场所的wifi都是没有ipv6的,手机流量和大多数的家庭网络可以正常访问。

3、由于运营商禁用了80、443、22等常用的协议端口,所以如果访问一些网页等 服务需要配置其他端口,访问的时候需要带端口访问,看起来会丑一些。

1.2、内网穿透

内网穿透又大致分为以下三种:

1.2.1、frp端口映射

由于需要使用云服务器,这里只做简单的介绍和总结,详细使用教程就不写了,网上教程很多,可以详细了解。

frp需要有一台公网的服务器,用作中转,将服务器的ip+端口映射到家庭设备的ip+端口。

优点:

1、操作相对简单,不需要家庭设备和访问设备做太多配置,主要配置云服务器。

2、连通性好,因为云服务器(国内)的静态v4公网的连通性是很好的,基本不会有因为网络环境导致的连不上或访问慢的问题。

3、无端口封禁,可以将服务器的80、443等端口映射到家庭设备的非标端口上,实现使用标准端口访问家庭服务。

缺点:

1、速度慢,由于经过了中转设备,所以访问速度受到中转设备的带宽影响,云服务器的带宽昂贵,一般购买不会太高带宽。

2、成本较高,即使相对便宜的云服务器,一年也得小100了。

3、需要一定的linux操作,否则配置起来会比较容易遇到问题。

1.2.2、异地组网

基本工作原理是组建一个虚拟局域网,各个设备安装了客户端、加入到这个虚拟局域网后,就会自动分配一个IP,从而实现局域网内各个设备及服务的相互访问。

而虚拟局域网通过公网上的服务商管理,用于获取各个设备的信息,各个设备直接连接,不通过服务商中转(大多数情况)

下图只是草图,任何异地访问都是需要经过公网的,这里省略了

优点:

1、操作简单,只需要双方安装客户端即可。

2、速度快,因为是直连,不经过中转,直接利用的宽带的上传带宽。

3、联通性大多数情况下很好,只有双方网络环境连通性都很差的情况才会出现问题。

4、访问方便,直接使用自定义的静态的ip地址访问。

5、成本低,无需购买域名,而且一般的组网服务商都对普通用户免费(如ZeroTier

缺点:

1、只有安装了客户端并且加入组网才可访问,无法面向所有公网用户。

2、ZeroTier免费用户有客户端和网络数量的限制(25个设备,3个网络),超出则收费。不过对于家庭用户来说,肯定是够用了。

1.2.3、打洞

STUN简介

Simple Traversal of UDP over NATs, NAT的UDP的简单穿越,是一种网络协议。是客户机-服务器的一种协议,由RFC 3489 定义。该协议定义了一些消息格式,大体上分为Request/Response。这个协议主要作用就是可以用来在两个处于NAT路由器之后的主机之间建立UDP通信。它允许位于NAT后的客户端找出自己的公网地址,确定自己位于的NAT是哪种类型,以及NAT为这个客户端的本地端口所绑定的对外端口。引用

由于我没有使用过打洞的方式,所以不过多介绍了。使用方式可以参考lucky的文档

2、操作步骤

2.1、公网ip

2.1.1、获取v4 或 开启v6(参考文档

获取公网ip的步骤就不赘述了,可参考上方文档或自行寻找教程。

2.1.2、配置防火墙(关闭光猫防火墙,使用路由器管理防火墙)

由于公网ip直接开放在公网上,所以不建议关闭防火墙(强烈不建议)。否则就是裸奔!可以关闭光猫防火墙(不方便管理),保留路由器防火墙。

建议:开放一个端口作为所有服务的入口。

如果路由器没有图形化的防火墙配置,或只能全开全关,建议搜索一下:设备品牌+防火墙配置。

如果找不到教程建议更换路由器。

本文以 ImmortalWrt 为例,其它系统可自行搜索。

1、关闭光猫防火墙

2、进入防火墙配置菜单-流量规则

3、添加一条规则

编辑规则

然后点击底部的 保存&应用 即可。

4、测试

可以开通一个内网有服务的端口,然后用手机流量开热点给电脑,然后用 telnet测试。

注意:80、443、22、21、25、3389等端口大概率会被禁用,也就是在运营商那边就拦截了,家里开放没有用。

#ipv4测试 【4433】 更换成自己要测试的端口
telnet v4ip地址 4433
#ipv6测试 
telnet -6 v6ip地址 4433

2.1.3、购买域名并配置解析

域名服务商可以选择阿里云、百度云,或者海外的服务商都可以,哪个便宜买哪个。

注意:国内服务商需要实名备案,麻烦倒是不算麻烦,填完信息也很好过,但是注意不要搭建涉嫌违规的服务,否则可能上门。

以阿里云为例,.top的域名首年12,一次买10年的话,也就是188。还是很便宜的。

购买教程:参考文档

配置解析(以阿里云为例):

1、进入阿里云控制台的域名菜单

2、进入解析配置

3、添加记录

  • 记录类型

    • ipv6选择AAAA

    • ipv4选择A

  • 主机记录

也就是二级域名,比如www、test,访问就是www.yuming.top/test.yuming.top

填*就是泛解析,表示满足格式 *.yuming.top 的所有域名都会解析到你指定的地址。如果你的大多数服务都在同一个设备上,建议给这台设备的ip配置泛域名即可,这样所有的二级域名默认解析到这台设备,再在这台设备上根据二级域名做转发即可。

PS:即使不同服务分散在多台设备,也建议配置一个入口,由这个入口进行转发即可。

  • 请求来源和TTL

无特殊需求无需改动

  • 记录值

填你设备的公网ip,虽然IP会变,但是先填上就行了,后面的DDNS配置可以配置变动自动更新。


配置完成后,可以检测下

如下,解析结果是你配置的IP,就是成功了,然后可以试下 域名+端口访问下你的服务,看看是否成功(注意前面的防火墙配置,是否开放了此端口)。

比如www.yuming.top:8080

为什么要加端口?不加端口的话,会使用默认端口,http默认80,https默认443,而这些端口是被运营商禁用的,所以需要指定端口。

2.1.4、配置转发服务和证书

你可以通过不同的端口访问这台设备的不同服务,比如8080访问web服务,8096访问媒体服务。

但是需要防火墙开放这些端口,不建议这么做。建议开放一个特定的端口用于https端口,比如4433,作为统一入口,所有的服务通过二级域名区分,比如:

web服务通过web.yuming.top:4433访问

媒体服务通过emby.yuming.top:4433访问

目的:

1、统一入口,方便访问。

2、减少入口,避免潜在的安全隐患(否则一些常用的端口可能会被扫描并尝试爆破,尽管ipv6被扫的概率很低,但并不为0,我就被扫到过)。

3、一个入口,就只需要在这个入口配置https的证书即可,否则需要每台设备单独处理。

所以就需要配置转发服务,这里使用lucky作为演示:github官方文档

lucky可以简单理解为一个nginx的图形操作工具+证书生成工具以及一些扩展工具,使用很简单,不需要太多基础知识。

Lucky简单使用和证书配置可以参考我这篇文章:Lucky使用教程(基础版)

2.1.5、配置DDNS

参考我的这篇文章:DDNS:动态域名解析

2.2、异地组网

参考我的这篇文章:ZeroTier:简单实现内网穿透、异地组网

0

评论区