使用frp+阿里云服务器实现内网穿透

为什么要进行内网穿透

因为ipv4地址容量问题,目前用了很多奇怪的方法让每个人能使用ip的在网上通信

  1. 多个电脑构成使用同一个公网的ip地址,然后使用局域网地址来区分不同电脑,

  2. 多个电脑不是同时需要ip地址,在它需要的时候分配才分配它一个ip地址

我们要访问一台电脑,我们就要在公网上找到这台电脑的ip地址,因为上面一顿操作下来,找到一个电脑的公网ip地址太难了,而且一个电脑也很难分配公网ip地址

内网穿透原理:

  • 可以租用具有共用ip地址的服务器,然后让这个具有公开的ip地址服务器的,使用内网穿透软件将要访问信息转发给自己的电脑。

  • 自己的电脑使用内网穿透软件将数据返回公网ip地址服务器,然后服务器将数据返回自己的电脑

    使用frp+阿里云服务器实现内网穿透_第1张图片

frp内网穿透访问流程图
  1. 外网机器使用ssh通过外网机的22端口将数据发给云服务器的6000端口,

  2. 云服务器使用frps将6000端口的访问数据转发到7000端口

  3. 云服务器使用frps将7000端口中的数据转发到内网机器的22端口

使用frp+阿里云服务器实现内网穿透_第2张图片

穿透软件安装类型
  • 具有公网ip地址的服务器:安装内网穿透软件的服务程序

  • 处于内网的电脑:安装内网穿透软件的客户程序

内网穿透软件

  • frp:公开软件

step1: 搞定一个具有公网ip地址服务器

去阿里,腾讯,京东租用服务器

这里举例阿里服务器,我买的是99一年的3mb/s的最便宜的服务器

1. 设置云服务器出网(从这个端口发出信息给外部网络)的端口

使用frp+阿里云服务器实现内网穿透_第3张图片

设置入网(从这个端口接收)的端口
  • ssh的22端口需要打开

  • frps.toml的bind_port设置(本处7000)的端口需要在云服务器上打开

  • frpc.toml的remote_port设置(本处6000)的端口需要再云服务器上打开

使用frp+阿里云服务器实现内网穿透_第4张图片

Step2: 服务器端安装服务程序frps

1. 安装
curl -# -LJO https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
2. 解压软件
tar -zxvf frp_0.34.3_linux_amd64.tar.gz
3. 配置服务端----配置frps.ini 或者frps.toml
[common]
bind_port = 7000 # frps.init bind_port要和frpc.toml的 serverPort  相同
bind_addr = 0.0.0.0
# token = 123456 # 设置了token则要和frpc.toml的 taken  相同

# dashboard_port = 37500
# dashboard_user = admin
# dashboard_pwd = admin
  • [common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口

  • bind_addr是绑定的ip地址默认为0.0.0.0即本机的所有ip地址

  •  token用于验证连接,只有服务端和客户端token相同的时候才能正常访问

    • 如果不使用token,那么所有人都可以直接连接上,所以建议大家在使用的时候还是把token加上
  • [dashboard]仪表盘的配置(可以不配置)

    • 配置了的化可以访问服务器ip:dashboard_port 通过dashboard_user和dashboard_pwd登陆后查看frp服务器状态
4. 启动服务端
./frps -c frps.ini
# 或者下面这种方式
./frps -c frps.toml
避免系统重启后收到启动服务端(这部分可以不操作)
1. 打开配置文件
sudo vim /lib/systemd/system/frps.service
2. 在frps.service文件写入配置(可以不用)
[Unit]
Description=frp server
After=network.target

[Service]
Type=simple

ExecStart=/your path/frps -c /your path/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target
3. 重新启动frps
sudo systemctl start frps
4. 打开自启动
sudo systemctl enable frps
5. 查看状态和日志信息
sudo systemctl status frp
开了自启动后-----如何重启frp软件
sudo systemctl restart frps
开了自启动后----如何停止应用
systemctl stop frps

Step3: 内网电脑安装客户程序frpc

1. 安装openssh-server

openssh-client是默认安装了的,所以你可以使用ssh去访问其他无法,如果要接受其他电脑使用ssh访问本机的话,就要安装openssh-server了。

2. 到github官网下载对应的安装包
3. 设置配置文件frpc.toml

部署 frpc 并编辑 frpc.toml 文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x。以下是示例配置

# 服务器的公网地址
serverAddr = "x.x.x.x"
serverPort = 7000
# token = 123456 #设置密码
[[proxies]]
name = "ssh" # 设置使用协议名称
type = "tcp"
localIP = "127.0.0.1"
localPort = 22 #ssh协议的本地端口 
# 设定远程端口,当访问服务器的remotePort(6000)端口时,数据会被转发到localPort(22)
remotePort = 6000
  • localIP 和 localPort 配置为需要从公网访问的内网服务的地址和端口。
  • remotePort 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口

4. 运行

./frpc -c ./frpc.toml

访问内网

Step4: ssh访问

ssh -o Port=value of frpc remotePort test@value of frpc serverAddr
ssh -o Port=6000 [email protected]

注意事项

这个内网穿透最容易出现错误的就是端口号的问题了,

比如

  • 本地机防火墙屏蔽了了端口,网络服务商禁止了端口号(比如校园网禁用了22端口,我学校的校园网就是)

  • 云服务器入网和出网端口号没有打开

  • 内网机器的22端口没有打开

排错方法

  • 确保 SSH 服务器运行中 (sudo systemctl restart sshd)
  • 确认 SSH 端口是否是 22,如果是其他端口,修改 frpc.ini
  • 确保 SSH 监听 0.0.0.0 (ListenAddress 0.0.0.0)
  • 检查防火墙 (ufwfirewalld) 是否阻挡了 22 端口

你可能感兴趣的:(服务器,阿里云,运维)