企业手机网站建设策划,用php做的网站软件,部门网站建设个人总结,access 可以做网站不一、前言
由于一些开发及使用需求#xff0c;需要将内网机器端口映射到公网#xff0c;达到公网访问内网环境的目的 本文主要介绍几种常用的内网穿透方案
ssh远程端口转发 部署简单#xff0c;无需额外安装软件包 frp反向代理 功能配置丰富#xff0c;部署相对复杂#…一、前言
由于一些开发及使用需求需要将内网机器端口映射到公网达到公网访问内网环境的目的 本文主要介绍几种常用的内网穿透方案
ssh远程端口转发 部署简单无需额外安装软件包 frp反向代理 功能配置丰富部署相对复杂需要额外安装软件包
二、ssh远程端口转发
1、说明
整体流程示意如下内网机器通过ssh隧道与公网机器连接在一起当用户访问公网机器指定端口时公网机器把数据通过管道传输到内网机器从而实现公网访问内网环境的目的 示例在内网机器上建立ssh连接将公网机器8080端口绑定到内网机器80端口所有发送给公网机器8080端口的数据都会通过ssh隧道转发给内网机器80端口进行最终处理
2、配置
2.1、公网机器配置
配置sshd开启GatewayPorts配置允许端口转发
sed -i s|#GatewayPorts no|GatewayPorts yes| /etc/ssh/sshd_config
systemctl restart sshd关闭防火墙或者开放监听端口访问
2.2、内网机器配置
内网机器执行命令配置ssh端口转发ssh -NTf -R {remote-ip}:{remote-port}:{local-ip}:{local-port} root{remote-ip} -p {remote-ssh-port}
-N表示只连接远程主机不打开远程shell-T表示不为这个连接分配TTY-f表示连接成功后转入后台运行-R表示将端口绑定到远程服务器反向代理-p默认为22端口当远程服务器ssh端口非22端口时需要单独指定
内网机器
[rootnode253 ~]# ssh -NTf -R 8080:192.168.122.253:80 root107.172.217.97 -p 22
[rootnode253 ~]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1143 root 7u IPv4 28235 0t0 TCP *:http (LISTEN)
[rootnode253 ~]# curl 127.0.0.1:80
!DOCTYPE htmlhtmlheadmeta charsetutf-8meta http-equivX-UA-Compatible contentIEedge,chrome1meta namerenderer contentwebkitmeta nameviewport contentwidthdevice-width,initial-scale1,maximum-scale1,user-scalablenotitle/titlelink relshortcut icon href./favicon.icolink href./statics/css/app.46205092776a9bbb475848bede343ea8.css relstylesheet/headbodydiv idapp/divscript typetext/javascript src./statics/js/manifest.b09c107ad7fca7006ebf.js/scriptscript typetext/javascript src./statics/js/vendor.52b14d12c6e40d435cf2.js/scriptscript typetext/javascript src./statics/js/app.9c4b7074a0a0c7993553.js/script/bodyscript/script/html公网机器
[rootnode78 ~]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 5070 root 8u IPv4 253167552 0t0 TCP *:multiling-http (LISTEN)
[rootnode78 ~]# curl 107.172.217.97:8080
!DOCTYPE htmlhtmlheadmeta charsetutf-8meta http-equivX-UA-Compatible contentIEedge,chrome1meta namerenderer contentwebkitmeta nameviewport contentwidthdevice-width,initial-scale1,maximum-scale1,user-scalablenotitle/titlelink relshortcut icon href./favicon.icolink href./statics/css/app.46205092776a9bbb475848bede343ea8.css relstylesheet/headbodydiv idapp/divscript typetext/javascript src./statics/js/manifest.b09c107ad7fca7006ebf.js/scriptscript typetext/javascript src./statics/js/vendor.52b14d12c6e40d435cf2.js/scriptscript typetext/javascript src./statics/js/app.9c4b7074a0a0c7993553.js/script/bodyscript/script/html注内网机器网络不稳定时ssh连接可能会被断开需要再次发起ssh连接操作。如网络恶劣可改用autossh进行连接当ssh连接中断时自动发起重连
软件安装
sudo yum install wget gcc make
wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
tar -xf autossh-1.4e.tgz
cd autossh-1.4e
./configure
make
sudo make install三、frp反向代理
1、说明 参考官方文档gofrp.org 软件包github地址fatedier/frp frp 是一个专注于内网穿透的高性能的反向代理应用支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
节点类型节点IP地址角色公网机器66.66.67.227frps内网机器107.172.217.97frpc
2、部署配置 需要将内网机器7480端口映射到公网机器8080端口提供访问 2.1、frps部署
公网机器执行以下操作部署frps
[rootnode97 ~]# wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
[rootnode97 ~]# tar -zxvf frp_0.38.0_linux_amd64.tar.gz
[rootnode97 ~]# cd frp_0.38.0_linux_amd64
[rootnode97 frp_0.38.0_linux_amd64]# cat frps.ini
[common]
bind_port 7000
[rootnode97 frp_0.38.0_linux_amd64]# ./frps -c frps.ini注如需长时间运行可搭配screen 一起使用
2.2、frpc部署
内网机器执行以下操作部署frpc
[rootnode227 ~]# wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
[rootnode227 ~]# tar -zxvf frp_0.38.0_linux_amd64.tar.gz
[rootnode227 ~]# cd frp_0.38.0_linux_amd64
[rootnode227 frp_0.38.0_linux_amd64]# cat frpc.ini
[common]
server_addr 107.172.217.95
server_port 7000[radosgw]
type tcp
local_ip 66.66.67.227
local_port 7480
remote_port 8080
[rootnode227 frp_0.38.0_linux_amd64]# ./frpc -c frpc.ini server_addrfrps节点IP地址server_portfrps节点通信端口默认为7000type代理类型如tcp、udp、http、https等local_ipfrpc节点IP地址local_portfrpc节点服务端口remote_portfrps节点监听端口当frps节点remote_port 被访问时相关流量会被转到到frpc节点local_ip对应端口local_port