Linux防火墙之–SNAT和DNAT

Linux防火墙之–SNAT和DNAT当内网有多台主机访问外网时 SNAT 在转换时会自动分配端口 不同内网主机会通过端口号进行区分

大家好,欢迎来到IT知识分享网。

1.SNAT是什么

SNAT又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。

真实环境运用中私网可以通过路由转发,将数据包传送给公网IP地址的服务器,而公网地址无法将相应的数据包回还给私网地址的用户。此时二者之间需要一个媒介,就是一个建立在私网和公网之间的网关服务器,对其之间的数据包进行相应的处理。来完成私网IP与公网IP之间的建立联系 
 

2.DNAT是什么

 DNAT:目的地址转换的作用是将一组本地内部的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。

私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问

所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问

简单来说:

SNAT是对源地址转换

DNAT是对目的地址转换

SNAT的典型应用场景

Linux防火墙之--SNAT和DNAT

SNAT策略的工作原理

Linux防火墙之--SNAT和DNAT

SNAT源地址转换过程:

数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。


 

如何用iptables实现地址转换

准备任务:

1.准备三台虚拟机

Linux防火墙之--SNAT和DNAT

2.给网关服务器添加一张虚拟网卡

Linux防火墙之--SNAT和DNAT

3.拓扑:

Linux防火墙之--SNAT和DNAT

test1:20.0.0.10 内网

test2:ens33: 20.0.0.254

ens36:12.0.0.254

做SNAT的地址转换

test3:12.0.0.100 外网

过程

关闭防火墙

编辑网卡信息

首先ifconfig查看网卡名称(我这里是ens36)

Linux防火墙之--SNAT和DNAT

cd /etc/sysconfig/network-scripts #进入该路径 cp ifcfg-ens33 ifcfg-ens36 #创建新网卡信息

Linux防火墙之--SNAT和DNAT

TYPE=Ethernet DEVICE=ens36 ONBOOT=yes BOOTPROTO=static IPADDR=12.0.0.254 NETMASK=255.255.255.0 #GATEWAY=20.0.0.2 #DNS1=8.8.8.8 

Linux防火墙之--SNAT和DNAT

此处不用设置网关,因为要充当内网网关

TYPE=Ethernet DEVICE=ens33 ONBOOT=yes BOOTPROTO=static IPADDR=20.0.0.254 NETMASK=255.255.255.0 #GATEWAY=20.0.0.2 #DNS1=8.8.8.8 

Linux防火墙之--SNAT和DNAT

客户机配置

TYPE=Ethernet DEVICE=ens33 ONBOOT=yes BOOTPROTO=static IPADDR=20.0.0.10 NETMASK=255.255.255.0 GATEWAY=20.0.0.254 #DNS1=218.2.135.1 

Linux防火墙之--SNAT和DNAT

web配置

TYPE=Ethernet DEIVCE=ens33 ONBOOT=yes BOOTPROTO=static IPADDR=12.0.0.100 NETMASK=255.255.255.0 GATEWAY=12.0.0.254 #DNS1=8.8.8.8 

Linux防火墙之--SNAT和DNAT

网卡配置结束后,要通过iptables命令添加

iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10 

-t:指定表名

nat:地址转换的表名

-A:添加一条规则,在行尾追加

POSTROUTING:在出本机的时候添加一个地址转换的规则

-s:192.168.233.0/24 指定源IP地址

-j SNAT:指定控制类型

–to 10.0.0.10 所有源IP属于233.0这个网段,只要你是从ens36出来,都会把它们IP地址转换为10.0.0.10

完成之后,  iptables -t nat -vnL查看

最后,网关服务器要同意转发

vim /etc/sysctl.conf

Linux防火墙之--SNAT和DNAT

sysctl -p

Linux防火墙之--SNAT和DNAT

立即启动

客户端链接web端(内网链接外网)测试

Linux防火墙之--SNAT和DNAT

Linux防火墙之--SNAT和DNAT

DNAT地址转换

iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80

web端连接客户端测试

Linux防火墙之--SNAT和DNAT

Linux防火墙之--SNAT和DNAT

实验结束

Linux抓包技术–tcpdump

tcpdump为Linux自带的抓包工具

wireshark只适用于Windows

抓包方式:

1.指定抓包数量

2.动态抓包,一致会获取包,除非人工停止

tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and net 20.0.0.0/24 -w ./target.cap

tcpdump:抓包命令,固定开头

tcp:抓包的协议

-i:经过,只抓经过ens33的数据包

-t:不显示时间戳

-s0:抓完整的数据包

-c:指定抓包的个数

dst port:80 访问的是httpd的80端口

src net:192.168.233.0/24

-w:抓包的数据,保存位置。

firewalld技术

firewalld:centos7自带的,和iptables一样,也是包过滤防火墙

firewalld过滤,通过区域来进行配置

iptables 静态防火墙

firewalld 动态防火墙

firewalld 分为以下几个区域:

  1. trusted :信任区,所有流量都可以传入
  2. public :公共区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,也是firewalld的默认区域。
  3. external:外部区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,默认通过此区域转发的ipv4流量地址,可以进行伪装
  4. home 家庭区域:允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
  5. internal:内部区域,默认值与home区域的作用相同
  6. work 工作区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
  7. DMZ 隔离区 非军事区:允许ssh,其他的预定义好配置,其他的全部拒绝
  8. block:限制区,拒绝所有流量
  9. drop:丢弃区域,所有流量都会丢弃

firewalld相关命令

firewall-cmd –list-service

查看区域内允许通过的服务

Linux防火墙之--SNAT和DNAT

firewall-cmd –add-service=http –zone=public

添加,浏览器20.0.0.10即可看到是否成功Linux防火墙之--SNAT和DNAT

firewall-cmd –remove-service=http –zone=public

删除Linux防火墙之--SNAT和DNAT

firewall-cmd –add-service=http –add-service=ftp –zone=pubilc

添加多个服务

firewall-cmd –list-services

查看

firewall-cmd –add-service={ftp,http}

添加多个的不同方法

firewall-cmd –add-service={ftp,http} –zone=public –permanent

永久生效

firewall-cmd –remove-service=http –zone=public –permanent

删除永久生效的项

firewall-cmd –zone=public –add-port=80/tcp

根据端口添加

firewall-cmd –zone=public –remove-port=80/tcp

移除

firewall-cmd –zone=指定区域

firewall-cmd –zone=public -add-port={3306,80,21}/tcp

添加多个端口

firewall-cmd –zone=public -add-port=30-35/tcp

添加端口的范围

firewall-cmd –list-all 查看

Linux防火墙之--SNAT和DNAT

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124907.html

(0)
上一篇 2025-10-02 15:26
下一篇 2025-10-02 15:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信