iptables防火墙之SNAT、DNAT及firewalld防火墙

一、iptables防火墙

SNAT:源地址转换

DNAT:目的地址转换

核心:通过iptables进行地址转换

SNAT内网→外网:改变源地址

DNAT外网→内网:改变目的地址

(重要)linux系统能抓包吗?

 可以。使用linux系统自带的抓包工具tcpdump来抓包

抓包方式:

1、指定抓包的数量

tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 20.0.0.0/24 -w ./target.cap #指定抓包数量10个

2、动态抓包。一直会获取包,除非人工停止

tcpdump -i ens33 -s0 -w ./ens33.cap

特点:tcpdump可以抓包,但不能分析。用wireshark来分析。sz taget.cap保存到电脑上

wireshark只适用于windows系统抓包

二、firewalld防火墙

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

firewalld过滤是根据区域进行配置的

iptables是静态的防火墙,firewalld是动态的防火墙

(1)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丢弃区域。所有流量都会丢弃,没有任何回显信息

dhcpv6-client获取ipv6地址的客户端工具

(2)切换默认区域

test1

systemctl restart firewalld

systemctl restart httpd

firewalld-cmd --get-default-zone  #显示当前系统中的默认区域

firewalld-cmd --list-all  #显示默认区域内的所有规则

firewalld-cmd --set-default-zone=block#将默认区改成block

firewalld-cmd --set-default-zone#查看默认区

firewalld-cmd --set-default-zone=public#将默认区改成public

test2

ping 20.0.0.10

(3)服务管理

添加单个服务

firewaalld-cmd --list-service   #查看区域内允许通过的服务

firewaalld-cmd --add-service=http --zone=public  #添加服务到防火墙中

删除单个服务

firewaalld-cmd --remove-service=http --zone=public

一次性添加多个服务

1、firewalld-cmd --add-sevice=http --add-service=ftp --zone=public

firewalld-cmd --list-services

2、firewalld-cmd --add-service={ftp,http}

一次性删除多个服务

firewalld-cmd --remove-sevice=http --remove-sevice --zone=public

永久添加服务

firewalld-cmd --add-sevice={ftp,http} --zone=public --permanent

firewalld-cmd --reload   #重新加载配置

firewalld-cmd --list-all   #显示所有服务

永久删除服务

firewalld-cmd --remove-service=http --zone=public --permanent

firewalld-cmd --reload   #重新加载配置

firewalld-cmd --list-all   #显示所有服务

(4)端口管理

添加单个端口(往默认区域添加可以不指定--zone)

firewalld-cmd --zone=public --add-port=80/tcp  #在区域中添加端口

firewalld-cmd --zone=public --remove-port=80/tcp #在区域中移除端口

添加多个端口

firewalld-cmd --add-port={3306,80,21}/tcp

firewalld-cmd --list-all

添加范围端口

firewalld-cmd --add-port=30-35/tcp

firewalld-cmd --list-all

三、iptables实现地址转换实验

实验环境:

3台虚拟机:

test1模拟内网服务器20.0.0.10

test2模拟网关服务器ens33:20.0.0.254  ens36:30.0.0.254

test3模拟外网服务器30.0.0.10

配置IP地址

实验条件:安装http、iptables服务

实验图:

实验步骤:

1、3台虚拟机均关闭防火墙和安全机制

2、test1内网、test3外网安装httpd服务,test、 test2、test3安装iptables服务,重启httpd服务

yum -y install httpd

yum -y install iptables iptables-services.x86_64 

systemctl restart httpd

3、配置3台虚拟机的网卡设备

vim /etc/sysconfig/network-scripts/ifcfg-ens33

test1

test3

test2

添加网卡

创建ens36:cp ifcfg-ens33 ifcfg-ens36

重启网卡设备:systemctl restart network

ifconfig检查IP地址是否修改成功

4、内网test1访问外网test3

路由器test2

iptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10   #添加转换源地址10.0.0.10

iptables -t nat -vnL --line-numbers   #查看规则是否添加成功

vim /etc/sysctl.conf(重要)

添加net.ipv4.ip_forward=1   #开启内核的转发功能

sysctl.conf修改内核参数的文件,立即生效

sysctl -p立即生效

打开test1火狐浏览器

打开外网test3的日志文件

cd /var/log/httpd

[root@test3 httpd]# ls

access_log  error_log

vim access_log

内网访问外网成功

5、外网访问内网

iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80   #添加转换目的IP地址

iptables -t nat -vnL --line-numbers  #检查是否添加此规则

打开内网test1的日志文件

cd /var/log/httpd

[root@test1 httpd]# ls

access_log  error_log

vim access_log

打开外网test3的火狐浏览器

内网test1日志文件

外网访问内网成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值