iptables案例:通过本地服务器转发访问远程数据库
来源:互联网 发布:如何自学软件测试 编辑:程序博客网 时间:2024/05/16 07:56
iptables案例:通过本地服务器转发访问远程数据库
场景介绍
个人PC一台,IP为:192.168.1.68,简称A
本地服务器一台,IP为:192.168.1.10,简称B
外网数据库服务器一台,IP为:119.29.0.47,简称C
我需要让A通过B的转发去连接数据库服务器C,而不是A直接连接C。
解决方案
基础知识
通过iptables的IP端口转发机制实现。
IP传输包的特点
原理示意
具体配置
- 启用linux内核路由转发功能
# 临时修改,机器重启失效[root@localhost ~]#echo "1" > /proc/sys/net/ipv4/ip_forward# 永久生效修改# 改:#net.ipv4.ip_forward = 0# 为: net.ipv4.ip_forward = 1[root@localhost ~]# vim /etc/sysctl.conf# 使配置立即生效[root@localhost ~]# sysctl -p
- 配置iptables转发规则
[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 33060 -j DNAT --to-destination 119.29.0.47:3306[root@localhost ~]# iptables -t nat -A POSTROUTING -p tcp --dport 3306 -j SNAT --to-source 192.168.1.10
重点解释一下:
DNAT:修改数据包的目的IP,起到数据转发的作用。
SNAT:修改数据包的源IP。上例中发送的数据包虽然被192.168.1.10进行了转发,但是默认源IP不会因为转发而修改为192.168.1.10,当服务器返回数据的时候会返回到192.168.1.68,但是192.168.1.68本身发送数据是发送到192.168.1.10的,192.168.1.68接收到119.29.0.47的返回数据时,认为是无效数据,然后丢弃。所以SNAT的作用就是修改数据包的源IP地址,让应答数据可以正常返回。
阅读全文
0 0
- iptables案例:通过本地服务器转发访问远程数据库
- 【阿里云】 ECS Linux 云服务器中安装 rinetd 进行转发实现本地通过公网访问云数据库 Redis
- 通过Web Service在本地访问远程数据库的数据
- pgcli通过SSH本地转发连接远程服务器上的PostgreSQL DB
- jQuery $.ajax()通过本地服务器访问到远程服务器,解决远程问题。
- Ubuntu下本地ipython notebook通过ssh远程访问远程服务器
- 本地PostgreSQL数据库远程访问
- 本地访问远程数据库MySQL
- 通过中间服务器做代理(端口转发)远程连接数据库
- 服务器实现iptables转发
- 通过花生壳远程访问数据库
- iptables例:本地端口转发
- linux ssh 远程服务器的端口转发到本地端口
- 通过iptables实现数据包转发
- Linux通过iptables实现转发
- 设置本地mysql数据库允许远程访问
- 通过 localhost 不能访问本地服务器问题
- 如何通过域名访问远程SQLSERVER服务器
- 双11程序猿最想要的奢侈品竟然是这些!
- pytorch学习笔记(十三):backward过程的底层实现解析
- SyntaxError: Non-ASCII character '\xe5' in file
- Kibana 默认Web 端口 5601 改为 80 的简单办法
- ios-步数的获取
- iptables案例:通过本地服务器转发访问远程数据库
- 深入浅出理解有限状态机
- 面向对象---多态
- 程序猿的日常——SpringMVC系统架构与流程回顾
- Maven之新建web项目后目录不全与jsp报错-yellowcong
- html head标签结构说明
- py-faster-rcnn demo.py分析(py-faster-rcnn)
- JavaShowAlgorithm-Binary Tree Longest Consecutive Sequence
- C#中的相等