Centos7NAT路由器配置

准备三台实验机器:

模拟内网:Ubuntu14.04  192.168.104.10

模拟外网:Ubuntu14.04  10.20.20.100

模拟nat服务器(作为网关):centos7  192.168.104.2  10.20.20.2

 

环境:vsphere虚拟化平台

wKioL1mWlM6xya7PAABEZDsdA9g583.png-wh_50

 

1.配置内网服务器网络(关闭内网服务器防火墙)

wKioL1mWlQ6zr4HtAAB4913SxeM572.png-wh_50

2.配置外网服务器网络(关闭外网服务器防火墙)

 

wKiom1mWlRrh7uPgAAB2HapF6DE760.png-wh_50

3.配置nat服务器

wKioL1mWlSOAaIq-AAFbX2b-bu0921.png-wh_50

 

4.配置好服务器网络之后,配置nat服务器的防火墙和路由规则(重要)

1)配置路由

wKiom1mWlZawCegTAABZr4hcqis262.png

2)配置防火墙(重点)

SNAT:内网访问外网,作用于natPOSTROUTING

DNAT:外网访问内网,作用于natPREROUTING

首先关闭自带防火墙(systemctl  stop  firewalld

清除之前所有的规则:(nat会使用到filter表和nat表)

         iptables  -X & iptables  -F &iptables  -Z (清理filter表的规则,不加 –t 就默认filter表)

         iptables -X -t nat  & iptables  -F  -tnat & iptables  -Z  -t nat (清理filter表的规则)

 

实验一:内网通过nat访问外网

1.iptables -P FORWARD DROP #关闭forward转发链,安全。

2.iptables -A FORWARD –m state –stateESTABLISHED,RELATED –j ACCEPT #使用状态模块,放行相关的和建立连接的请求

3.iptables -A FORWARD -m state-state NEW -s 192.168.104.0/24 -j ACCEPT #允许内网通过网关访问外网,注意其实到这步就可以实现内网访问外网,但是如果在外网上抓包会看到源地址并没有转换,所以这样不够完善。

wKioL1mWlXmj_FVLAACjWMfar7s495.png

4.iptables -t nat -APOSTROUTING -s 192.168.104.0/24 -o ens192 -j MASQUERADE

#192.168.104段的地址伪装成nat出口地址,MASQUERADE这个值其实就是IP伪装成封包出去(-o)的那块网卡上的IP。其实上面的语句和iptables -t nat-A POSTROUTING -s 192.168.104.0/24 -j SNAT --to-source 10.20.20.2 效果是一样的。再次在外网服务器上抓包取证。

wKiom1mWlaLT9spKAADw0C3Hm0M363.png

 

实验二:外网通过nat访问内网服务(ssh为例)

1.iptables -P FORWARD DROP #关闭forward转发链,安全。

2.iptables -A FORWARD –m state –stateESTABLISHED,RELATED –j ACCEPT #使用状态模块,放行相关的和建立连接的请求

3.iptables -t nat -APREROUTING -p tcp -i ens192 --dport 10222 -j DNAT --to-destination192.168.104.10:22  #外部请求nat服务器某个端口然后DNAT跳转到内网服务器上

4.iptables -A FORWARD -iens192 -o ens160 -d 192.168.104.10 -p tcp --dport 22 -j ACCEPT

# 外部请求进到nat服务器,然后经过nat表的PREROUTING链到达filter表的FORWARD链,然后放行目的地址的22端口,在内网服务器上抓包取证。

wKioL1mWlfqDUylEAAByfo2mS6I623.png

wKioL1mWldDg5Df3AAC5Sj3znFE315.png 

总结:

linux nat中,被转发的包实际经过了以下几个  - 的组合

1.  mangle  --PREROUTING

2.  nat         --PREROUTING                            #用于外部访问内部服务的NAT

3.  mangle      --FORWARD                                 

4.  filter           --FORWARD     

5.  mangle      --POSTROUTING

6.  nat              --POSTROUTING                         #用于内部浏览外部的NAT

nat一般都是在filter表的forward链和nat表的preroutingpostrouting链上做规则设定。