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
原创粉丝点击