内网穿透理论与实践
内网穿透理论与实践
正向代理与反向代理
代理就相当于是中介。正常来说客户端将请求发送给服务器端,服务器端收到请求后将响应结果返回给客户端。设置代理后,请求和响应都将经过代理到达彼此。当客户端发送请求时,代理对其进行拦截,再由代理将其发送给服务器端。服务器端收到请求后,代理再对响应结果进行拦截,再由代理返回给客户端。
正向代理和反向代理的区别在于代理的对象不同。正向代理代理的是客户端,而反向代理代理的是服务器端。从用户角度来说,其根本区别在于正向代理对客户端是透明的,即客户端设置的。而反向代理对服务器端是透明的,即服务器端设置的。
正向代理可以隐藏用户的信息,并能够将其作为跳板访问我们无法访问的资源,如翻墙。反向代理可以隐藏服务器的信息,保障了内网的安全,同时能够用来实现负载均衡。
NAT
静态 NAT
静态 NAT 指的是将一个内部 IP 地址映射到一个外部 IP 地址。静态 NAT 通常用于服务器,因为服务器需要一个固定的 IP 地址。
静态 NAT 通常需要在路由器上手动配置,将一个内部 IP 地址映射到一个外部 IP 地址。这样,当外部用户访问外部 IP 地址时,路由器会将请求转发给内部 IP 地址。而内部 IP 访问外部 IP 时,路由器会通过 NAT 将其转换为外部 IP 地址,再将请求发送给外部服务器。
每个内部 IP 地址都需要一个外部 IP 地址,因此静态 NAT 通常需要大量的外部 IP 地址。
动态 NAT
路由器上配置一个公网IP地址池,当内网地址访问外网时从地址池里获取公网IP进行映射。当公网IP地址池分配完时,只能等待被占用的公网IP被释放后,其他主机才能获取公网IP访问公网。这种将源地址进行转换的方式也可称之为 SNAT(源地址转换)。
PAT(NAPT)
PAT,或者 NAPT(网络端口地址转换)是一种特殊的动态 NAT。PAT 通过修改源端口号来实现多个内部 IP 地址共享一个外部 IP 地址。PAT 通常用于家庭网络,因为家庭网络中的设备通常比较多,但是外部 IP 地址有限。
- 允许多个内网地址映射到同一个公网IP的不同端口。这种将源地址和端口进行转换的方式也可称之为 SNAPT(源地址端口转换)。
- 而外网访问内网服务器提供的服务时,直接访问出口防火墙提供的公网IP和端口,防火墙将请求根据端口映射转发到对应的内网服务器。这种将目的地址和端口进行转换的方式也可称之为 DNAPT(目的地址端口转换)。
内网穿透
简单来说,内网穿透是指通过内网的一台服务器,将外网的请求转发到内网的服务器。内网穿透通常用于内网服务器需要对外提供服务的场景,如家庭网络中的 NAS 服务器。当想要访问内部网络但又没有权限去操作防火墙做端口映射的情况下,内网穿透便横空出世。
正向 SOCKS5 代理
- 外部访问者
- 跳板机
- 内网机
反弹 SOCKS5 代理
- 外部访问者
- 公网服务器
- 内部服务器
- 内网机
frp
https://github.com/fatedier/frp