Linux(CentOS)下,DNAT和SNAT(分享IP)

来源:互联网 发布:淘宝刷粉丝 编辑:程序博客网 时间:2024/05/25 21:35

我有两台服务器:
前端服务器A,它具备外网地址(115.238.54.116),也有内网地址(192.168.0.2);
后端服务器B,它没有外网地址,只具备内网地址(192.168.0.3)。
通过设置DNAT,可以实现内网服务器供Internet访问。

通过设置SNAT,可以实现内网主机访问Internet。


查看防火墙的详细配置,可参考《防火墙iptables配置》。

直接修改iptables的配置文件:vi /etc/sysconfig/iptables
填入如下内容后,用命令(# service iptables restart)使得设置生效。

#iptables有3个表(filter,nat,mangle)#这里只配置filter和nat,mangle一般不用。#filter过滤表的配置(它包含:INPUT,FORWARD,OUTPUT)*filter#接收(INPUT)的默认策略是丢弃(DROP):INPUT DROP [9650160:4545407604]#接收所有本机的请求-A INPUT -i lo -j ACCEPT #接所有ICMP的请求(PING)-A INPUT -p icmp -j ACCEPT #接收所有已经建立了链接的请求-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT#允许远程链接(SSH,PostgreSQL,MySQL,Tomcat,Nginx等,以及自定义服务)-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 54104 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 8090 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT#拒绝其他所有请求,告诉它主机禁止访问-A INPUT -j REJECT --reject-with icmp-host-prohibited#转发(FORWARD)的默认策略是接受(ACCEPT):FORWARD ACCEPT [2068743:358404333]#转发所有已经建立了链接的请求-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT#允许远程链接(SSH,MySQL等)控制其背后的内网服务器-A FORWARD -m state --state NEW -m tcp -p tcp --dport 50022 -j ACCEPT-A FORWARD -m state --state NEW -m tcp -p tcp --dport 53306 -j ACCEPT-A FORWARD -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT-A FORWARD -m state --state NEW  -s 192.168.0.0/24 -j ACCEPT-A FORWARD -m state --state NEW  -d 192.168.0.0/24 -j ACCEPT#拒绝其他所有转发,告诉它主机禁止访问-A FORWARD -j REJECT --reject-with icmp-host-prohibited#发送(OUTPUT)的默认策略是接受(ACCEPT):OUTPUT ACCEPT [9988047:5993618714]COMMIT#nat表的默认配置(它包含:PREROUTING,POSTROUTING,OUTPUT)*nat#前置路由(PREROUTING)的默认策略是接受(ACCEPT):PREROUTING ACCEPT [683:42497]#DNAT设置,允许远程链接(SSH,MySQL等)控制其背后的内网服务器-A PREROUTING -i em1 -p tcp -m tcp --dport 50022 -j DNAT --to-destination 192.168.0.3 -A PREROUTING -i em1 -p tcp -m tcp --dport 53306 -j DNAT --to-destination 192.168.0.3:3306 -A PREROUTING -i em1 -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.0.3-A PREROUTING -i em1 -p tcp -m tcp --dport 8090 -j REDIRECT --to-ports 8080#后置路由(PREROUTING)的默认策略是接受(ACCEPT):POSTROUTING ACCEPT [1:52]#SNAT设置,分享公网IP,其背后的内网主机,也可以访问外网#-A POSTROUTING -o em1 -j SNAT --to-source 115.238.54.116-A POSTROUTING -s 192.168.0.0/24 -o em1 -j MASQUERADE#发送(OUTPUT)的默认策略是接受(ACCEPT):OUTPUT ACCEPT [63:3772]COMMIT


1 0