内网穿透环境搭建
2019-08-07 本文已影响142人
松松土_0b13
虽然现在的内网穿透工具,如:花生壳和ngrok,都做的不错,而且还免费,但是了,每次启动域名都不一样,访问速度慢,有些时候我们必须用ip访问,用时候要用到tcp转发,所以了,我们有必要自己搭建内网穿透的环境。
环境准备
- 一台公网ip的服务,需要安装nginx
- 一台局域网服务器,需要支持ssh,要进一步转发到其他物理机的话,需要nginx或者做端口转发
公网服务器
- 开放7689端口,做tunnel通道,给nginx开放80端口
- nginx版本要在1.9以上,因为要用到stream模块,做tcp转发的
./configure --with-stream
tcp转发配置
stream {
upstream backend {
server 127.0.0.1:7689;
}
server {
listen 80;
proxy_connect_timeout 8s;
proxy_timeout 24h;
proxy_pass backend;
}
}
http转发配置
http {
upstream tunnel {
server 127.0.0.1:7689;
}
server {
listen 80;
server_name wechat.akpay.top;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://tunnel;
}
}
}
局域网机器
局域网机器可以说linux,window,mac,这里以mac为例
- 局域网用ssh命令连接公网服务器
ssh -o ServerAliveInterval=30 -vnNT -R 7689:localhost:8080 root@公网服务器ip -p 50004
- ServerAliveInterval为心跳包时间,用本地的8080端口连接公网服务器的7689端口,-p 是设置跳板机的端口,没有可以不设置
- ip或者域名 => 公网服务器的80端口 => 公网7689 => 局域网8080
进一步扩展
有时候,要测试的机器可能是手机或者其它物理机,需要做进一步转发,这里可以用nginx,如果局域网为linux或者mac,
可以利用其自带的跳板机功能,请参考这篇文章mac设置端口转发