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相对来说还是比较简单并稳定可靠的。

相关推荐
Decay__6 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
HideF8 小时前
Linux
linux·服务器·网络
小徐不徐说10 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
Ruiery10 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
论文复现现场10 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__11 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
丰锋ff12 小时前
压缩命令笔记
linux
心梦缘-雪雁13 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk13 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW14 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库