2017年2月

linux下用iptables做本机端口转发方法

概述:公司有一些核心MySQL服务器位于核心机房的内网段,作为运维人员,经常需要去连接这些服务器,因无法直接通过外网访问,给管理造成了不便。

思路:虽然解决此问题的方法及思路有很多,但当下想使用IPTABLES的端口重定向功能解决此问题,比较简单易用,而且扩展性也比较好,依次类推,可以运用到其他的端口转发方面的应用。
网络环境:

公网服务器 :eth0:公网IP eth1:内网IP - 192.168.1.1
MYSQL服务器: eth1:内网IP -192.168.1.2

实现方法:通过访问公网IP的63306端口来实现到内网MYSQL服务器的3306端口的访问
在公网服务器上:
配置脚本:

iptables -t nat -A PREROUTING -p tcp --dport 63306 -j DNAT --to-destination 192.168.1.2:3306
iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1

允许服务器的IP转发功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

使用方法:

mysql -h 公网IP -p 63306 -uroot -p

Centos 操作如下:
1、 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0
这样允许iptalbes FORWARD。
2、 service iptables stop 关闭防火墙
3、 配置规则,见上面。
4、service iptables save 将当前规则保存到 /etc/sysconfig/iptables
若你对这个文件很熟悉直接修改这里的内容也等于命令行方式输入规则。
5、 启动iptables 服务, service iptables start

====================================linux================================================
1 vi /etc/sysctl.conf
2 将net.ipv4.ip_forward=0更改为net.ipv4.ip_forward=1
3 sysctl -p(这条命令是使数据转发功能生效)
4 例如:你要将外网访问本地IP(192.168.75.5)的80端口转换为访问192.168.75.3的8000端口,你可以用如下命令:
(1)iptables -t nat -A PREROUTING -d 10.150.133.13 -p tcp --dport 8083 -j DNAT --to-destination 10.150.132.26:80
(2)iptables -t nat -A POSTROUTING -d 10.150.132.26 -p tcp --dport 80 -j SNAT --to-source 10.150.133.13
5 可以使用命令:iptables -t nat --list检查nat列表信息:

#service iptables save  

重启iptables使刚才添加的规则生效

#service iptables restart 
# iptables -t nat -L --line-number //列出规则的编号  
# iptables -t nat -D PREROUTING 1 //删除PREROUTING中的第2条规则 
# iptables -t nat -D POSTROUTING 1 //删除PREROUTING中的第2条规则