NAT、代理服务、内网穿透

个人主页:Lei宝啊 

愿所有美好如期而遇


NAT

前面我们说过,NAT技术解决了IP地址不足的问题,它能够将私有IP对外通信时转换为全局IP。

NAT转换过程

在私有IP向外通信时,源IP会一直被替换,直到被替换为全局IP,也就是说,192.168.1.201:8080最终也就被替换成了122.77.241.4/24这个全局IP,发送给服务器主机。

NAPT

那么问题来了,服务器返回数据时向谁返回?由于私有IP被替换成了全局IP,所以至少,数据能够返回到他的出口路由器中,接下来呢?

也就有了NAPT,使用IP+Port解决问题。

在报文路由时,路由器会维护这样一种映射关系:

他们互为键值,互相映射,那么你可能说了,假如两台主机的端口号相同呢? 是不是就无法区分了?不是的,这种情况,路由器会更改端口号以作区分,假如说两个都是8080,那么替换后,有一个端口号也许就被替换成了8081。

代理服务器

正向代理

我们首先要知道,在我们家庭网络和个人移动数据中通常不会内置正向代理服务器,像学校和公司,他们的网络中就可能内置正向代理服务器,只要我们连接了他们的网络,那么我们向互联网中发送的所有请求都会先发送到这个正向代理服务器中,由他进行转发和应答,但是如果你访问的某些咳咳网站,可能会被校园网拦截,也就是这个原因,换成个人移动数据就行了。

也就是这个样子。

正向代理服务器有这么几个特点:

  • 缓存功能:正向代理服务器可以缓存经常访问的资源,当客户端再次请求这些资 源时,可以直接从缓存中获取,提高访问速度。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、 阻止恶意网站等。
  • 隐藏客户端身份:正向代理可以隐藏客户端的真实 IP 地址,保护客户端的隐私

反向代理

反向代理服务器是一种网络架构模式,其作为 Web 服务器的前置服务器,接收 来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回 给客户端。这种架构模式可以提升网站性能、安全性和可维护性等。
反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的 Web 服务器,并将 Web 服务器的响应返回给客户端。在这个过程中,客户端并不知道实际 与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。
他有这么几个特点:
  • 缓存加速:反向代理服务器可以缓存后端 Web 服务器的响应内容,对于重复的请求它可以直接从缓存中返回响应,而无需再次向后端服务器发起请求。这可以大大减少后端服务器的负载,提升网站的响应速度。
  • 负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发到多个后端服务器上,以实现负载均衡。这有助于提升网站的整体性能和响应速度, 特别是在高并发场景下
  • 安全保护:反向代理服务器可以隐藏后端 Web 服务器的真实 IP 地址,降低其被直接攻击的风险。同时,它还可以配置防火墙、访问控制列表(ACL)等安全策略,对客户端的请求进行过滤和限制,以保护后端服务器的安全。

代理服务器可以用来翻墙,比如说,我们内网中的主机去访问外网,通常是访问不了的,这个请求会被运营商拦截,那么我们就可以在公网上部署一个我们自己的服务器,然后向这个服务器发送请求时对请求加密,到服务器上时解密,由服务器代为访问,获取到的内容再加密发回,我们的客户端再进行解密,这样也就实现了翻墙,我们这里只说原理。

内网穿透

比如说,我们想访问一台主机上的资源,但是由于他处于内网中,我们没有办法直接访问,所以此时我们这样做:

首先在云服务器上部署配置frps的服务端,在主机2上部署配置frps的客户端,然后将主机2上的Linux机器上的ssh的22号端口映射到云服务器上frps的某个端口例如8080上。

我们使主机2与云服务器建立Tcp连接,此时,路由器也就建立好了NAT映射,那么,当主机1访问云服务器的8080端口时,也就相当于访问主机2的Linux机器上的22号端口。

简单来说,就是在云服务器上我们自己也可以写一个服务,然后给主机2一个客户端,主机2向我们的服务建立连接,然后在服务中,我们写的是,主机2的端口号和我们服务的一个端口号建立映射,当其他主机访问服务的这个端口时,我们就把这个访问资源的请求发给主机2,然后主机2将资源给到云服务器,再由云服务器转发回来。(云服务器充当反向代理,左右云服务器上的服务都是工具人,用来转发,真正想访问的不还是主机2上的资源)

内网打洞

像一些直播软件,qq,微信等,是采用了内网打洞技术的,什么是内网打洞?

通常,不处于一个局域网的两台主机是没有办法直接通信的,但是可以这样:

主机1访问服务器,路由器中建立了NAT映射,主机2也是如此,那么这两台路由器的IP地址,服务器就知道了,于是,服务器将这两台路由器的IP地址分别发给主机2和主机1,于是,主机1上的客户端就可以不通过服务器,直接向主机2进行通信,因为他们知道了彼此出口路由器的IP地址,同时,这台路由器也建立了NAT映射。

这就是内网打洞技术。

Nginx 反向代理是一种常见的网络架构设计,主要用于负载均衡、URL重定向和内部服务间的通信。在某些场景下,如果想要让内网的服务可以通过公网访问(即内网穿透),你可以按照以下步骤配置 Nginx: 1. **环境准备**: - 确保你已经在服务器上安装了 Nginx。 - 需要有一个公网IP地址,或者已经设置了端口映射(如NAT、DMZ等)。 2. **配置 Nginx**: 在 Nginx 的配置文件(一般为 `nginx.conf` 或 `sites-available/your-site.conf`)中,新建或编辑一个虚拟主机块(server block)。设置如下示例配置: ```nginx server { listen 80; # 公网监听的端口,根据实际情况更改 server_name yourdomain.com; # 替换为你自己的域名 location / { proxy_pass http://your_internal_ip:internal_port; # 内网服务的 IP 和端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 如果需要 SSL/TLS,添加以下内容 # ssl_certificate_path /path/to/certificate; # ssl_certificate_key_path /path/to/key; # 错误页面处理 error_page 502 /502.html; location = /502.html { root /usr/share/nginx/html; # 默认路径,也可以自定义 } } ``` 3. **重启 Nginx**: 修改完配置后,执行 `sudo service nginx reload` 或者 `sudo systemctl restart nginx` 命令使新配置生效。 4. **测试**: 尝试从公网访问 `http://yourdomain.com`,Nginx 应该会转发请求到内网指定的服务器并返回响应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lei宝啊

觉得博主写的有用就鼓励一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值