https://www.cnblogs.com/xiluhua/p/5929222.html
https://www.cnblogs.com/xxoome/p/7115614.html
https://www.linuxidc.com/Linux/2018-11/155155.htm
https://www.cnblogs.com/zqifa/p/linux-firewall-1.html
https://blog.csdn.net/dhjibk/article/details/80558248
http://lxgyw.cn/@@@/15216870315478.html
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接
# yum install firewalld
如果需要图形界面的话,则再安装
# yum install firewall-config
systemctl status firewalld
firewall-cmd --state
firewall-cmd --set-default-zone=public #设置默认接口区域
# 开启
service firewalld start
systemctl start firewalld.service
systemctl enable firewalld.service #开启firewall开机启动 (设置开机自启)
# 重启
service firewalld restart
systemctl restart firewalld.service
firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)
# 关闭
service firewalld stop
systemctl stop firewalld.service
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --list-all
netstat -ntlp 或:firewall-cmd --list-ports #查看开放端口
systemctl list-unit-files | grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
firewall-cmd --version #查看版本:
firewall-cmd --help #查看帮助:
firewall-cmd --zone=public --list-ports #查看所有打开的端口
firewall-cmd --zome=dmz --list-ports #列出 dmz 级别的被允许的进入端口
firewall-cmd --zone=work --add-service=smtp #添加 smtp 服务至 work zone
firewall-cmd --get-zone-of-interface=eth0 #显示eth0接口属于的域
systemctl is-enabled firewalld.service
firewall-cmd --get-active-zones #显示当前正在使用的区域与网卡名称
firewall-cmd --get-default-zone #查询默认的区域名称
firewall-cmd --get-zones #显示可用的区域
开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
开放端口区间:firewall-cmd --permanent --zone=public --add-port=8080-9999/tcp #永久
重启防火墙:systemctl restart firewalld.service #重启后才能生效
更新防火墙规则:firewall-cmd --reload
firewall-cmd --complete-reload # 更新规则,重启服务
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --zone=public --add-interface=eth0 --permanent #添加某接口至某信任等级,譬如添加 eth0 至 public,再永久生效
firewall-cmd --set-default-zone=public #设置 public 为默认的信任级别
要打开端口转发,则需要先
# firewall-cmd --zone=external --add-masquerade
然后转发 tcp 22 端口至 3753
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
转发 22 端口数据至另一个 ip 的相同端口上
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
转发 22 端口数据至另一 ip 的 2055 端口上
# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
端口转发的目的:当我们在真机里登陆172.25.254.218这台主机,进行伪装后,当通过 22 端口访问本机时,将请求转发到 172.25.254.118这台 主机上,同时还要开启 masquerade转发接口
# firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.118
#添加端口22并通过tcp协议,转发到172.25.254.118这台主机的22端口
# --add-forward-port= 添加端口
# proto=tcp 通过tcp协议进行转发
# toport= 转发到某个端口
# toaddr= 转发到172.25.254.118这台主机上
# firewall-cmd --add-masquerade #打开转发端口
# firewall-cmd --panic-on
//在 0.3.0 之前的 FirewallD版本中, panic 选项是 –enable-panic 与 –disable-panic
关闭应急模式
# firewall-cmd --panic-off
查看应急模式的状态
# firewall-cmd --query-panic
在不改变状态的条件下重新加载防火墙:
# firewall-cmd --reload
防火墙预定义的服务配置文件是xml文件 目录在 /usr/lib/firewalld/services/
在 /etc/firewalld/services/ 这个目录中也有配置文件 但是/etc/firewalld/services/目录 优先于 /usr/lib/firewalld/services/ 目录
修改配置文件后 使用命令重新加载
# firewall-cmd --reload
在每次修改 端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改 所以也可以在文件中之间修改 然后重新加载
添加规则
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
删除上面设置的规则
#firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 访问 http
设置后 public.xml 就会出现变化
firewall-cmd --change-interface=eth0 --zone=trusted #修改区域为trusted的网络接口eth0
firewall-cmd --remove-interface=eth0 --zone=trusted #移除trusted区域的接口eth0
firewall-cmd --add-interface=eth0 --zone=public #添加public区域的接口eth0
1、基本配置
(1)server这台主机作为转换服务器;
(2)desktop这台主机作为局域网内的主机;
(3)真机这台主机作为外网的主机;
2、基本原理:局域网内的主机访问外网主机时,为了隐藏局域网中的私有地址,通过转换服务器进行地址的转换,并在局域网的主机里添加网关(路由器),当外网主机查询时只能看到共有地址,这就是地址转换;
3、具体操作
转换服务器
(1)添加两个网卡,eth0,eth1;
(2)配置网络,eth0设置为公共地址(172.25.254.218),eth1设置为私有地址(192.168.1.218),重启网络后,才可以生效
(3)打开转发端口:firewall-cmd –add-masquerade
(4)编辑配置文件,开启内核路由功能sysctl -p ( net.ipv4.ip_forward=1),配置文件为/etc/sysctl.conf
局域网内的主机
(1)设置局域网内的主机ip(192.168.1.118)和网关GATEWAY(192.168.1.218),重启网络后生效
(2)登陆外网主机 ssh [email protected]
外网主机
查看谁登陆过这台主机:w -i