前言
在没有公网IP的情况下,很难从其他网络环境中直接访问到部署在本地的web服务,这时候就需要通过内网穿透的方式来实现。而对于内网穿透,有着很多的实现方式,最为常见的就是通过云服务器搭建和使用别人提供的服务
自建内网穿透服务
- 需要有自己的云服务器
- 服务端和客户端都需要下载frp,下载地址 => Releases · fatedier/frp (github.com)
服务端配置
编辑frps.ini文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21[common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,需要与客户端一致,请改为更复杂的 token = aaaaaa # frp管理后台端口,请按自己需求更改 dashboard_port = 7500 # frp管理后台用户名和密码,请改成自己的 dashboard_user = Mango dashboard_pwd = 12345678 enable_prometheus = true # http 端口可更改 vhost_http_port = 8090 # https 端口可更改 vhost_https_port= 8081 #vhost_https_port = 8080 # frp日志配置 路径根据自己需求更改 log_file = /root/frp/.frps.log log_level = error log_max_days = 3
配置systemd守护进程便于管理
1
vim /etc/systemd/system/frps.service
输入以下内容并保存
1
2
3
4
5
6
7
8
9
10
11
12[Unit] Description=fraps service After=network.target syslog.target Wants=network.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/root/frp/frps -c /root/frp/frps.ini [Install] WantedBy=multi-user.target
启动frps并设置开机自启
1
2
3systemctl daemon-reload systemctl start frps systemctl enable frps
配置nginx
如果没有nginx先安装
1
2apt update apt install nginx
编辑配置文件
1
2
3
4
5vim /etc/nginx/sites-enabled/nextcloud # 也可以不新建nextcloud文件,直接配置默认文件 vim /etc/nginx/sites-enabled/default
nginx代理frps配置文件参考
可配置SSL开启https
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28server{ listen 80; listen 443 ssl; #对应你的域名 server_name xxx.xxx.cn; # https 域名证书相关配置 # ssl证书存储路径,根据个人存储路径设置,我的被存在了 /etc/nginx/ssl/ 文件夹下面 ssl_certificate /etc/nginx/ssl/xxx.mstzf.cn.pem; ssl_certificate_key /etc/nginx/ssl/xxx.mstzf.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:8090; # 映射的frp服务端frps.ini的 vhost_http_port端口 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_redirect off; proxy_read_timeout 240s; client_max_body_size 0; } } }
重启nginx服务
1
systemctl restart nginx
客户端配置
编辑frpc.ini文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57[common] # 远程服务器地址 # 替换为自己的域名 server_addr = 0.0.0.0 # 远程服务器监听端口 # 和服务端 bind_port 相同 server_port = 7000 # 连接密钥 # 必须和服务端配置相同 token = aaaaaa # 配置日志文件 # 日志级别:trace, debug, info, warn, error # 日志保存路径根据需求修改 log_file = /home/zh/frp/log/.log log_level = error log_max_days = 3 # 客户端管理配置 admin_addr = 127.0.0.1 admin_port = 7500 admin_user = Mango admin_pwd = 12345678 # 代理端口配置 模板 # [内容随意 如ssh] # type = 连接类型 如 tcp # local_ip = 127.0.0.1 # local_port = 22 本地需要代理的端口 # remote_port = 2222 将本地22端口代理为远程的2222端口 # 该配置下,可用远程 ip 的 2222 端口访问到本地的 22 端口服务 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 2222 [rdp] type=tcp local_ip = 127.0.0.1 local_port=3389 remote_port=3389 [nx] type=tcp local_ip=127.0.0.1 local_port=4000 remote_port=4000 [web] type = http local_ip = 127.0.0.1 local_port = 80 #subdomain = root # 绑定的域名 和nginx配置下的 server_name 相同 custom_domains = xxx.mstzf.cn
为frpc配置systemd守护进程便于管理
编辑文件
1
vim /etc/systemd/system/frpc.service
输入以下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s # 根据frp所在位置设置 ExecStart=/home/zh/frp/frpc -c /home/zh/frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target
启动frpc并配置开机自启
1
2
3
4
5systemctl daemon-reload systemctl start frpc systemctl enable frpc
使用第三方服务
我个人使用的是Sakura Frp
,有能够满足基本需求的免费套餐,vip套餐也很划算,已经能够满足我的基本需求
- 注册账号
完善个人信息
如果有建站需求想要使用国内站点,需要完成实名认证和有备案域名,否则只能使用国外的站点来搭建
在客户端安装frp软件
这一部分官网中已经介绍得十分的详细,这里只有几个关键命令,具体可到官网查看
确认系统架构
1
uname -m
获取软件链接
安装
1
2
3
4
5cd /usr/local/bin wget -O frpc <下载地址> chmod 755 frpc
配置守护进程(systemd)
具体操作可去指导文档查看
添加工作目录
1
mkdir -p /usr/local/etc/natfrp
编辑配置文件
1
vim /etc/systemd/system/frpc@.service
输入配置内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit] Description=SakuraFrp Service After=network.target [Service] Type=idle #DynamicUser=yes Restart=on-failure RestartSec=60s ExecStart=/usr/local/bin/frpc -f %i WorkingDirectory=/usr/local/etc/natfrp [Install] WantedBy=multi-user.target
重载systemd
1
systemctl daemon-reload
新建隧道
对于远程访问网页的,需要选择可建站的节点;至于选择国内还是国外要先看自己的域名是否已经备过案,备案过的域名可以使用国内节点,国内节点在各方面都要优于国外。如果没有备案域名,就只能使用国外节点。
端口根据本地网页端口配置
在绑定域名和自动HTTPS中一定要输入自己需要使用的域名
配置DSN解析
复制节点域名,到域名服务商处配置DNS解析,将自己的域名CNAME到复制的节点域名上
- 记录类型选择CNAME
- 记录值选择选择节点所绑定域名
配置SSL证书
从服务商下载域名SSL证书选择Nginx,将证书重命名为 将其中 扩展名为pem的直接将扩展名修改为crt 并只保留域名和扩展名 即 如 nextcloud.mstzf.cn.key 的形式
将证书移动到之前配置的工作目录中 /usr/local/etc/natfrp
启动隧道
1
2systemctl <start|stop> <Unit名称> # <Unit名称> 即下图 -f 之后 红色框部分
暂无评论