引言
每文学习一句诗:一点浩然气,千里快哉风——宋/苏轼的《水调歌头·黄州快哉亭赠张偓佺》
译文:一个人只要具备至大至刚的浩然之气,就能在任何境遇中都处之泰然,享受到无穷快意的千里雄风。
自述:如果你开发了一个自己的个人网站,并且你希望可以在远程访问它,这里你首先想到的是购买一台有公网IP的云服务器,这样虽然简单快捷,但是对于学生党的我来讲,高额的服务器费用可能会使我立马放弃这个想法。对于自己 的个人网站来讲,访问量没有那么大,购买云服务器的目的一般是能够应对大流量的访问,但是对于这个小型网站来讲,没有太大的必要。
那么有没有一个办法不用购买服务器也能实现远程访问自己搭建的网站呢?答案是有的,就是内网穿透技术,也叫NAT穿透,有关于NAT网络地址转换的内容可以看我的这篇博客【HTTP】解码网络通信的奥秘:HTTP,IP 地址,端口,DNS及NAT地址转换的协同之舞-CSDN博客,知名的内网穿透的公司是国内的贝锐旗下的花生壳,它可以帮助我们在没有公网IP的情况下也可以实现远程访问,嘎嘎好用!
如果本文对你有所帮助,那能否支持一下老弟呢,嘻嘻
✨✨个人主页 点击✨✨
目录
花生壳内网穿透配置
访问花生壳官网;花生壳客户端官方下载 - 贝锐花生壳官网
windows
1.下载好之后,注册一个账号后点击右侧加号新增映射
2.这样会跳到网页端
3.点击添加映射
部署本地的网站
这里如果你要部署本地的网站,实现外网访问,那你就按照上面来设置,其中内网主机选择你内网中的服务器IP地址及端口号。
穿透本地SSH
这里如果你要部署本地的SSH,远程桌面,实现外网访问,那你就按照上面来设置,其中内网主机选择你内网中的服务器IP地址及端口号。
linux
到花生壳官网下载linux版本
点击下载后会得到一个deb文件
我们将它搞到linux系统中
在linux系统进入该目录下,接着输入
sudo dpkg -i phddns_5.3.0_amd64.deb
完成后终端输入
phddns
phddns start(启动)| status(状态)| stop(停止)| restart(重启)| reset(重置)
enable(开机自启动)| disable(关闭开机自启动)| version(版本)
内网穿透(花生壳)
启动服务
sudo phddns start
查看服务状态
sudo phddns status
ONLINE为在线状态
停止服务
sudo phddns stop
选择SN码登录官网,SN码是查看状态时的SN码
在官网的设备列表中查看设备状态
到此已全部完成,可以在内网穿透页面添加映射了。
花生壳内网穿透原理
内网穿透,又称为 NAT 穿透,是一种网络技术,用于实现位于内网(局域网)中的设备能够被外网(广域网)中的其他设备访问,以下是关于它的详细解释:
在网络环境中,为了提高网络的安全性和管理效率,通常会将大量设备部署在内网中,并通过网络地址转换(NAT)技术,使内网中的多个设备能够共享一个公网 IP 地址来访问外网。但这种方式导致外网设备无法直接访问内网中的设备,内网穿透技术就是为解决这一问题而产生的。
内网穿透的基本原理是通过在公网和内网之间建立一条数据通道。一般来说,需要借助一个具有公网 IP 地址的服务器(这里是花生壳服务器)作为中介。内网中的设备与这个中介服务器建立连接,并向其注册自己的信息和提供的服务等。当外网中的设备想要访问内网设备时,先向中介服务器发送请求,中介服务器再根据之前注册的信息,将请求转发到对应的内网设备,从而实现了外网对内网设备的访问。
条件:
花生壳客户端(pc)+后端服务器程序+电脑/手机
流程:
注册花生壳=>选用http/tcp映射=>绑定服务器程序的ip和端口号=>获得三级域名,开始内网穿透
穿透原理:
此图来自花生壳官网内网穿透原理解析-贝锐官网
外网用户通过访问花生壳提供的域名,会首先进行dns解析,解析得到要访问的服务器的ip,当然这里的服务器指的是花生壳的公网服务器,花生壳的公网服务器会检查花生壳的客户端是否在运行,如运行则建立一条通信的隧道,获取内网服务器的ip和端口,这里类似反向代理的功能,即外网用户无法知道内网服务器的ip,而知道的是花生壳服务器的ip。接着花生壳客户端会将请求转发到内网的web服务器中,这就是为什么在使用python的socket库来accept客户端连接时,返回的客户端永远是运行花生壳客户端的电脑或手机的IP地址。
Nginx(代理)
Nginx 是一款轻量级的高性能 Web 服务器、反向代理服务器以及电子邮件代理服务器,由俄罗斯的软件工程师 Igor Sysoev 开发
Nginx下载
方式1:apt安装
sudo apt install nginx
方式2:源码安装
进入官网nginx: download
选择稳定版本下载
解压
tar -zxvf nginx-1.26.3.tar.gz
进入目录
cd nginx-1.26.3
执行脚本
./configure
编译安装
make
make install
完成之后,nginx会放在 /usr/local/nginx/sbin中
cd usr/local/nginx/sbin && sudo ./nginx
接着在浏览器中输入127.0.0.1后会看到
nginx会在本地的80端口中显示欢迎界面。
配置文件
进入配置文件目录
cd usr/local/nginx/conf && sudo gedit nginx.conf
若要更换服务器端口,则将80端口更换为其他即可
查询80端口有无被占用,无输出则没被占用
sudo netstat -tuln | grep 80
设置代理多个服务器并设置负载均衡
若你的服务器有两台,并且运行在 8899和8898两个端口上
通过流upstream的设置,并设置weight权重,这里端口8898的服务器权重比8899的服务器权重更高些,则客户端访问时,会将更多的请求发给8898服务器。
在通过location设置即可。
Nginx常用命令
启动nginx
sudo systemctl restart nginx
开机自启
sudo systemctl enable nginx
停止服务
sudo nginx -s stop
查看版本
nginx -V
更改配置文件后重新加载nginx
sudo ./nginx -s reload
正向代理/反向代理
正向代理定义
正向代理是一种位于客户端和目标服务器之间的代理服务器。客户端主动向正向代理服务器发送请求,正向代理服务器会代替客户端去访问目标服务器,并将获取到的内容返回给客户端。客户端需要明确知道正向代理服务器的存在,并在配置中进行相应设置。
工作原理
- 客户端向正向代理服务器发送请求,请求中包含目标服务器的地址和请求内容。
- 正向代理服务器接收到请求后,根据请求中的目标地址向目标服务器发送请求。
- 目标服务器处理正向代理服务器的请求,并将响应返回给正向代理服务器。
- 正向代理服务器将接收到的响应转发给客户端。
作用
隐藏了真实客户端的地址,服务器无法知道客户端的地址,而只知道正向代理服务器的地址,从而在一定程度上保护了客户端的隐私。
反向代理定义
反向代理是一种位于目标服务器前面的代理服务器。客户端向目标服务器发送请求时,实际上是先到达反向代理服务器,反向代理服务器根据请求的内容和配置规则,将请求转发到内部的实际服务器上,并将实际服务器的响应返回给客户端。(如Nginx)
工作原理
- 客户端向目标服务器的域名发送请求,该请求会先到达反向代理服务器。
- 反向代理服务器根据配置规则,将请求转发到内部的实际服务器上。
- 实际服务器处理请求,并将响应返回给反向代理服务器。
- 反向代理服务器将接收到的响应返回给客户端。
作用
负载均衡:反向代理服务器可以将客户端的请求均匀地分配到多个后端服务器上,避免单个服务器负载过高,提高系统的整体性能和可用性。例如,大型网站通常会使用多个服务器来处理用户请求,反向代理服务器可以根据服务器的负载情况,动态地将请求分配到不同的服务器上。
隐藏服务器真实 IP 地址:反向代理服务器可以隐藏后端服务器的真实 IP 地址,客户端只能看到反向代理服务器的 IP 地址,从而提高了服务器的安全性。即使反向代理服务器被攻击,也不会直接影响到后端的实际服务器。
如果上述内容有误,请大佬指正批评!如有帮助可以支持下老弟吗