iptables实现端口转发、端口映射与双向通路

项目上线,有两台服务器,A在公网。linuxrhel5.4,运行php开发的一个打折购物网:尚品折扣,数据库部署到内网中,每次导入数据都要ssh到公网,然后再转到内网。一次采集了一些服装品牌的数据,比如,艾格的服装资讯,优衣库的打折,朵以的产品介绍

下面是实现过程:

允许数据包转发:

#echo1>/proc/sys/net/ipv4/ip_forward

转发TCP8081到xx.xx.xx.xx:

#iptables-tnat-IPREROUTING-ptcp–dport80-jDNAT–toxx.xx.xx.xx

使转发数据包实现“双向通路”,给数据包设置一个正确的返回通道:

#iptables-tnat-IPOSTROUTING-ptcp–dport8080-jMASQUERADE

表示将规则保存到/etc/sysconfig/iptables文件

#serviceiptablessave

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

#serviceiptablesrestart

如果执行上述命令,依然不能转发,可能由于iptables服务没有停止,命令无法写入iptables文件,应先执行serviceiptablesstop,再执行上述命令,最后serviceiptablesstart再启动服务

 由于Linux防火墙默认是关闭3306端口。因此,若要能够访问3306端口,可以用两种方式,一个是关闭防火墙,另一个就是让防火墙开放3306端口。

开放3306端口的解决步骤如下:

1、修改/etc/sysconfig/iptables文件,增加如下一行:

-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport3306-jACCEPT

2、重启防火墙,这里有两种方式重启防火墙

a)重启后生效

开启:chkconfigiptableson

关闭:chkconfigiptablesoff

b)即时生效,重启后失效

开启:serviceiptablesstart

关闭:serviceiptablesstop

数据库映射成功。

相关推荐