内网穿透常见方式推荐
文章目录
1.可以使用nginx
1.1首先用ssh打开公网服务器和内网服务器的连接通道
ssh -vnNT -R 服务器端口:localhost:本地端口 服务器用户名@服务器 IP 地址
ssh -vnNT -R 7689:localhost:8000 root@47.45.14.12
# 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数据库
● 在服务器上创建目录:/usr/local/mydata/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 $HOME/mydata/neutrino-proxy-server/config:/root/neutrino-proxy/config \
-v $HOME/mydata/neutrino-proxy-server/data:/root/neutrino-proxy/data \
-v $HOME/mydata/neutrino-proxy-server/logs:/root/neutrino-proxy/logs \
-d --restart=always --name neutrino \
registry.cn-hangzhou.aliyuncs.com/yuanjie7/neutrino-proxy-server:2.0.3
默认密码 123456
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 -Xms512m -Xmx1024m -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.3.2 docker部署客户端
- WEB端口:服务端API、后台管理访问端口,默认为:8888
- 服务端等待客户端连接的端口,非SSL:默认9000,SSL端口:默认9002(若不需要SSL支持,可不配置SSL端口)
- HTTP代理端口:默认80,用于域名映射,若无需域名映射,可以忽略。
docker run -it -d --restart=always --name npclient -e SERVER_IP=xxxx -e LICENSE_KEY=xxxx \
--add-host=host.docker.internal:host-gateway \
registry.cn-hangzhou.aliyuncs.com/yuanjie7/neutrino-proxy-client:2.0.3```
## 2.4 管理后台配置
● 服务端部署成功后,访问http://{服务端IP}:8888打开后台管理页面。
● 使用默认的管理员帐号登录:admin/123456
● 打开代理配置>License管理页面,可以看到系统已经自动为管理员初始化了一条License记录,复制该LicenseKey备用,后续客户端配置需要。
● 打开代理配置>端口映射页面,可以看到系统已经自动为初始化了几条端口映射。可根据需要自行添加、修改。这里我们以9101 -> 127.0.0.1:8080映射为例
# 三. ddns-go
```bash
docker run -d --name ddns-go --restart=always --net=host -v /usr/local/mydata/ddns-go:/root jeessy/ddns-go
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)