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

相关推荐
h***38181 分钟前
使用python进行PostgreSQL 数据库连接
数据库·python·postgresql
last demo6 分钟前
VSFTPD 服务器
linux·运维·服务器
wdfk_prog6 分钟前
[Linux]学习笔记系列 -- [block]fops
linux·笔记·学习
阿阿越8 分钟前
Linux系统编程 -- 进程(二)
linux·运维·服务器
r***869812 分钟前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu·adb
Bro_cat12 分钟前
MySQL面试 八股文20道
数据库·mysql·面试
Lgnazio14 分钟前
MYSQL数据库集群高可用和数据监控平台
数据库·mysql
白狐_79814 分钟前
基于 MySQL + MongoDB 的在线考试系统数据库设计与实现
数据库·mysql·mongodb
j***495616 分钟前
CentOS7安装Mysql5.7(ARM64架构)
adb·架构
摘星编程16 分钟前
openGauss DataVec向量数据库集成:面向AI应用的相似性搜索与知识图谱存储
数据库·人工智能·知识图谱