IP 地址伪装和端口转发都属于 NAT(网络地址转换).
地址伪装和端口转发的区别如下:
IP 地址伪装:
1, 通过地址伪装, NAT 设备将经过设备的包转发到指定的接收方, 同时将通过的数据包
2, 源地址更改为其 NAT 设备自己的接口地址. 当返回的数据包到达时, 会将目的地址修改
3, 为原始主机的地址并做路由. 地址伪装可以实现局域网多个地址共享单一公网地址上网.
4, 类似于 NAT 技术中的端口多路复用 (PAT).IP 地址伪装仅支持 ipv4, 不支持 ipv6.
端口转发:
也可以称之为目的地址转换或端口映射. 通过端口转发, 将指定 IP 地址及端口的流量转发到相同计算机上的不同端口, 或不同计算机上的端口. 一般公司内网的服务器都采用私网地址, 然后通过端口转发将使用私网地址的服务器发布到公网上.
在 firewalld 中, 有一个富语言的概念, firewalld 的富语言提供了一种不需要了解 iptables 语法的通过高级语言配置复杂的防火墙规则的机制, 通过这种语言, 可以表达 firewalld 的基本语法中不能实现的自定义防火墙规则.
富规则可用于表达基本的允许 / 拒绝规则, 也可以用于配置记录 (面向 syslog 和 auditd), 以及端口转发, 伪装和速率限制.
在 firewalld 防火墙配置中有一个超时的工具, 当包含超时的规则添加到防火墙时, 计时器便针对该规则开始倒计时, 一旦倒计时达到 0 秒, 便从运行时配置中删除该规则.
在测试更复杂的规则集时, 如果规则有效, 那么我们可以再次添加该规则, 如果规则没有实现我们预期的效果, 甚至可能将我们管理员锁定而使其无法进入系统, 那么规则将被自动删除, 以便我们运维人员继续进行测试工作.
在使用 firewall-cmd 进行配置规则时, 在命令的结尾追加选项 --timeout=<timeval> 即可,--help 中关于该选项的参考如下 (单位可以是秒, 分, 时):
- Enable an option for timeval time, where timeval is
- a number followed by one of letters 's' or 'm' or 'h'
- Usable for options marked with [T]
firewall-cmd 有四个选项可以用于处理富规则, 所有这些选项都可以和常规的 --permanent 或 --zone=<ZONE > 选项组合使用, 具体如下:
在任何已配置的富规则都会显示在 firewall-cmd --list-all 和 firewall-cmd --list-all-zone 的输出结果中. 具有语法解释如下所示:
富规则配置举例:
为认证报头协议 AH 使用新的 ipv4 和 ipv6 连接
[root@localhost /]# firewall-cmd --add-rich-rule='rule protocol value=ah accept'
允许新的 ipv4 和 ipv6 连接 ftp, 并使用审核每分钟记录一次
[root@localhost /]# firewall-cmd --add-rich-rule='rule service name=ftp log limit value=1/m audit accept'
允许来自 192.168.1.0/24 地址的 TFTP 协议的 ipv4 连接, 并且使用系统日志每分钟记录一次
[root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv4"source address="192.168.1.0/24"service name="tftp"log prefix="tftp"level="info"limit value="1/m"accept'
为 RADIUS 协议拒绝所有来自 1:2:3:4:6:: 的新 ipv6 连接, 日志前缀为 "dns", 级别为 "info", 并每分钟最多记录 3 次. 接受来自其他发起端新的 ipv6 连接:
- [root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv6"source address="1:2:3:4:6::"service name="radius"log prefix="dns"level="info"limit value="3/m"reject'
- [root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv6"service name="radius"accept'
将源 192.168.2.2 地址加入白名单, 以允许来自这个源地址的所有连接:
[root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv4"source address="192.168.2.2"accept'
拒绝来自 public 区域中 IP 地址 192.168.0.11 的所有流量:
[root@localhost /]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
丢弃来自默认区域中任何位置的所有传入的 ipsec esp 协议包:
[root@localhost /]# firewall-cmd --add-rich-rule='rule protocol value="esp"drop'
在 192.168.1.0/24 子网的 DMZ 区域中, 接收端口 7900~7905 的所有 TCP 包:
[root@localhost /]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-1905 protocol=tcp accept'
接收从 work 区域到 SSH 的新连接, 以 notice 级别且每分钟最多三条消息的方式将新连接记录到 syslog:
[root@localhost /]# firewall-cmd --zone=work --add-rich-rule='rule service name=ssh log prefix="ssh"level="notice"limit value="3/m"accept'
在接下来的 5min 内 (通过 --timeout=300 配置项实现), 拒绝从默认区域中的子网 192.168.2.0/24 到 DNS 的新连接, 并且拒绝的连接将记录到 audit 系统, 且每小时最多一条消息.
[root@localhost /]# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.2.0/24 service name=dns audit limit value="1/h"reject' --timeout=300
配置 firewall 防火墙的地址伪装和端口转发的配置实例: https://blog.51cto.com/14227204/2434539
来源: http://blog.51cto.com/14227204/2435183