阅读量:2
一、服务器的选择
- 有自己的本地的公网 IP 的请跳过此篇文章
- 按需求选择一个云服务器,目的就是为了进行 frp 的搭建,完成内网穿透
- 我选择的是腾讯云服务器,我的配置如下,仅供参考:
4. 腾讯云服务器官网地址
二、服务器的一些配置
1. 使用 root 权限登录
- 根据服务器提供的方式,在网页上登录服务器,进入命令终端
- 终端输入
sudo passwd root
,设置 root 密码 - 输入 root 的密码,按 Enter
- 重复输入 root 的密码,按 Enter
- 返回如下信息,即表示 root 密码设置成功
passwd: password updated successfully
- 终端输入
sudo vi /etc/ssh/sshd_config
,打开 sshd_config 配置文件 - 按
/
切换搜索模式,输入Authentication
,并按 Enter 查找下文:
# Authentication: #LoginGraceTime 2m #PermitRootLogin prohibit-password #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
- 按
i
切换至编辑模式,将PermitRootLogin
参数修改为yes
,并删除#
注释符,修改后如下所示:
#LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
- 按
Esc
,输入:wq
,保存文件并返回 - 执行命令
sudo service ssh restart
,重启 ssh 服务
2. PuTTY
- PuTTY 是一款Windows的一个免费的 SSH 和 Telnet 客户端,用于远程登录和管理远程计算机
- PuTTY 官网地址
- 下载安装过程:略
- 根据服务器提供的方式,在网页上登录服务器,进入命令终端(root账户登录)
- 服务器中生成 SSH KEY:执行命令
ssh-keygen
,一路回车即可 - 生成的 SSH KEY 保存在
/root/.ssh
中 - 安装 putty 工具:执行命令
apt-get install putty-tools
- 将 SSH KEY 转化成 PUTTY KEY:执行命令
puttygen ~/.ssh/id_rsa -o ~/.ssh/id.ppk
- 修改 authorized_keys:执行命令
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 执行命令
sudo service ssh restart
,重启 ssh 服务 - 下载 id.ppk 到本地 Windows 电脑
- Windows 电脑上打开 PuTTY,点击 Connection --> Seconds between keepalives 填写 10
- 点击 Data --> Auto-login username 填写 root -->双击 SSH -->双击 Auth -->点击 Credentials --> private key file for authentication 选择刚刚生成的id.ppk
- 点击 Session --> Host Name 填写服务器的 IP 地址–> Port 填写 22 --> Connection type 选择 SSH -->其他配置默认即可 -->点击 Save,保存配置(下一次直接选择保存的配置,点击 load,就可以调出前面设置的所有配置)–>点击 Open -->这样就通过 SSH 连接了服务器
3. WinSCP
- WinSCP 是一个免费的开源 SFTP、SCP 和 FTP 客户端,用于在 Windows 操作系统上进行文件传输和管理
- WinSCP官网地址
- 下载安装过程:略
- Windows 电脑上打开 WinSCP,主机名填写服务器地址,用户名填写 root,密码为上面设置的 root 的密码
- 点击保存
- 点击登录,即可自由使自己的 Windows 电脑与服务器自由传输文件
4. VSCODE
- VSCODE 安装步骤:略
- 安装插件 Remote - SSH
- 点击侧边栏图标如下
- 点击侧边栏中的“+”
- 输入
ssh root@服务器地址
- 根据弹出的提示,即可连接到云服务器,在本地的电脑上,打开并方便的编辑云服务器上的文件
三、frp的搭建
1. Linux 服务器中服务端的搭建
- FRP 官网地址
- FRP 的安装及使用文档
- FRP 的 GitHub 地址
- 服务端我选择搭建在云服务器上(因为它有公网 IP)
- 在 GitHub 的下载地址中下载相应的 FTP 安装包
- 我选择的是 frp_0.51.2_linux_amd64.tar.gz 与 frp_0.51.2_windows_amd64.zip
- 将 frp_0.51.2_linux_amd64.tar.gz 解压,并通过 WinSCP 上传到服务器中
- 通过 PuTTY 登录服务器
- 将服务器中的 frp_0.51.2_linux_amd64 移动到 frp 文件夹中:执行命令
mv /root/frp_0.51.2_linux_amd64 /root/frp
- 执行命令
rm -rf /root/frp/frpc*
,删除客户端内容 - 执行命令
chmod u+x /root/frp/*
,为 FRP 增加可执行权限 - 通过 VSCODE 编辑
/root/frp/frps.ini
,内容如下:
[common] # 常用配置 # 服务端监听地址 bind_addr = 0.0.0.0 # 服务端监听端口:接收 frpc 的连接 bind_port = 7000 # 日志文件地址 & 日志等级 & 日志文件保留天数 log_file = ./frps.log log_level = info log_max_days = 7 # 服务端和客户端心跳连接的超时时间 heartbeat_timeout = 90 # 鉴权方式 authentication_method = token # 鉴权使用的 token 值 token = 123456789 # 最大连接池大小 max_pool_count = 5 # 启用 Dashboard 监听的本地地址 dashboard_addr = 0.0.0.0 # 启用 Dashboard 监听的本地端口 dashboard_port = 7500 # HTTP BasicAuth 用户名 dashboard_user = root # HTTP BasicAuth 密码 dashboard_pwd = 123456 # 基础配置 # 服务端监听 KCP 协议端口 kcp_bind_port = 0 # 服务端监听 QUIC 协议端口 quic_bind_port = 0 # quic 协议 keepalive 间隔,单位: 秒 quic_keepalive_period = 10 # quic 协议的最大空闲超时时间,单位: 秒 quic_max_idle_timeout = 30 # quic 协议最大并发 stream 数 quic_max_incoming_streams = 100000 # 代理监听地址 # proxy_bind_addr = 0.0.0.0 # 禁用标准输出中的日志颜色 disable_log_color = false # 服务端返回详细错误信息给客户端 detailed_errors_to_client = true # tcp_mux 的心跳检查间隔时间 tcp_mux_keepalive_interval = 60 # 和客户端底层 TCP 连接的 keepalive 间隔时间,单位秒 tcp_keepalive = 7200 # 用户建立连接后等待客户端响应的超时时间 user_conn_timeout = 10 # 代理 UDP 服务时支持的最大包长度 udp_packet_size = 1500 # TLS 服务端证书文件路径 # tls_cert_file = # TLS 服务端密钥文件路径 # tls_key_file = # TLS CA 证书路径 # tls_trusted_ca_file = # 打洞策略数据的保留时间 nat_hole_analysis_data_reserve_hours = 168 # 权限验证 # 开启心跳消息鉴权 authenticate_heartbeats = false # 开启建立工作连接的鉴权 authenticate_new_work_conns = false # 管理配置 # 允许代理绑定的服务端端口 # allow_ports = 1000-2000,2001,3000-4000 # 限制单个客户端最大同时存在的代理数 0 表示没有限制 max_ports_per_client = 0 # 只接受启用了 TLS 的客户端连接 tls_only = false # Dashboard, 监控 # 是否启用 TLS 模式 dashboard_tls_mode = false # TLS 证书文件路径 # dashboard_tls_cert_file = # TLS 密钥文件路径 # dashboard_tls_key_file = # 是否提供 Prometheus 监控接口 需要同时启用了 Dashboard 才会生效 enable_prometheus = false # 静态资源目录 Dashboard 使用的资源默认打包在二进制文件中,通过指定此参数使用自定义的静态资源 # asserts_dir = # 启动 Go HTTP pprof 用于应用调试 pprof_enable = false # HTTP & HTTPS # 为 HTTP 类型代理监听的端口 启用后才支持 HTTP 类型的代理,默认不启用 vhost_http_port = 0 # 为 HTTPS 类型代理监听的端口 启用后才支持 HTTPS 类型的代理,默认不启用 vhost_https_port = 0 # HTTP 类型代理在服务端的 ResponseHeader 超时时间 vhost_http_timeout = 60 # 二级域名后缀 # subdomain_host = # 自定义 404 错误页面地址 # custom_404_page = # TCPMUX # 为 TCPMUX 类型代理监听的端口 启用后才支持 TCPMUX 类型的代理,默认不启用 tcpmux_httpconnect_port = 0 # 是否透传 CONNECT 请求 通常在本地服务是 HTTP Proxy 时使用 tcpmux_passthrough = false
执行命令
./frps -c ./frps.ini
,启动 FRP 服务端登录腾讯云服务器官网–>点击控制台–>点击我的资源中的云服务器–>进入已有实例
点击安全组–>点击出站规则–>点击编辑规则
点击入站规则–>点击添加规则
类型选择自定义–>目标
0.0.0.0/0
-->协议端口填写TCP:7000,7500
–>策略选择允许–>备注填写FRP
–>点击确定完成 FRP 监控面板端口开放,配置如下所示打开
服务器地址:7500
,内容如下所示,FRP 服务端配置成功
2. 服务端的 FRP 开机自启动
- 通过 VSCODE 创建
/etc/systemd/system/frps.service
,内容如下:
[Unit] # 服务名称 Description = frp_server 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
- 使用 systemd 命令,管理 frps,具体命令如下:
# 启动frp systemctl start frps # 停止frp systemctl stop frps # 重启frp systemctl restart frps # 查看frp状态 systemctl status frps
- 配置 frps 开机自启,具体命令如下:
systemctl enable frps
3. Windows 电脑中客户端的搭建
- 解压 Windows 版本 FRP 安装包 frp_0.51.2_windows_amd64.zip
- 我将所有解压得到的内容移动到目录
D:\FRP
中 - 打开 CMD
- 输入以下命令,删除服务端内容:
cd D:\FRP rm frps*
- 通过 VSCODE,编辑
D:\FRP\frpc.ini
,内容如下:
[common] # 常用配置 # 服务器 IP 地址 server_addr = xxx.xxx.xxx.xxx # 连接服务端的端口 server_port = 7000 # 日志文件地址 & 日志等级 & 日志文件保留天数 log_file = ./frpc.log log_level = info log_max_days = 7 # tcp_mux 的心跳检查间隔时间,单位:秒 tcp_mux_keepalive_interval = 60 # 向服务端发送心跳包的间隔时间 建议启用 tcp_mux_keepalive_interval,将此值设置为 -1 heartbeat_interval = -1 # 和服务端心跳的超时时间 heartbeat_timeout = 90 # 鉴权方式 需要和服务端一致 authentication_method = token # 鉴权使用的 token 值 需要和服务端设置一样的值才能鉴权通过 token = 123456789 # 启用 AdminUI 监听的本地地址 admin_addr = 0.0.0.0 # 启用 AdminUI 监听的本地端口 admin_port = 7500 # HTTP BasicAuth 用户名 admin_user = root # HTTP BasicAuth 密码 admin_pwd = 123456 # 基础配置 # xtcp 打洞所需的 stun 服务器地址 stun.easyvoip.com:3478 # nat_hole_stun_server = # 连接服务端时所绑定的本地 IP # connect_server_local_ip = # 连接服务端的超时时间 dial_server_timeout = 10 # 和服务端底层 TCP 连接的 keepalive 间隔时间,单位秒 负数不启用 dial_server_keepalive = 7200 # 连接服务端使用的代理地址 格式为 {protocol}://user:passwd@192.168.1.128:8080 protocol 目前支持 http、socks5、ntlm # http_proxy = # 禁用标准输出中的日志颜色 disable_log_color = false # 连接池大小 pool_count = 0 # 用户名 设置此参数后,代理名称会被修改为 {user}.{proxyName},避免代理名称和其他用户冲突 # user = Vaciller # 使用 DNS 服务器地址 默认使用系统配置的 DNS 服务器,指定此参数可以强制替换为自定义的 DNS 服务器地址 # dns_server = # 第一次登陆失败后是否退出 login_fail_exit = true # 连接服务端的通信协议 protocol = tcp # 协议 keepalive 间隔,单位: 秒 quic_keepalive_period = 10 # quic 协议的最大空闲超时时间,单位: 秒 quic_max_idle_timeout = 30 # quic 协议最大并发 stream 数 quic_max_incoming_streams = 100000 # 启用 TLS 协议加密连接 tls_enable = tool # TLS 客户端证书文件路径 # tls_cert_file = # TLS 客户端密钥文件路径 # tls_key_file = # TLS CA 证书路径 # tls_trusted_ca_file = # TLS Server 名称 为空则使用 server_addr # tls_server_name = # TLS 不发送 0x17 当为 true 时,不能端口复用 disable_custom_tls_first_byte = true # 服务时支持的最大包长度 服务端和客户端的值需要一致 udp_packet_size = 1500 # 指定启用部分代理 当配置了较多代理,但是只希望启用其中部分时可以通过此参数指定,默认为全部启用 # start = # 附加元数据 会传递给服务端插件,提供附加能力 # meta_xxx = # 权限验证 # 开启心跳消息鉴权 需要和服务端一致 authenticate_heartbeats = false # 开启建立工作连接的鉴权 需要和服务端一致 authenticate_new_work_conns = false # UI # 静态资源目录 AdminUI 使用的资源默认打包在二进制文件中,通过指定此参数使用自定义的静态资源 # asserts_dir = # 启动 Go HTTP pprof 用于应用调试 pprof_enable = false
- 在 CMD 中执行命令
./frpc -c ./frpc.ini
,启动客户端 - 打开
Windows IP:7500/
,内容如下所示,FRP 客户端配置成功 - 具体需要详细进行内网穿透的内容与配置,会在后文中进行详细说明
4. 客户端的 FRP 开机自启动
- 通过 VSCODE,编辑
D:\FRP\frp.bat
,内容如下:
@echo off setlocal set appName=D:\FRP\frpc.exe echo "Start %appName% ..." D:\FRP\frpc.exe -c D:\FRP\frpc.ini endlocal Pause exit
- 按
win+r
,输入gpedit.msc
,打开本地组策略编辑器 - 选择用户配置–>双击 Windows 设置–>选择脚本(登录/注销)–>双击登录–>选择添加–>选择浏览–>找到刚刚编辑的 frp.bat -->选择打开–>选择确定–>选择确定
- 此时重启 Windows 电脑,FRP 客户端即可开机自启
四、NGINX 的搭建
- NGINX 官方网站地址
- NGINX 官方安装文档地址
- 打开 PuTTY 登录服务器
- 输入
apt-get install nginx
,安装 NGINX - 输入
nginx -v
,查看 NGINX 版本信息 - 输入
systemctl status nginx
,查看服务运行状态,运行效果如下 - 浏览器访问服务器地址,会自动跳转到如下页面
- 输入
systemctl enable nginx
,使 NGINX 完成开机自启动 - 使用命令
systemctl restart nginx
,即可使 NGINX 完成重启 - 输入命令
ln -s -d /etc/nginx nginx
,将 NGINX 的配置文件链接到一个容易找到的位置(在你想要进行连接的位置执行) - 具体使用配置在后文中会有详细介绍
五、域名购买注册及备案
- 登录腾讯云服务器官网–>搜索“云解析 DNS”–>点击控制台
- 进入控制台后点击我的域名–>点击添加域名–>腾讯云官方单个域名注册文档
- 然后进行域名实名认证注册
- 然后进行域名备案
- 等待域名备案通过即可