启用网卡转发功能
#echo 1 > /proc/sys/net/ipv4/ip_forward
举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口mysql
a.同一端口转发(192.168.0.132上开通1521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT)sql
iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211
iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADE
b.不一样端口转发(192.168.0.132上开通21521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21521 -j ACCEPT)服务器
iptables -t nat -A PREROUTING -p tcp -m tcp --dport21521 -j DNAT --to-destination192.168.0.211:1521
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.211 -p tcp -m tcp --dport 1521 -j SNAT --to-source 192.168.0.132
以上两条等价配置(更简单[指定网卡]):
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 192.168.0.211:1521
iptables -t nat -A POSTROUTING -j MASQUERADE
保存iptables
#service iptables save
#service iptables restart
网络
代码以下:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
估计适当增长其它的参数也能够作不一样IP的端口转发。
若是须要本机也能够访问,则须要配置OUTPUT链(********特别注意:本机访问外网的端口会转发到本地,致使访不到外网,如访问yown.com,其实是访问到本地,建议不作80端口的转发或者指定目的 -d localhost):运维
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080
缘由:
外网访问须要通过PREROUTING链,可是localhost不通过该链,所以须要用OUTPUT。tcp
#######################################################################################.net
概述:公司有一些核心MySQL服务器位于核心机房的内网段,做为运维人员,常常须要去链接这些服务器,因没法直接经过外网访问,给管理形成了不便。rest
思路:虽然解决此问题的方法及思路有不少,但当下想使用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.1ip
容许服务器的IP转发功能:get
echo 1 > /proc/sys/net/ipv4/ip_forward
使用方法:
mysql -h 公网IP -p 63306 -uroot -p
###############################################################################################
因为业务须要,服务器愈来愈多,内网服务器无外网环境管理甚是不便,因此折腾了一下外网到内网的端口转发以达到轻松管理的目的,贴一下心得。
S1:
eth0 10.0.0.1
eth1 x.x.x.x
S2:
eth0 10.0.0.2
S1 8082端口转发到内网机器22端口
iptables规则配置以下:
iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 8082 -j DNAT --to-destination 10.0.0.2:22
iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp --dport 22 -j SNAT --to-source x.x.x.x
说明: iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口" iptables -t nat -A POSTROUTING -d "内部实际提供服务的ip"-p tcp --dport "实际提供服务的端口" -j SNAT --to-source "运行iptables机器的内网ip"