Linux-通过端口转发访问数据库

Linux-通过端口转发访问数据库

工作中有时在网络限制比较多的情况下,比如本地服务需要访问远程数据库,但是本地又不允许申请访问数据库,这时怎么办,所以就需要有个代理,本地连接代理,代理再去连接数据库,就跟生活中的中介似的。

需要达到的效果如下:

复制代码
客户端 → 跳板机:3306 → DNAT转换 → 远端MySQL服务器:3306

这里选择比较简单的方案吧

1. 使用iptables
a. 跳板机 - 开启IP转发
复制代码
#echo 1 > /proc/sys/net/ipv4/ip_forward
b. 跳板机 - DNAT目标地址转换

将本机的3306 端口dnat转发到远程mysql

复制代码
#iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination mysql_server_ip:3306
c. 源地址转换

因为需要将请求mysql的源地址改成跳板机的

复制代码
#iptables -t nat -A POSTROUTING -p tcp -d mysql_server_ip --dport 3306 -j MASQUERADE

如果出现不通的清空,请排查forward是否打开,以及iptables INPUT以及forward链是否放行端口。

复制代码
PREROUTING链 (nat表) → 路由判断 → FORWARD链 (filter表) → POSTROUTING链 (nat表)

#iptables -A FORWARD -p tcp -d mysql_server_ip --dport 3306 -j ACCEPT 
#iptables -A FORWARD -p tcp -s mysql_server_ip --sport 3306 -j ACCEPT 
2. 使用nginx tcp代理

(略)

感觉使用iptables以及nginx相对来说还是比较简单并稳定可靠的。

相关推荐
CC.GG16 分钟前
【Qt】信号和槽
开发语言·数据库·qt
TH_126 分钟前
20、误删oracle数据
数据库·oracle
街灯L34 分钟前
【Ubuntu】Python uploadserver 文件传输服务器
linux·服务器·ubuntu
A132470531236 分钟前
SSH远程连接入门:安全高效地管理服务器
linux·运维·服务器·网络·chrome·github
IT邦德1 小时前
GoldenGate 19C的静默安装及打补丁
数据库
郝学胜-神的一滴1 小时前
深入解析Linux的`pthread_create`函数:从原理到实践
linux·服务器·c++·程序人生
吴佳浩 Alben1 小时前
Go 1.22 通关讲解
开发语言·数据库·golang
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [fs]exec
linux·笔记·学习
looking_for__1 小时前
【Linux】基础IO
linux
阿豪学编程1 小时前
【Linux】进程间通信(IPC):从管道到共享内存
linux·运维·服务器