Frp 及 Coturn 内网穿透
Frp 内网穿透 服务器 搭建
Linux 服务器端
# getconf LONG_BIT \\ 查询 Linux 系统位数
# wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
# tar zxvf frp_0.37.0_linux_amd64.tar.gz -C /usr/local
# cd /usr/local
# mv frp_0.37.0_linux_amd64 frp_0.37
# cd frp_0.34
# vim frps.ini \\ 服务器端主配置文件 替换即可 端口可自定义 没有冲突即可
[common]
bind_port = 7000
host_http_port = 8090 \\ 此为映射内网的http端口 可使用nginx反向代理到127.0.0.1:8090进行访问
#vhost_https_port = 443
subdomain_host = frp.syk.my \\ 绑定个域名 可以在解析下级域名使用 比较繁琐 这条没什么大用 可注释可直接解析域名
token = xxx \\ FRP 身份验证
dashboard_addr = 0.0.0.0 \\ 服务器端 管理界面
dashboard_port = 7500 \\ FRPS 服务端 仪表盘的登陆端口 使用 http://IP:7500 访问
dashboard_user = admin \\ 登陆用户名 密码
dashboard_pwd = admin123
log_level = info \\ 设置日志显示级别{debug, info, warn, error)
log_max_days = 999 \\ 设置日志最大天数
# nohup ./frps -c frps.ini & \\ 启动命令
# ps -ef | grep frps
# ss -tnl \\ 7000端口被监听
# vim /etc/systemd/system/frps.service \\ 添加 systemd 管理
[Unit]
Description=frps
After=network.target
[Service]
ExecStart=/usr/local/frp_0.37/frps -c /usr/local/frp_0.37/frps.ini
[Install]
WantedBy=multi-user.target
# systemctl restart frps
# ss -tnl
http://47.91.219.64:7500 \\ 访问
Linux 客户端
# getconf LONG_BIT \\ 查询 Linux 系统位数
# wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
# tar zxf frp_0.37.0_linux_amd64.tar.gz -C /usr/local/
# cd /usr/local
# mv frp_0.37.0_linux_amd64 frp_0.37
# cd frp_0.34
# vim frpc.ini \\ 客户端 配置文件
[common]
server_addr = 47.91.219.64 \\ 服务器端的ip或域名
server_port = 7000 \\ 服务器端口7000
token = xxx \\ FRP 身份验证 与服务器端对上即可
# frpc.ini 管理界面 127.0.0.1 地址为仅限本地,0.0.0.0为不限。
admin_addr = 0.0.0.0 \\ 客户端管理界面 192.168.10.11:7400 访问 好像不管用 但无所有可以映射端口
admin_port = 7400
admin_user = admin
admin_pwd = admin123
#
# ------------------- 以下为内网端口穿透应用 写进去需要的即可-------------------
#
# 映射内网ssh 22端口 到 5522端口
# 使用 #root@frp.nasge.com -p 5522
# 使用 #ssh 47.91.219.64 5522
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22 \\ ssh 实际端口
remote_port = 5522 \\ 映射出的 ssh 端口 使用 ssh 47.91.219.64:5522 来连接
[web_47.91.219.64]
type = http
local_ip = 127.0.0.1
local_port = 80 \\ 本地的http 端口
custom_domains = 47.91.219.64 \\ 绑定完整域名或使用ip也可以 域名解析到此使用47.91.219.64:8090访问亦可使用反代
#subdomain = abc \\ 如果在服务器中的 subdomain_host 绑定了域名 这里可以使用前缀解析 使用 abc.frp.syk.my 访问
[web_www.syk.my] \\ 有多个 web 可以添加多个
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = www.syk.my
[custom] \\ 自定义 tcp 端口 名字而已 随便起
type = tcp
local_ip = 127.0.0.1
local_port = 80 \\ 把本地端口映射 到 服务器的8021端口
remote_port = 8021
# nohup ./frpc -c frpc.ini & \\ 启动命令
# ps -ef | grep frpc
# ss -tnl \\ 7400端口被监听
# vim /etc/systemd/system/frpc.service \\ 添加 systemd 管理
[Unit]
Description=frpc
After=network.target
[Service]
ExecStart=/usr/local/frp_0.37/frpc -c /usr/local/frp_0.37/frpc.ini
[Install]
WantedBy=multi-user.target
# systemctl restart frpc
# ss -tnl
ssh 47.91.219.64 5522 \\ 可以连接到内网
http://47.91.219.64:7500 \\ 访问服务器端的管理界面
http://47.91.219.64:8090 \\ 访问内网的 http 网页 web
Windows 客户端 \\ 客户端版本要与服务器版本相同
https://github.com/fatedier/frp/releases \\ 下载 frp_0.37.0_windows_amd64.zip 即可
解压 修改客户端配置文件 frpc.ini \\ 放到此目录下即可 c:\frps_0.37
[common]
server_addr = 47.91.219.64
server_port = 7000
token = xxx
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389
custom_domains = 47.91.219.64
在目录中打开 PowerShell --> ./frpc -c ./frpc.ini \\ 临时测试 启动
frpc.vbs \\ 创建 开机启动文件
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c c:\frps_0.37\frps.exe -c c:\frps_0.37\frps.ini",vbhide
启动文件保存在此目录下即可 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
注:
https://github.com/fatedier/frp/releases \\ 开源 git 地址
https://github.com/fatedier/frp/blob/master/README_zh.md \\ 官方文档
https://gofrp.org/docs/ \\ 官方文档
frp_0.37.0_linux_amd64.tar.gz \\ linux 版本
frp_0.37.0_windows_amd64.zip \\ windows 版本
wol 网卡唤醒工具 安装 \\ 未测试
# wget http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/w/wol-0.7.1-23.el8.x86_64.rpm
# rpm -ivh wol-0.7.1-23.el8.x86_64.rpm
# wol -V
rpm包下载地址 http://rpmfind.net/linux/rpm2html/search.php?query=wol(x86-64)
windows 远程多开程序 RDPWrap-v1.6.2.zip \\ 未测试
Coturn 穿透服务器搭建
# yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel mysql-devel
# wget https://coturn.net/turnserver/v4.5.0.8/turnserver-4.5.0.8.tar.gz
# wget https://coturn.net/turnserver/v4.5.0.8/turnserver-4.5.0.8.tar.gz
# tar -zxvf turnserver-4.5.0.8.tar.gz
# cd turnserver-4.5.0.8/
# ./configure
# make && make install
# openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
# cd /usr/local/etc/
# cp turnserver.conf.default turnserver.conf
# vim turnserver.conf \\ 追加即可
listening-device=eth0 \\ 网卡名字
listening-port=3478
tls-listening-port=5349
listening-ip=内网ip
relay-ip=内网ip
external-ip=公网ip
min-port=49152
max-port=65535
lt-cred-mech
realm=admin
user=user:123456
cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem
no-cli
# turnserver -a -o -c /usr/local/etc/turnserver.conf \\ 启动
# ss -tnl \\ 3478 5349 被监听 防火墙放行tcp及udp 3478即可
http://192.168.10.12:3478 \\ 有如下页面 即启动成功
TURN Server
use https connection for the admin session
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ \\ 检测网站
STUN or TURN URI: stun:103.113.61.109:3478
TURN username: user
TURN password: 123456
--> Add Server --> Gather candidates --> 有返回 本机ip即通过