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

我有两台服务器:
前端服务器A,它具备外网地址(115.238.54.116),也有内网地址(192.168.0.2);
后端服务器B,它没有外网地址,只具备内网地址(192.168.0.3)。
通过设置DNAT,可以实现内网服务器供Internet访问。
Linux(CentOS)下,DNAT和SNAT(分享IP)_第1张图片
通过设置SNAT,可以实现内网主机访问Internet。
Linux(CentOS)下,DNAT和SNAT(分享IP)_第2张图片

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

直接修改iptables的配置文件:vi /etc/sysconfig/iptables
填入如下内容后,用命令(# service iptables restart)使得设置生效。
Linux(CentOS)下,DNAT和SNAT(分享IP)_第3张图片

#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


你可能感兴趣的:(Linux)