在一个IP紧缺的时代,连电信也不分配固定IP给到你用,一条专网专用线路贵的不行,那么作为软件开发人员常常要使用到外网,比如和微信调试程序,给到不在同一网段的朋友一起调试程序等,大家耳熟能详的内网穿透就是花生壳,但是花生壳的灵活性比较差,笔者就想有没有什么更好的办法自己搭建一个内网穿透服务器呢?那么今天就给大家推荐一款自建内网穿透.
附上:
喵了个咪的博客:w-blog.cn
frp-Github地址:https://github.com/fatedier/frp
frp-中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
1.安装
注意: frp 仍然处于前期开发阶段,未经充分测试与验证,不推荐用于生产环境。 目前的交互协议可能随时改变,不保证向后兼容,升级新版本时需要注意公告说明同时升级服务端和客户端。
Frp架构如下:
这里准备一台本地内网IP为192.168.1.100的机器和一台阿里云有外网IP出口的服务器,Frp在这两台机器上都要安装
笔者这里使用的是Centos 64位版本需要其他版本可以去此处下载:https://github.com/fatedier/frp/releases
mkdir -p /app/install
cd /app/install
wget https://github.com/fatedier/frp/releases/download/v0.16.0/frp_0.16.0_linux_amd64.tar.gz
tar -zxvf frp_0.16.0_linux_amd64.tar.gz
mv frp_0.16.0_linux_amd64 /usr/local/frp
解压完之后会有两个可执行程序 frps 和 frpc 将 frps 及 frps.ini 放到具有公网 IP 的机器上。 将 frpc 及 frpc.ini 放到处于内网环境的机器上。
2.使用
这里配置一个在外网开放30080端口,通过这个端口可以访问到内网机器的22端口
修改配置文件 frps.ini
# frpc.ini
[common]
# 外网IP地址
server_addr = x.x.x.x
# 端口用于frpc进行连接
server_port = 7000
# 打开密码验证
privilege_mode = true
# 配置密码
privilege_token = frp
[ssh_22]
type = tcp
// 连接密码
auth_token = frp666
// 对应本地的IP
bind_addr = 192.168.1.100
// 服务端开启的端口号
listen_port = 30080
修改配置文件 frpc.ini
[common]
# 服务端的IP 和 端口
server_addr = x.x.x.x
server_port = 7000
# 对应的两个密码
privilege_token = frp
auth_token = frp666
[ssh_30080]
type = tcp
# 对应的本地的IP和端口
local_ip = 192.168.1.100
local_port = 22
在分别两台机器上运行如下命令
# 有外网的机器运行
/usr/local/frp/frps -c /usr/local/frp/frps.ini
# 在内网的机器运行
/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
这样就可以访问了到本地的22端口在任何地方都可以访问自己内网的服务器了
3 总结
Frp不止支持TCP模式还支持UDP,DNS,WEB,SOCKET5等,可以说功能非常强大,有了Frp基本只需要一台有外网的服务器就可以做到内网服务器和外网服务器一样访问,更多的使用方式大家可以参考官网文档,最后多谢大家的支持,希望本篇文章能够帮助大家解决问题.
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!