firewalld不要与iptables混用
firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域。每个区域都定义了自己打开或者关闭的端口和服务列表
使用 firewall-cmd 命令行工具
使用 firewall-config 图形工具
编写 /etc/firewalld/ 中的配置文件
参数 | 作用 |
---|---|
–get-default-zone | 查询默认区域 |
–set-default-zone=区域名称 | 设置默认区域,使其永久生效 |
–get-zones | 显示可用区域 |
–get-active-zones | 显示当前区域与网卡的名称 |
–add-source=ip | 将源自此的ip或子网的流量导向指定的区域 |
–remove-source=ip | 不再将源自此的ip或子网的流量导向指定的区域 |
–add-interface=网卡 名称 | 将源自此的网卡的流量导向指定的区域 |
–change-interface=网卡名称 | 将某个网卡与区域进行关联 |
–list-all | 显示当前区域的网卡配置参数、资源、端口及服务信息 |
–list-all-zones | 显示所有区域的网卡配置参数、资源、端口及服务信息 |
–add-service=服务名称 | 设置默认区域允许该服务的流量 |
–add-port=端口/协议 | 设置默认区域允许该端口的流量 |
–remove-service=服务名称 | 不再设置默认区域允许该服务的流量 |
–remove-port=端口/协议 | 不再设置默认区域允许该端口的流量 |
–reload | 让永久生效的配置规则 立即生效,并覆盖当前的配置规则 |
–panic-on | 开启应急模式 |
–panic-off | 关闭应急模式 |
–query-masquerade | 检查是否允许伪装IP |
–add-masquerade | 允许防火墙伪装IP |
–remove-masquerade | 禁止防火墙伪装IP |
运行时模式 Runtime
永久生效模式 permanent
firewall-cmd --get-default-zone
firewall-cmd --get-zone-of-interface=ens33
firewall-cmd --permanent --zone=external --change-interface=ens33
重启服务器,查看网卡所在区域
firewall-cmd --get-zone-of-interface=ens33
firewall-cmd --list-all
当前处于public
区域
现在防火墙处于开启的状态
只能允许ssh,dhcpv6-client服务
的流量通过
假如说开启了80端口
,要想访问是访问不了的
firewall-cmd --zone=public --add-service=http
这个时候开启http80端口
是可以访问的,但是上面的配置在重启后配置 会失效
要想 永久生效
必须加上--permanent
参数
firewall-cmd --permanent --zone=public --add-service=http
当前立即生效,如果想永久生效需要加--permanent
参数
firewall-cmd --zone=public --remove-service=http
--reload
立即生效firewall-cmd --reload
firewall-cmd --zone=public --permanent --add-port=80/tcp
firewall-cmd --reload
ssh服务
默认端口修改ssh默认端口之前需要禁用selinux
vim /etc/selinux/config
vim /etc/ssh/sshd_config
重启sshd
服务
systemctl restart sshd.service
ssh服务默认是22端口,要想连接,需要设置防火墙规则运行2222
端口通过
设置规则
firewall-cmd --zone=public --permanent --add-port=2222/tcp
firewall-cmd --reload
连接2222端口
vim /etc/ssh/sshd_config
修改ssh
连接端口为8888
systemctl restart sshd.service
设置规则
firewall-cmd --permanent --zone=public --add-forward-port=port=2222:proto=tcp:toport=8888:toaddr=127.0.0.1
--add-forward-port
端口转发port
从哪个端口来proto
哪个协议toport
到目的地的哪个端口toaddr
到目的地的哪个地址firewall-cmd --reload
添加好端口转发规则后,是连不上的,从2222
端口转发到8888
端口,我们只开放了2222
端口,并没有开放8888
端口,需要再加一条规则
firewall-cmd --permanent --zone=public --add-port=8888/tcp
firewall-cmd --reload
发现还是连接不上,最后发现不能 用127.0.0.1
这个地址
firewall-cmd --permanent --zone=public --add-forward-port=port=2222:proto=tcp:toport=8888:toaddr=192.168.80.131
firewall-cmd --reload
再次连接就成功了
firewall-cmd --permanent --zone=public --remove-forward-port=port=2222:proto=tcp:toport=8888:toaddr=127.0.0.1
firewall-cmd --reload
给Centos添加 一块网卡,划分到LAN区段
手动配置 静态IP
然后ip a
,查看新添加的网卡名称为ens36
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36
修改如下:
重启网卡
systemctl restart network.service
查看IP
然后再开启一台win7
,,网卡划分到同一LAN区段
手动配置IP地址
启动80端口
查看两台是否互通
这个时候Centos
就能够访问Win7
的网站了
curl 10.1.1.2
首先要让Win11
能够访问到Centos
的8080
端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
端口转发,让8080
端口,能访问到10.1.1.2
的80
端口
firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=10.1.1.2
立即生效防火墙配置
firewall-cmd --reload
允许防火墙伪装IP
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload