搭建内网穿透实现访问windows远程桌面
开源的内网穿透软件有很多,如 frp和nps
frp github地址:/fatedier/frpnps github地址:/ehang-io/nps
这里使用frp进行搭建。
实验环境
服务端:Ubuntu 20.04 LTS
客户端:windows 7 32位
版本下载:/fatedier/frp/releases
客户端程序和服务端程序都在一个压缩包里,根据环境下载即可。
我这边下载的时linux_amd64
版本和windows_386
1. 服务端配置
下载解压并修改配置文件
wget /fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gztar xvf frp_0.36.2_linux_amd64.tar.gz cd frp_0.36.2_linux_amd64/vim frps.ini[common]bind_port = 9988 #指定服务器监听端口,frpc客户端连接的端口
配置frps开机自动启动,官方已经给提供了systemd托管的相关service配置,将其copy到指定目录即可。
root@maple:~/frp_0.36.2_linux_amd64# lltotal 22636drwxrwxr-x 3 ubuntu ubuntu4096 May 7 22:43 ./drwx------ 10 root root 4096 May 7 22:43 ../-rwxrwxr-x 1 ubuntu ubuntu 9953280 Mar 22 15:00 frpc*-rw-rw-r-- 1 ubuntu ubuntu9433 Mar 22 15:02 frpc_full.ini-rw-rw-r-- 1 ubuntu ubuntu126 Mar 22 15:02 frpc.ini-rwxrwxr-x 1 ubuntu ubuntu 13172736 Mar 22 15:00 frps*-rw-rw-r-- 1 ubuntu ubuntu5051 Mar 22 15:02 frps_full.ini-rw-rw-r-- 1 ubuntu ubuntu 26 May 7 19:53 frps.ini-rw-rw-r-- 1 ubuntu ubuntu 11358 Mar 22 15:02 LICENSEdrwxrwxr-x 2 ubuntu ubuntu4096 May 7 22:42 systemd/root@maple:~/frp_0.36.2_linux_amd64#cp systemd/frps* /lib/systemd/system/root@maple:~/frp_0.36.2_linux_amd64#cp frps /usr/bin/root@maple:~/frp_0.36.2_linux_amd64#mkdir /etc/frproot@maple:~/frp_0.36.2_linux_amd64#cp frps.ini /etc/frp/root@maple:~/frp_0.36.2_linux_amd64/systemd# systemctl enable --now frpsroot@maple:~/frp_0.36.2_linux_amd64/systemd# systemctl status frps● frps.service - Frp Server ServiceLoaded: loaded (/lib/systemd/system/frps.service; enabled; vendor preset: enabled)Active: active (running) since Fri -05-07 20:39:55 CST; 2h 9min agoMain PID: 172448 (frps)Tasks: 3 (limit: 842)Memory: 5.8MCGroup: /system.slice/frps.service└─172448 /usr/bin/frps -c /etc/frp/frps.iniMay 07 21:27:55 maple frps[172448]: /05/07 21:27:55 [I] [service.go:449] [ca19905087073602] client login info: ip [114.246.99.47:15999] version [0.36.2] hostname [] os [windows] arc>May 07 21:27:55 maple frps[172448]: /05/07 21:27:55 [I] [tcp.go:63] [ca19905087073602] [mstsc] tcp proxy listen port [6000]May 07 21:27:55 maple frps[172448]: /05/07 21:27:55 [I] [control.go:446] [ca19905087073602] new proxy [mstsc] successMay 07 21:28:20 maple frps[172448]: /05/07 21:28:20 [I] [proxy.go:162] [ca19905087073602] [mstsc] get a user connection [114.246.99.47:16013]May 07 21:28:21 maple frps[172448]: /05/07 21:28:21 [I] [proxy.go:162] [ca19905087073602] [mstsc] get a user connection [114.246.99.47:16016]May 07 21:28:21 maple frps[172448]: /05/07 21:28:21 [I] [proxy.go:162] [ca19905087073602] [mstsc] get a user connection [114.246.99.47:16019]May 07 22:04:06 maple frps[172448]: /05/07 22:04:06 [I] [control.go:309] [ca19905087073602] control writer is closingMay 07 22:04:06 maple frps[172448]: /05/07 22:04:06 [I] [proxy.go:87] [ca19905087073602] [mstsc] proxy closingMay 07 22:04:06 maple frps[172448]: /05/07 22:04:06 [I] [proxy.go:159] [ca19905087073602] [mstsc] listener is closedMay 07 22:04:06 maple frps[172448]: /05/07 22:04:06 [I] [control.go:384] [ca19905087073602] client exit success#端口也已经监听root@maple:~/frp_0.36.2_linux_amd64/systemd# ss -tlnpState Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 4096127.0.0.53%lo:530.0.0.0:*users:(("systemd-resolve",pid=541,fd=13)) LISTEN 0 128 0.0.0.0:220.0.0.0:*users:(("sshd",pid=638,fd=3)) LISTEN 0 128[::]:22 [::]:*users:(("sshd",pid=638,fd=4)) LISTEN 0 4096 *:9988 *:*users:(("frps",pid=172448,fd=3))
云主机厂商提供的防火墙记得放行指定的端口。
2. 客户端配置
将下载的windows 386的包复制到 win7系统,解压,并修改frpc.ini配置文件。
[common]server_addr = XXX.XXX.XXX.XXX #云主机的公网IPserver_port = 9988tls_enable = true[mstsc]type = tcplocal_ip = 127.0.0.1local_port = 3389 #本地3389端口就是远程桌面RDP的默认端口remote_port = 6000 #指定一个让服务端监听的远程端口,外网访问云主机公网IP+这个端口即可访问与之关联的本地3389端口use_encryption = trueuse_compression = true
注意远程桌面的服务得开。
在当前目录下输入cmd打开命令行窗口并自动进入到该目录的环境。
启动客户端
可以看到服务端已经监听了客户端指定的远程端口
测试
测试成功
但是这样运行客户端会随着窗口的关闭而使客户端软件关闭。连接就断开了。
通过任务计划配置客户端开机启动并后台执行。
配置启动时延迟一段时间执行,不然会因为网卡没有获取到IP地址而执行失败。
程序和参数 组合起来就是启动客户端的命令
E:\frp_0.36.2_windows_386\frpc.exe -c E:\frp_0.36.2_windows_386\frpc.ini
下一步完成,重启测试即可。