内网穿透&反向代理(重剑无锋)

介绍

由于前面内网穿透&反向代理(奇技淫巧)有一些局限性,所以继续研究内网穿透和反向代理的原理,把整个穿透和代理的过程算是捋清楚了。进而找到了最标准、稳定的解决方案。
这里采用frp+nginx来实现功能。

安装nginx

参考:
http://www.cnblogs.com/2bjiujiu/p/8117166.html
https://www.2cto.com/kf/201801/711202.html

  1. 安装nginx的依赖
    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
  2. 获取压缩包
    wget -q http://nginx.org/download/nginx-1.16.0.tar.gz
  3. 解压
    tar -zxvf nginx-1.16.0.tar.gz
  4. 配置和安装
cd nginx-1.16.0
./configure --prefix=/opt/nginx1.16.0
make
make install
ln  -sf  /opt/nginx1.16.0  /usr/local/nginx
echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile && source /etc/profile
  1. 测试和启动
nginx -t # 显示successful
nginx # 启动
netstat -lntup | grep 80  # 检查
# 打开浏览器,访问 ip:80

nginx反向代理

参考:https://segmentfault.com/a/1190000016556569
nginx的反向代理是用一个端口监听另一个端口,比如这里已经开了一个80的默认nginx服务,我想让外面访问43005就相当于访问80端口。即43005代理了80。
这是个基本功能,直接修改 nginx/conf/nginx.conf就好:

# 在http下加上下面这些
# listen表示外网访问的端口
# server_name是本地被访问的ip
# proxy_pass是被代理的ip和端口
    server {
        listen       43005;
        server_name  localhost;
        location / {
            proxy_pass  http://localhost:80;
        }
    }

配置完后先测试 nginx -t
然后平滑重启 nginx -s reload
浏览器访问106.x.x.x:43005就会访问到80的服务

  • 如果端口被占用
    使用ps -aux | grep 8888或者netstat –apn查看是哪个进程占用了端口。
    然后用kill pid把进程杀了。
  • 如果要停止 pkill -9 nginx
    参考:https://www.cnblogs.com/codingcloud/p/5095066.html

使用frp实现ssh穿透

参考:
https://github.com/fatedier/frp#access-your-computer-in-lan-by-ssh

# 下包 可以去https://github.com/fatedier/frp/releases下载最新版
wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.27.0_linux_amd64.tar.gz

  • 修改服务端 frps.ini
[common]
bind_port = 7000 # 监听的端口B

开启服务端./frps -c ./frps.ini

  • 修改客户端 frpc.ini
[common]
server_addr = x.x.x.x # 填写公网的server ip
server_port = 7000 #服务端监听的端口B

[ssh]
type = tcp
local_ip = 127.0.0.1 
local_port = 22 # 本地被监听的端口
remote_port = 43006 # 公网对外的访问端口

开启客户端./frpc -c ./frpc.ini

使用frp实现service穿透

  • 修改frps.ini# frps.ini
[common]
bind_port = 7000
vhost_http_port = 43005

Start服务端./frps -c ./frps.ini

  • 修改frpc.ini and . The local_port is the port of your web service:
[common]
server_addr = x.x.x.x # set remote frps server's IP as x.x.x.x
server_port = 7000 

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com # 没有域名就用上面的server addr

开启frpc./frpc -c ./frpc.ini

  • 浏览器访问ip:43005.

其他配置可以参考:https://www.xyzbeta.com/460

frp实现ftp

修改frpc.ini

[test_static_file]
type = tcp
remote_port = 43762
plugin = static_file
plugin_local_path = /root/test # 设置路径
plugin_strip_prefix = static  #设置域名
plugin_http_user = user
plugin_http_passwd = pwd

你可能感兴趣的:(内网穿透&反向代理(重剑无锋))