内网穿透常见方式推荐


1.可以使用nginx

1.1首先用ssh打开公网服务器和内网服务器的连接通道

ssh -vnNT -R 服务器端口:localhost:本地端口 服务器用户名@服务器 IP 地址
ssh -vnNT -R 7689:localhost:8000 [email protected]
# 7689指的是公网服务器的端口,localhost:8000是内网服务器的ip端口
# root是公网服务器的用户,47.45.14.12是公网服务器的ip

1.2 nginx转发服务

在公网服务器的nginx配置文件nginx.conf添加一下内容:

upstream tunnel {
    
    
  server 127.0.0.1:7689;
}

server {
    
    
  listen 80;
  server_name x.xx.xxx;
  
  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;
  }
}

理解:用nginx创建代理,如果有人访问http://x.xx.xxx,nginx会把请求转发给tunnel,这个tunnel指的就是这台公网服务器,端口号是7689,后面会用这个跟内网来进行通信

2.中微子内网穿透

相较于nginx而言.他由民间大佬提供了web可视化操作.以及数据库端口映射,流量监控信息.
教程连接
快速上手 | 中微子代理

2.1 服务端docker部署

指定自己的mysql数据库

● 在服务器上创建目录:/root/neutrino-proxy/config
● 在该目录下创建app.yml文本文件,并配置如下内容:

application:
  name: neutrino-proxy-server

neutrino:
  proxy:
    protocol:
      max-frame-length: 2097152
      length-field-offset: 0
      length-field-length: 4
      initial-bytes-to-strip: 0
      length-adjustment: 0
      read-idle-time: 360
      write-idle-time: 300
      all-idle-time-seconds: 3600
    tunnel:
      boss-thread-count: 2
      work-thread-count: 10
      # 服务端端口,用于保持与客户端的连接,非SSL
      port: ${
    
    OPEN_PORT:9000}
      # 服务端端口,用于保持与客户端的连接,SSL,需要jks证书文件,若不需要ssl支持,可不配置
      ssl-port: ${
    
    SSL_PORT:9002}
      # 证书配置,用于隧道通信SSL加密
      key-store-password: ${
    
    STORE_PASS:123456}
      key-manager-password: ${
    
    MGR_PASS:123456}
      jks-path: ${
    
    JKS_PATH:classpath:/test.jks}
    server:
      boss-thread-count: 5
      work-thread-count: 20
      # HTTP代理端口,默认80,也可以用其他端口,走nginx转发
      http-proxy-port: ${
    
    HTTP_PROXY_PORT:80}
      # HTTPS代理端口,默认443,也可以用其他端口,走nginx转发
      https-proxy-port: ${
    
    HTTPS_PROXY_PORT:443}
      # 如果不配置,则不支持域名映射
      domain-name: ${
    
    DOMAIN_NAME:}
      # 证书配置,用于支持HTTPS
      key-store-password: ${
    
    HTTPS_STORE_PASS:}
      jks-path: ${
    
    HTTPS_JKS_PATH:}

  data:
    db:
      type: mysql
      # 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化
      url: jdbc:mysql://xxxx:3306/neutrino-proxy?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false
      driver-class: com.mysql.jdbc.Driver # 这行配置无意义,代码中已开启mysql版本检测,自动切换
      # 数据库帐号
      username: xxx
      # 数据库密码
      password: xxx

执行如下命令

docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 \
-v /root/neutrino-proxy/config:/root/neutrino-proxy/config \
-d --restart=always --name neutrino \
registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest

2.2服务端使用jar包自行部署

● 首先确保服务器上已安装java8运行环境
● 打开发行版页面(opens new window),下载最新的release包:neutrino-proxy-server.jar、neutrino-proxy-admin.zip
● 在服务器上新建部署目录:/work/projects/neutrino-proxy-server
● 将neutrino-proxy-server.jar、neutrino-proxy-admin.zip上传至服务器部署目录。
● 解压neutrino-proxy-admin.zip文件
● 若需要指定自己的mysql数据库,同样的需要在当前目录下新建app.yml文件,文件内容同上。执行命令java -Dfile.encoding=utf-8 -jar neutrino-proxy-server.jar config=app.yml启动服务端完成部署

2.3 客户端jar部署

● 首先确保本地已安装java8运行环境
● 打开发行版页面(opens new window),下载最新的release包:neutrino-proxy-client.jar
● 在本地neutrino-proxy-client.jar同级别目录下新建app.yml文件,并配置如下内容:

neutrino:
  proxy:
    protocol:
      max-frame-length: 2097152
      length-field-offset: 0
      length-field-length: 4
      initial-bytes-to-strip: 0
      length-adjustment: 0
      read-idle-time: 360
      write-idle-time: 300
      all-idle-time-seconds: 3600
    client:
      # ssl证书密钥(使用jjar包内自带的证书,则此处无需修改)
      key-store-password: 123456
      # ssl证书管理密钥(使用jjar包内自带的证书,则此处无需修改。自定义证书,则此处配置对应的路径)
      jks-path: classpath:/test.jks
      # 代理服务端IP
      server-ip: localhost
      # 代理服务端IP, 若是非ssl端口,则ssl-enable需要配置为false
      server-port: 9002
      # 是否启用ssl
      ssl-enable: true
      # licenseKey,客户端凭证。此处需要配置刚刚从管理后台复制的LicenseKey
      license-key: xxxx

可以 screen -R proxy创建一个新屏幕启动该jar. ctrl+a+d不杀掉当前屏幕,返回原屏幕
执行命令java -jar neutrino-proxy-client.jar config=app.yml启动客户端

nohup java -Xms128m -Xmx256m -jar neutrino-proxy-client.jar config=app.yml >/dev/null 2>&1 & 后台启动并且不输出日志.
查看服务端License管理,刷新页面,对应的License在线状态为在线,则表明客户端已正常连接。

2.4 管理后台配置

● 服务端部署成功后,访问http://{服务端IP}:8888打开后台管理页面。
● 使用默认的管理员帐号登录:admin/123456
● 打开代理配置>License管理页面,可以看到系统已经自动为管理员初始化了一条License记录,复制该LicenseKey备用,后续客户端配置需要。
● 打开代理配置>端口映射页面,可以看到系统已经自动为初始化了几条端口映射。可根据需要自行添加、修改。这里我们以9101 -> 127.0.0.1:8080映射为例

猜你喜欢

转载自blog.csdn.net/m0_50913327/article/details/131031891
今日推荐