使用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 来实现