Linux的防火墙——SNAT实现策略控制路由转发
作者:互联网
转至:https://blog.csdn.net/qq_41425613/article/details/117294355
SNAT原理与应用
应用环境:局域网主机共享单个公网IP地址接入Internet,私有IP不能在Internet中正常路由
原理:修改数据包的源地址。
SNAT转换前提条件:
1. 局域网各主机以正确设置IP地址、子网掩码、默认网关地址
2. Linux网关开启IP路由转发
一 SNAT策略
1.1 SNAT策略的典型应用环境
局域网主机共享单个公网IP地址接入Internet
1.2 SNAT策略的原理
源地址转换,Source Network Address Translation 修改数据包的源地址
1.3 SNAT的典型应用环境
局域网共享上网
1.4 SNAT策略的工作原理
未做SNAT转换时的情况
进行SNAT转换后的情况
二 项目实操
Nat转换:入站接受PREROUTING策略匹配,出站POSTROUTING策略匹配
出站(内-外):OUTPUT--POSTROUTING(解决上网问题) SNAT 192.168.6.0/24--->192.168.7.11 入站(外-内):PREROUTING--INPUT--FORWARD(服务映射) DNAT 192.168.7.11--->192.168.6.10
2.1 流程解析:
具体的实现方法:
1.中间的防火墙充当路由器,开启nat功能 2.防火墙上做策略,指定192.168.6.0/24(10)的主机转换成192.168.7.11
iptables -F iptables -t nat -I POSTROUTING -s 192.168.6.0/24 -o ens37(外网卡) -j SNAT --to-source 192.168.7.11
SNAT转换后,源地址变为网关服务器上映射的外网地址
DNAT:外网的用户可以访问内网发布的服务
具体的实现方法:
1.中间的防火墙充当路由器,开启nat功能 2.防火墙上做策略,指定访问网关的某服务映射给内网服务器
iptables -F iptables -t nat -A PREROUTING -i ens37(外网卡) -d 192.168.7.11 -p tcp --dport 80 -j DNAT --to-destination 192.168.6.10
2.2 基础设置
1.在局域网PC上
[root@server1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 [root@server1 ~]# systemctl restart network [root@server1 ~]# ifconfig
2.在防火墙上
[root@server2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 [root@server2 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens37 [root@server2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens37 [root@server2 ~]# systemctl restart network [root@server2 ~]# ifconfig
2.1.1 开启路由功能
[root@server2 ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf [root@server2 ~]# sysctl -p
3.外网服务器
[root@client1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 [root@client1 ~]# systemctl restart network [root@client1 ~]# ifconfig
以上完成基本配置
1.在防火墙进行策略
[root@server2 ~]# hostnamectl set-hostname iptables [root@server2 ~]# bash [root@iptables ~]# iptables -F [root@iptables ~]# iptables -n -L -t nat [root@iptables ~]# iptables -t nat -I POSTROUTING -s 192.168.6.0/24 -o ens37 -j SNAT --to-source 192.168.7.11 [root@iptables ~]# iptables -t nat -L POSTROUTING [root@iptables ~]# ping 192.168.7.12
2.在局域网PC上
[root@server1 ~]# hostnamectl set-hostname client [root@server1 ~]# bash [root@client ~]# ping 192.168.7.12
以上实现内网到外网的上网问题
1.在局域网PC上
[root@client ~]# yum -y install httpd [root@client ~]# echo "this is a tree." > /var/www/html/index.html [root@client ~]# systemctl start httpd [root@client ~]# systemctl stop firewalld [root@client ~]# setenforce 0 [root@client ~]# netstat -anpt | grep httpd
2.在防火墙进行入站策略
[root@iptables ~]# iptables -t nat -A PREROUTING -i ens37 -d 192.168.7.11 -p tcp --dport 80 -j DNAT --to-destination 192.168.6.10 [root@iptables ~]# iptables -t nat -L [root@iptables ~]# systemctl stop firewalld [root@iptables ~]# setenforce 0
3.外网服务器
[root@client1 ~]# hostnamectl set-hostname service [root@client1 ~]# bash [root@service ~]# firefox http://192.168.7.11
标签:iptables,network,--,SNAT,192.168,Linux,root,路由 来源: https://www.cnblogs.com/my-first-blog-lgz/p/16330002.html