systemctl start firewalld #开启防火墙
firewall-cmd --get-zones #查看所有区域
firewall-cmd --get-default-zone #查看所处的区域(默认pubic)
firewall-cmd --list-all #查看规则明细(默认查看pubic)
firewall-cmd --list-all --zone=trusted|drop #查看trusted或drop区域规则明细,
常用区域: pubilc 默认区域
trusted 白名单 (默认允许所有)
drop 黑名单 (默认拒绝所有)
添加trusted和drop区域:–add-source
.将来源IP是10.0.0.0/24 走trusted区域。放行了所有。
[root@web01 ~]# firewall-cmd --add-source=10.0.0.0/24 --zone=trusted
---------------------------------添加:–add-port|service
1.1端口设置
firewall-cmd --add-port=8080/tcp --permanent #–add-port:根据端口添加, --permanent:永久添加
firewall-cmd --add-port={9000,9005}/tcp #一次添加多个端口
1.2服务名称设置
firewall-cmd --add-service=http|nfs --permanent #–add-service:根据服务名称添加
vim /usr/lib/firewalld/services/http.xml (http默认端口配置文件)#其实也是根据端口号进行添加,所有服务的配置文件在这个目录下面,如果有的服务没有可以cp一份配置文件修改默认端口号就可以.
---------------------------------删除:–remove-port|service
firewall-cmd --remove-port=9000/tcp #端口
firewall-cmd --remove-service=http --permanent #服务名称(永久删除)
---------------------------------永久添加:–permanent---------------------------------
重载会清空所有配置的临时规则规则:–reload
重载 配置firewall-cmd --reload
---------------------------------------端口转发:
语法:firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
10.0.0.1 请求 10.0.0.7:5555 —转发到–>172.16.1.8:22
[root@web01 ~]# firewall-cmd --add-forward-port=port=5555:proto=tcp:toport=22:toaddr=172.16.1.8
[root@web01 ~]# firewall-cmd --add-masquerade #开启地址转发
---------------------------------------富规则
man firewalld.richlanguage # 获取富规则手册
rule
[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]
rule [family=“ipv4|ipv6”] #ipv4
source address=“address[/mask]” [invert=“True”] #ip地址
service name=“service name” #服务名称
port port=“port value” protocol=“tcp|udp” #端口
forward-port port=“port value” protocol=“tcp|udp” to-port=“port value” to-addr=“address” #传输协议
accept | reject [type=“reject type”] | drop #动作
–add-rich-rule= #在指定的区域添加一条富规则
–remove-rich-rule= #在指定的区域删除一条富规则
–query-rich-rule= #找出规则则返回0,找不到返回1
–list-rich-rules #列出指定区域的所有富规则
accept #允许
drop #拒绝
1.比如允许10.0.0.1主机能够访问80端口或http服务,允许172.16.1.0/24能访问8080端口
#根据服务名称做允许规则
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=10.0.0.1/32 service name=http accept’
#根据端口号做允许规则
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=172.16.1.0/24 port port=“8080” protocol=“tcp” accept’
2.默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
#根据服务名称拒绝
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=“172.16.1.0/24” service name=“ssh” drop’
3.使用firewalld,允许所有人能访问http,https服务,但只有10.0.0.1主机可以访问ssh服务
#设置默认pubilc区域(但是默认pubilc区域可以访问ssh所有要删除)
firewall-cmd --add-service={http,https}
#删除pubils默认区ssh
firewall-cmd --remove-service=ssh
#允许10.0.0.1访问(富规则优先级最高)
firewall-cmd --add-rich-rule=‘rule family=“ipv4” source address=“10.0.0.1/32” service name=ssh accept’
4.当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.8的22端口
# 端口转发
firewall-cmd --add-rich-rule=‘rule family=ipv4 source address=“10.0.0.1/32” forward-port port=“5555” protocol=“tcp” to-port=“22” to-addr=172.16.1.8’
#开启端口转发
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --permanent #永久开启
-----------------------------firewalld实现内部主机共享上网:
两台设备:
一台能上网 10.0.0.7 172.16.1.7
一台不能上网 172.16.1.8
1.172.16.1.8网关指向172.16.1.7
1.关闭eth0
ifdown eth0
2.修改eth1网卡配置
[root@web02 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.8
PREFIX=24
GATEWAY=172.16.1.7
DNS1=223.5.5.5
3.重启eth1的网卡
ifdown eth1 && ifup eth1
2.172.16.1.7上面开启forward转发
[root@web01 ~]# firewall-cmd --add-masquerade --permanent
[root@web01 ~]# firewall-cmd --add-masquerade
3.客户端测试是否能正常连接网络
[root@web02 ~]# ping baidu.com
NAT
DNAT:目标地址转换 端口映射
SNAT:源地址转换 共享上网