使用otunnel进行内网穿透

之前试了网上说的autossh的方法来转发端口,一直失败,于是换了一种方法。

适用场景

  • 一台能连外网但是没有公网ip的服务器A,

  • 一台有公网ip的服务器B

期望通过访问服务器B来间接访问服务器A

步骤

服务器B(server)

安装

首先在服务器B上下载otunnel

wget http://dl.ooclab.com/otunnel/1.3.1/otunnel_linux_amd64
chmod a+x otunnel_linux_amd64
sudo mv otunnel_linux_amd64 /opt/bin/otunnel

然后运行/opt/bin/otunnel listen :10000 -s password即可启动。

加入后台

这里采用issue里面说到的supervisor的方法(没有高贵的ios设备,sigh)

sudo apt install supervisor
sudo vim /etc/supervisor/conf.d/otunnel.conf

粘贴下面的代码:

[program:otunnel-listen]
command=/opt/bin/otunnel listen :10000 -d -s password
autostart=true
autorestart=true
log_stdout=true
log_stderr=true
stdout_logfile=/var/log/otunnel-listen.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=12
redirect_stderr = true

重启supervisor

sudo supervisorctl reload

服务器A(client)

安装

首先一样的安装

wget http://dl.ooclab.com/otunnel/1.3.1/otunnel_linux_amd64
chmod a+x otunnel_linux_amd64
sudo mv otunnel_linux_amd64 /opt/bin/otunnel

加入后台

sudo apt install supervisor
sudo vim /etc/supervisor/conf.d/otunnel.conf

粘贴下面代码

[program:otunnel-client]
command=/opt/bin/otunnel connect serverB的IP:10000 -d -s password  -t "r:127.0.0.1:80::80"
autostart=true
autorestart=true
;log_stdout=true
;log_stderr=true
stdout_logfile=/var/log/otunnel.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=12
redirect_stderr = true

重启supervisor

sudo supervisorctl reload

然后就完工了!

##TODO

转发到服务器B的非80端口,根据访问80的不同域名,来映射不同端口。

  • 多端口可以配置多个 -t,例如:
command=/opt/bin/otunnel connect serverB的IP:10000 -d -s password  -t "r:127.0.0.1:80::80"  -t "r:127.0.0.1:123::123" 
  • 映射不同域名可以通过 nginx 来实现
posted @ 2018-08-07 15:43  naiij  阅读(295)  评论(0编辑  收藏  举报