[toc]
前言
内网穿透有很多可选的办法,但要明确的是,一切都是从需求出发的。因此先来说说需求:
- 服务器和客户机都是Windows操作系统,客户机32位,服务器64位。
- 内网穿透处于内网的计算机不能有任何软件图标或者启动界面出现;
- 可以访问内网计算机23、3389等端口;
- 可以使用将内网计算机做代理服务器;
- 内网穿透服务可以随系统启动而启动;
- 不绑定域名进行内网穿透;
明确需求以后,可以排除掉花生壳等内网穿透软件,但是由于ngrok不满足第5点需求,因而放弃使用ngrok。最终选择使用FRP
下载FRP
可以通过在git上下载源代码自行编译或者使用在git上已经编译好的release版本。
官方源码:Sources
官方最新版本下载:Release.Latest
官方中文说明文档:ReadMe.zh-cn
官方英文说明文档:ReadMe.us-en
安装FRP
FRP服务端配置
配置
极简配置
一般采用极简配置即可,若需要查看完全配置,请参阅:frps完整配置文件,该配置文件在从官方下载的Release版本中也能看到。
一般只需要配置绑定的端口即可,此处还打开了dashboard功能。
# frps.ini
[common]
bind_port = xxxxx # frp服务端端口,用以与frp客户端建立连接,不要与系统保留端口冲突,小于65535
dashboard_port = xxxxx # 控制面板的访问端口号,不要与系统保留端口冲突,小于65535
dashboard_user = username # 控制面板的访问账号
dashboard_pwd = passwd # 控制面板的访问密码
运行
在frps的同级目录中,打开CMD中运行以下命令(可能需要管理员模式运行)
frps -c frps.ini
FRP客户端配置
配置
极简配置
一般采用极简配置即可,若需要查看完全配置,请参阅:frpc完整配置文件,该配置文件在从官方下载的Release版本中也能看到。
# frpc.ini
[common]
server_addr = xxx.xxx.xxx.xxx # frp服务器地址,可以是ip地址或者域名地址
server_port = # frp服务端口,用以与frp服务端建立连接,填写服务器配置中所配置的端口号
[telnet] # 服务名称,按实际需求定义,在dashboard中可以查看
type = tcp # 协议类型
local_ip = 127.0.0.1 # 需要映射的本地ip
local_port = 23 # 需要映射的本地端口
remote_port = 11123 # 指定服务器的转发端口号,用以建立穿透
运行
在frpc的同级目录中打开cmd,运行以下命令:
frpc -c frpc.ini
自动运行
frp在每次电脑重新启动以后都需要手动运行,因此需要通过计划任务或者其他方式使frp能够在开机时自动运行。
此处采用添加到服务的方式来自动运行。
- 下载instsrv和srvany
-
将instsrv和srvany复制到32位系统的system32目录下,复制到64位系统的syswow64目录下
如果不想移动该文件,则可以将这两个文件所在的目录添加到环境变量中,以便在cmd中可以直接运行
-
在cmd中执行以下命令
instsrv [serviceName] srvany # serviceName根据需求自行定义 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[serviceName]\Parameters # 在服务serviceName中新建Parameters子项 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[serviceName]\Parameters /v Application /d [Program Address] # Program Address为要作为服务运行的程序地址 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[serviceName]\Parameters /v AppDirectory /d [Program Files Address] # Program Files Address 为要作为服务运行的程序所在文件夹路径 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\[serviceName]\Parameters /v AppParameters /d [Program Arguments] # 为要作为服务运行的程序启动所需要的参数
- 打开service.msc,找到serviceName(自建的服务名称),然后启动即可。
建立链接
-
TELNET
CMD中执行以下命令:
telnet 192.168.1.10 10023
telnet www.sample.com 10023
# 192.168.1.10是服务器地址,6023是映射到服务器的端口,www.sample.com处同理。将此处修改为自己的服务器配置
-
REMOTE DESKTOP
在Windows中打开远程桌面,输入服务器地址和端口号即可连接,例如
192.168.1.10:3387
www.sample.com:3387
-
代理服务
由于FRP不支持GRE协议,因此,PPTP、L2TP等服务是无法通过通过与服务器之间建立端口映射的方式穿透出去,但由于FRP内建了http_proxy和socks5的代理映射,因而可以忽略部分不支持GRE所带来的影响。
- HTTP_PROXY
internet设置中进行配置
- SOCKS5
同HTTP_PROXY