树莓派raspberryPI使用goproxy实现内网穿透。
对于树莓派,需要使用轻量级的工具实现功能,毕竟资源太有限,省着点儿用得。
内网穿透既可以用frp,也可以goproxy.下面主要讲的是使用goproxy内网穿透。
初衷 有这样的情况,树莓派启动后网络环境大部分可能是在一个路由器下的局域网(内网),但是我们需要在其他网络(异地)环境访问树莓派资源(22端口),这时候goproxy站出来了。
准备:公网服务器IP(例如47.93.21.15)、树莓派(我用的3b)、另一个联网电脑(本地)、不同版本的goproxy
原理:通过公网服务器端口(例如28080)映射到树莓派的端口(例如22),本地主机通过一个端口号(例如2222)访问公网服务器28080(即树莓派的22端口),这是一个映射代理关系。
首先,要明确一点儿就是服务器、pi、本地主机的类型,下载对应的goproxy,本人使用最新版本为V7.4。
查看服务器多少位:getconf LONG_BIT 输出32或64,一般pi应该是32位;
然后pi中查看arm版本:uname -a 结果如下图所示,4.14.50-v7,即下载proxy-linux-arm-v7.tar.gz版本。服务器下载对应版本就好
另一点就是各个系统使用root用户安装部署goproxy。
下载对应goproxy版本软件到/root/proxy/目录(root用户);
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
以上四行是下载install.sh安装文件,并赋执行权限,这里需要提醒的是,install.sh文件中需要修改一下下载的goproxy版本号;
安装之后会解析出几个文件,然后执行./proxy keygen -C proxy 命令生成自签名的证书和key文件,生成了文件proxy.crt和key文件proxy.key;
然后记着这里生成的两个文件,需要放到pi和本地goproxy中去;
公网服务器需要开放两个端口号,这里使用28080,33080,开放方式:
iptables -I INPUT -p tcp --dport 28080 -j ACCEPT
iptables -I INPUT -p tcp --dport 33080 -j ACCEPT
1. 执行 ./proxy bridge -p ":33080" -C proxy.crt -K proxy.key
2. 执行 ./proxy server -r ":28080@:22" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key
将该服务器的28080端口映射与该服务器使用相同proxy.crt proxy.key的pi客户端的22端口;效果图如下:
使用root用户;
在/root/proxy/路径下,将对应的goproxy版本下载到/root/proxy;
cd /root/proxy/
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
chmod +x install.sh
./install.sh
这里同样需要修改install.sh中对应goproxy版本号;
将公网服务器安装goproxy生成的两个文件proxy.crt和proxy.key复制一份到pi的/root/proxy目录下;
启动方式:
./proxy client -P "公网IP地址:33080" -C proxy.crt -K proxy.key
启动之后,服务器端也会输出连接成功的日志,例如"2019/05/14 15:30:15 client connection winter-2 connected"
下载对应的版本,例如我使用的64位windows电脑,下载了goproxy,解压缩;
上图是解压缩之后的文件列表,然后将公网服务器生成的两个文件proxy.crt和proxy.key复制一份到本地主机的.cert文件夹中去;
然后在以上目录空白处 按住Shift + 右击 在弹出的对话框中选择"在此处打开shell窗口",然后输入命令:
./proxy server -r ":2218@:22" -P "公网服务器IP:28080" -C ./.cert/proxy.crt -K ./.cert/proxy.key
这样,本机就使用本地2218端口与公网服务器端口28080建立连接,然后使用xshell等终端工具,即可连接pi的22端口咯;
上图是我本地的xshell连接配置,这样本地配置也结束了。
goproxy可以配置log文件、后台运行、启动守护进程等功能,传送门走起。