通过域名从外网进行访问是一个Web服务器的基本功能之一。常规的域名访问通过标准的DNS(Domain Name System)域名解析服务器即可完成,通过顶级域名解析到服务器对应的公网IP地址。然而,基于树莓派的轻量级Web服务器一般只存放在家中,带来的问题就是复杂的局域网构架环境。
解决方案一般有两种。
第一种是通过动态域名解析服务,即DDNS(Dynamic Domain Name System),结合路由器端口映射功能,将域名引导至家中局域网环境对应的Web服务器。这一方案的部署有两个必要条件:A.家中的网络出口分配到公网IP;B.第三方DDNS需要开放API,例如DNSPod。
第二种就是搭建内网穿透服务,先将域名解析到一台处于公网环境的服务器中,同时在该服务器内运行内网穿透服务器端,在树莓派中运行客户端,并且客户端通过密钥访问服务端的IP,相当于通过一台公网的服务器作反向代理,将域名最终解析至家中的网络。目前而言,国内的花生壳已经可以提供这一功能,但收费较贵并且有着各种限制,有兴趣可以参考花生壳官网的教程。
本篇讲述的是基于第二种方案下的,自建内网穿透实现外网访问树莓派Web服务器。
部署frp服务端
1.DNS服务中,添加A记录:pi.dushaoqing.com到公网IP地址。
2.公网的主机内添加域名pi.dushaoqing.com
3.执行
sudo vi /usr/local/nginx/conf/vhost/pi.dushaoqing.com.conf
内容更换为:
server { listen 80; server_name pi.dushaoqing.com; location / { proxy_pass http://127.0.0.1:8080; #Proxy Settings proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
4.安装frp服务端
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh chmod 700 ./install-frps.sh sudo ./install-frps.sh install
5.设置frp服务端,http/https部分确保避开80和443,避免于本身的Web服务监听端口冲突。
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):8080 frps vhost_http_port: 8080 Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):4433 frps vhost_https_port: 4433
6.完成后记录下状态
Congratulations, frps install completed! ============================================== You Server IP : 公网IP Bind port : 5443 KCP support : true vhost http port : 8080 vhost https port : 4433 Dashboard port : frps控制台端口 token : token密码 tcp_mux : true Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== frps Dashboard : frps控制台地址:端口 Dashboard user : 用户名 Dashboard password : 密码 ==============================================
默认安装的目录是:/usr/local/frps/后期需要更改配置的可以进入这个目录修改frps.ini文件。可通过
sudo vi /usr/local/frps/frps.ini
进行修改
附常规管理命令:
更新frps:./install-frps.sh update 卸载frps:./install-frps.sh uninstall
管理:
/etc/init.d/frps start /etc/init.d/frps stop /etc/init.d/frps restart /etc/init.d/frps status /etc/init.d/frps config /etc/init.d/frps version
7.检查frp服务端运行情况,访问frps控制台地址:端口
部署frp客户端
1.进入frp官网找对应版本的地址,与服务端版本一致。
2.安装并配置frp客户端
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_arm.tar.gz tar -zxvf frp_0.20.0_linux_arm.tar.gz cd frp_0.20.0_linux_arm sudo vi frpc.ini
配置如下:
[common] server_addr = 公网IP server_port = 5443 token = token密码 [httpweb] type = http local_ip = 127.0.0.1 local_port = 80 custom_domains = pi.dushaoqing.com
3.后台开启客户端
sudo ./frpc -c ./frpc.ini &
这里显示[httpweb] start proxy success表示连接正常
若需要关闭,则
sudo killall frpc
4.此时访问frps控制台可以看到http服务运行。
5.访问pi.dushaoqing.com:8080,看到树莓派中的Web服务器根目录即表示内网穿透成功。
Leave a Reply