远程跳板机访问私网主机----流量转发

场景:

现在有三台主机:A、B、C, A和B通,B和C通,但是A和C之间不通,比如有防火墙,或者是网段不同等等。但是如果我非要通过A能访问C这个主机呢?这个时候就需要流量转发,通过将A->C的流量,交给B,由B作为跳板机转发到C。

方式一:通过SSH隧道转发

ssh隧道转发:分反向代理,正向代理,以及动态代理,我这里采用了正向代理
在跳板机B上执行以下命令:

ssh -C -f -N -g -L 40022:192.168.168.144:22 root@192.168.168.144

其中192.168.168.144就是主机C的地址,22就是主机C需要访问的端口号,40022是我在跳板机B上开放的端口,用于让主机A来ssh,
开放端口命令:

firewall-cmd --zone=public --add-port=40022/tcp --permanent
firewall-cmd --reload

这样配置后,我在A主机上:直接ssh B主机地址+开放的端口号:40022,就直接登录到主机C上了。
如果登录不上,需要修改主机B上sshd配置文件,开启隧道转发(百度有更详细的)
ps: ssh 后面加上-v -T就可以开启ssh调试,查找一下不通的原因

建立成功后,可以通过 ps -ef | grep ssh 查看到进程,关闭这个ssh转发隧道,直接kill -9 杀进程即可

注意:ssh这种连接是不稳定的,需要再安装一个autossh,保证ssh 隧道不会断,autossh用法自行百度。

yum install autossh

PS: ssh 隧道命令参数简介:
-f 后台执行ssh 命令
-C 允许压缩数据
-N 不执行远程指令,建立静默连接
-R 开启反向代理,将远程主机的某个端口转发到本地机器的指点端口
-L 开启正向代理,将本地主机某个端口转发到远程主机某个端口
-D 动态转发,即socket代理
-p 指定远程主机端口
-g 允许远程主机连接本地用于转发的端口

方式二:通过Firewalld做流量转发(推荐)

ssh这种我感觉不是很靠谱,至于是ssh隧道转发安全还是Firewalld安全,这里不作计较。有些虚机镜像里面做了加固处理,ssh隧道是打通不了的,反正Firewalld是可以的。

以下操作都是在跳板机B上执行:
1、先使能firewallD的转发功能:

firewall-cmd --add-masquerade --permanent

2、添加端口映射:

firewall-cmd --permanent --add-forward-port=port=40022:proto=tcp:toport=22:toaddr=192.168.168.144
firewall-cmd --reload

40022是跳板机B上的端口,映射到目的机器C的22端口,且192.168.168.144是目的主机C的地址
这样就可以通过在主机A上,ssh 主机B的地址+port 40022 直接访问主机C

firewall 相关命令

删除映射
firewall-cmd --permanent --remove-forward-port=port=40022:proto=tcp:toport=22:toaddr=192.168.168.144
查看已生效的映射:
firewall-cmd --list-forward-ports

最后推荐一个端口映射的小工具:rinetd ,这个比iptables 的nat映射配置简单,有需要的话,可以研究一下,挺好用的。

菜鸡的救赎之路

21 声望
2 粉丝
0 条评论
推荐阅读
java小技巧记录
比如List<Persion> lists中存放了一堆Person对象,我需要对这lists中的Person对象先根据出生地排序,出生地相同,再根据年龄做二级排序:

SanPiBrother阅读 282

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木75阅读 7.1k评论 16

从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木45阅读 8.5k评论 6

从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...

乌柏木35阅读 6.7k评论 10

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
前言秒杀和高并发是面试的高频考点,也是我们做电商项目必知必会的场景。欢迎大家参与我们的开源项目,提交PR,提高竞争力。早日上岸,升职加薪。知识点详解秒杀系统架构图秒杀流程图秒杀系统设计这篇文章一万多...

王中阳Go33阅读 2.4k评论 1

封面图
从零搭建 Node.js 企业级 Web 服务器(五):数据库访问
回顾 从零搭建 Node.js 企业级 Web 服务器(一):接口与分层,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,控制层与服务层实现了业务处理过程,模型层定义了业务实体并以 对象-关系...

乌柏木34阅读 5k评论 9

从零搭建 Node.js 企业级 Web 服务器(十三):断点调试与性能分析
Node.js 官方提供了断点调试机制,出于安全性考虑默认为关闭状态,可以通过 node 参数 --inspect 或 --inspect-brk 开启,配合 IDE 能够非常方便地调试代码,本章就上一章已完成的项目 licg9999/nodejs-server-ex...

乌柏木31阅读 4.2k评论 9

菜鸡的救赎之路

21 声望
2 粉丝
宣传栏