关于后端:远程跳板机访问私网主机流量转发

3次阅读

共计 1413 个字符,预计需要花费 4 分钟才能阅读完成。

场景:

当初有三台主机: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 映射配置简略,有需要的话,能够钻研一下,挺好用的。

正文完
 0