内网穿透

chenshan Lv1

前言

需要从学校提供的不具名服务器上往WSL传点文件,无奈之前只在局域网内部使用过scp,于是捡起计网知识研究了一番。

公网IP / 私网IP

1. 公网(Public Network)

  • 定义:公网是对外开放的网络,全球用户都可以通过互联网访问。

  • 特点

    1. 全球唯一IP地址:公网使用的IP地址由互联网分配机构(如ICANN)分配,每个IP地址在全球范围内都是唯一的。
    2. 广泛访问:用户可以通过公网访问各种服务和资源,如网站、电子邮件、在线视频等。
  • 举例

2. 内网(Private Network)

  • 定义:内网是企业、学校或家庭等私有网络环境中使用的网络,通常用于内部通信和资源共享,外部无法直接访问。
  • 特点
    1. 私有IP地址:共保留三段私有IP地址段供内网使用
      • 10.0.0.0 - 10.255.255.255
      • 172.16.0.0 - 172.31.255.255
      • 192.168.0.0 - 192.168.255.255
    2. 不直接暴露于公网:通过路由器或防火墙与公网隔离,保障安全性。
    3. 安全性较高:由于内网资源无法直接被外部访问,攻击风险相对较低。
  • 用途
    • 企业内部办公。
    • 家庭网络设备连接(如路由器、智能家居)。
    • 学校或局域网的资源共享。
  • 举例
    • 企业内部文件服务器。
    • 家庭中的Wi-Fi网络。

使用 ifconfig/ipconfig 查看的为局域网(内网) ip地址, wlan0/以太网适配器等代表不同的网卡分配的ip地址。如WSL在WINDOWS中可以看到 以太网适配器 vEthernet (WSL (Hyper-V firewall), 其ip地址与在WSL ubuntu中使用 ifconfig 查看到的ip地址一致。

特性 公网 内网
IP地址范围 全球唯一的公网IP 私有IP,不可在公网使用
访问范围 任何人都可以访问 仅限内部用户访问
安全性 风险较高,需加强防护 较安全,外部无法直接访问
用途 提供互联网服务 内部资源共享、局域网通信
连接方式 直接连接到互联网 通过路由器或NAT连接到公网

公网与内网的互通

1. 内网设备访问公网

内网中的设备由于使用私有 IP 地址,无法直接连接到公网。为了实现访问公网的需求,需要借助以下技术:

1.1 NAT(网络地址转换)
  • 定义:NAT 是一种将内网的私有 IP 地址转换为公网 IP 地址的技术。路由器或网关设备使用 NAT,使得多个内网设备共享一个或多个公网 IP。
  • 工作原理
    1. 内网设备发送请求时,NAT 将设备的私有 IP 替换为路由器的公网 IP,并记录设备的会话信息。
    2. 公网服务器响应时,路由器通过记录的会话信息,将数据包返回到对应的内网设备。
  • 优点
    • 节省公网 IP 地址。
    • 增强安全性:内网设备的私有 IP 不暴露在公网。
  • 常见场景
    • 家庭网络中,所有设备通过路由器访问互联网。
    • 企业局域网通过一个出口访问公网。
1.2 代理服务器
  • 定义:代理服务器是一种中间服务器,内网设备的请求先发送到代理服务器,由代理服务器代替设备与公网通信。
  • 工作原理
    1. 接受内网设备的请求。
    2. 将请求转发给公网服务器。
    3. 获取公网服务器的响应后,再将结果返回给内网设备。
  • 用途
    • 缓存常用资源,提升访问速度。
    • 管控和监控网络流量。
    • 提供匿名访问功能,隐藏内网设备的真实 IP。

2. 公网设备访问内网资源

由于内网 IP 地址不可直接被公网访问,因此需要特殊的方法让公网设备访问到内网的资源。

2.1 VPN(虚拟专用网络)
  • 定义:VPN 是一种加密的网络隧道技术,允许远程用户通过安全通道访问内网资源。
  • 工作原理
    1. 公网设备通过 VPN 客户端连接到内网的 VPN 服务器。
    2. 建立加密隧道后,公网设备会被分配一个内网 IP 地址。
    3. 公网设备就像直接连接到了内网,能够访问内网的资源。
  • 优点
    • 安全性高,数据经过加密。
    • 可远程访问内网资源,如文件服务器、数据库等。
  • 常见场景
    • 远程办公,访问公司内部资源。
    • 访问被防火墙或地理限制阻止的服务。
2.2 端口映射(NAT 穿透)
  • 定义:端口映射是一种将内网资源通过路由器的公网 IP 和特定端口暴露给公网的技术。

  • 工作原理

    1. 在路由器上配置端口映射规则。
    2. 当公网设备访问路由器的公网 IP 和指定端口时,路由器将请求转发到对应的内网设备。
    • 例如:
      • 路由器公网 IP:203.0.113.1
      • 内网服务器 IP:192.168.1.100
      • 映射规则:将 203.0.113.1:8080 映射到 192.168.1.100:80

    公网用户访问 203.0.113.1:8080,实际上访问的是内网服务器的 80 端口。

  • 优点

    • 简单易用。
    • 只需要配置路由器即可实现公网与内网的通信。
  • 限制

    • 对端口映射数量有限制。
    • 内网设备需要手动开放相关端口,增加了安全风险。

使用cpolar实现内网穿透

cpolar官网:https://www.cpolar.com/

1. 安装cpolar
1
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
2. token认证

注册cpolar账号,进入验证查看Authtoken

在WSL中输入:

1
cpolar authtoken xxxxxx(复制的token)
3. 启动cpolar服务
1
sudo systemctl start cpolar

查看状态是否为active

1
sudo systemctl status cpolar
4. 查看分配公网IP

这一步需要用到浏览器,WSL上安装可参考使用 WSL 运行 Linux GUI 应用 | Microsoft Learn 。在浏览器上访问本地9200端口, 访问方式: 局域网ip:9200,打开cpolar web ui界面, 默认会生成一个ssh名称的隧道, 可以直接跳到状态 - 在线隧道列表查看, 然后记住映射的公网ip和端口号,远程连接。

这里使用的端口已经不是默认端口22,所以应该使用 -P 参数指定

1
scp -P XXX file username@host:dir

这里我使用WSL时遇到了一个问题,一个是ssh默认的配置里禁止了密码登录方式,需要修改 /etc/ssh/sshd_config,将PasswordAuthentication no 改为 PasswordAuthentication yes

  • 标题: 内网穿透
  • 作者: chenshan
  • 创建于 : 2024-12-05 21:53:01
  • 更新于 : 2024-12-06 00:00:55
  • 链接: https://chenshan.link/2024/12/05/内网穿透/
  • 版权声明: 版权所有 © chenshan,禁止转载。
评论