Centos7做NAT路由器配置
准备三台实验机器:
模拟内网:Ubuntu14.04 192.168.104.10
模拟外网:Ubuntu14.04 10.20.20.100
模拟nat服务器(作为网关):centos7 192.168.104.2 10.20.20.2
环境:vsphere虚拟化平台
1.配置内网服务器网络(关闭内网服务器防火墙)
2.配置外网服务器网络(关闭外网服务器防火墙)
3.配置nat服务器
4.配置好服务器网络之后,配置nat服务器的防火墙和路由规则(重要)
1)配置路由
2)配置防火墙(重点)
SNAT:内网访问外网,作用于nat表POSTROUTING链
DNAT:外网访问内网,作用于nat表PREROUTING链
首先关闭自带防火墙(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 –-state ESTABLISHED,RELATED -j ACCEPT #使用状态模块,放行相关的和建立连接的请求
3.iptables -A FORWARD -m state --state NEW -s 192.168.104.0/24 -j ACCEPT #允许内网通过网关访问外网,注意其实到这步就可以实现内网访问外网,但是如果在外网上抓包会看到源地址并没有转换,所以这样不够完善。
4.iptables -t nat -A POSTROUTING -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 效果是一样的。再次在外网服务器上抓包取证。
实验二:外网通过nat访问内网服务(ssh为例)
1.iptables -P FORWARD DROP #关闭forward转发链,安全。
2.iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT #使用状态模块,放行相关的和建立连接的请求
3.iptables -t nat -A PREROUTING -p tcp -i ens192 --dport 10222 -j DNAT --to-destination 192.168.104.10:22 #外部请求nat服务器某个端口然后DNAT跳转到内网服务器上
4.iptables -A FORWARD -i ens192 -o ens160 -d 192.168.104.10 -p tcp --dport 22 -j ACCEPT
# 外部请求进到nat服务器,然后经过nat表的PREROUTING链到达filter表的FORWARD链,然后放行目的地址的22端口,在内网服务器上抓包取证。
总结:
在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表的prerouting,postrouting链上做规则设定。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/321.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~