• 为什么写博客,是因为遇到的坑,不希望别人在踩一遍!
  • 选择了,剩下的就是坚持和努力-------致自己!
  • 当能力达不到梦想时,更需要学习,努力,拼搏

反向代理(Nginx)和隧道转发(SSH)实现内网端口映射

Linux运维 无名 2年前 (2018-10-26) 2093次浏览 0个评论

1.1 使用反向代理(Nginx)和隧道转发(SSH)实现内网端口映射
实现内网与公网的映射方式有很多很多,如Ngrok、花生壳、NATAPP等,这些服务要么要收费,要么上不支持Mac,要么网速比较慢,要么没有端口保持等,
1.2 所需环境:
A 机器 外网服务器(安装Nginx服务),本次模拟使用域名解析
B 机器 内网机器 192.168.1.223
sshd服务(这个应该都有),域名(没有也可以,使用ip来访问)
1.3 介绍一下原理:
• 反向代理:使用Nginx将请求代理到服务器的其他端口,让其他程序能监听此端口并做相应的处理。
• 隧道转发:即SSH隧道,一般我们使用它来远程连接或sftp文件传输,当然他还有端口转发的功能。SSH隧道是一种把一种网络协议封装进另外一种网络协议进行传输的技术,因为ssh隧道通常会绑定一个本地端口,所有发向这个端口的数据包,都会被加密并透明地传输到远端系统,这也是端口转发这一名字的由来。

1.3.1 nginx 配置 (A 外网机器)

[root@xuebao extra]# cat test.conf 
server {
    listen       80;
    server_name  test2.zinux.com;  #需要注意这个解析的域名
    access_log  /application/nginx/logs/autossh_log;
     location / {
	proxy_pass  http://127.0.0.1:8099;   #这个端口比较特别是需要在本机转发的端口,可以自定义。
    }
}

设置后检查nginx,重启。

1.4 内网机器设置

需要先做免密就是从内网机器到外网机器可以免密访问
[root@uat-tbj ~]# ssh-keygen -t rsa  #一路回车就行
创建完成后将私钥推送给 公网
[root@uat-tbj ~]# ssh-copy-id 59.230.112.33333
# 提示:可以在本地ssh 测试
提示:在centos7 不能yum 安装autossh 需要编译安装
1.4.1 下载依赖包
[root@uat-tbj ~]# yum install wget gcc make
[root@uat-tbj ~]# wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
[root@uat-tbj ~]#tar -xf autossh-1.4e.tgz
[root@uat-tbj ~]# cd autossh-1.4e
[root@uat-tbj ~]# ./configure
 [root@uat-tbj ~]# make
[root@uat-tbj ~]#  make install
1.4.2 启动 autossh
root@uat-tbj ~]# autossh -M 8000  -fNR 8099:localhost:8999 root@59.113333.11  -p 22
autossh -M 8000(这个是任意一个端口,可以不存在) -NR 远程端口(外网服务器的):127.0.0.1:本地端口 root@远程IP -p 外网服务器端口
参数:
反向代理 ssh -fCNR
正向代理 ssh -fCNL
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
提示:如果关闭这个进程需要 ps -ef kill掉
[root@uat-tbj .ssh]# ps -ef|grep autossh
root     10270     1  0 16:16 ?        00:00:00 autossh -M 8000 -NR  8099:localhost:8999 root@59.12。4430.11 -p 22
root     10280 10103  0 16:34 pts/1    00:00:00 grep --color=auto autossh

1.4.3 最后配置在Linux上配置开机自动启动autossh,免去了重启Linux后要自己启动的autossh的麻烦

[root@uat-tbj .ssh]# vim /etc/rc.local
autossh -M 8000  -fNR 8099:localhost:8999 root@59.113333.11  -p 22
# 最后可以在外放访问了

喜欢 (1)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址