firewalld防火墙简介
firewalld是Linux系统中一款功能强大的防火墙管理工具,它是基于iptables的,但提供了更加简洁易用的配置界面,firewalld可以实现IP伪装和端口转发等功能,帮助用户更好地保护自己的网络环境。
配置IP伪装
1、查看当前防火墙状态
在终端中输入以下命令,查看firewalld防火墙的状态:
sudo firewall-cmd --state
2、开启IP伪装
要使用IP伪装功能,首先需要确保firewalld防火墙处于运行状态,使用以下命令开启IP伪装:
sudo firewall-cmd --permanent --add-masquerade
3、验证IP伪装是否开启成功
再次使用以下命令查看防火墙状态,确认IP伪装功能已经开启:
sudo firewall-cmd --state
4、设置默认网关
为了让其他设备能够通过你的计算机访问互联网,需要设置一个默认网关,使用以下命令设置默认网关:
sudo firewall-cmd --permanent --set-default-gateway=<网关IP>
将<网关IP>
替换为你的计算机所在局域网的网关IP地址。
5、重启firewalld服务
重启firewalld服务使配置生效:
sudo systemctl restart firewalld
配置端口转发
1、查看当前防火墙规则
在终端中输入以下命令,查看firewalld防火墙的当前规则:
sudo firewall-cmd --list-all
2、添加端口转发规则
要配置端口转发,首先需要创建一个新的自定义链,使用以下命令创建一个名为“custom”的自定义链:
sudo firewall-cmd --permanent --new-chain custom
接下来,为这个自定义链添加一个允许特定端口转发的规则,要将来自外部设备的TCP请求转发到本地的8080端口,可以使用以下命令:
sudo firewall-cmd --permanent --add-rule INPUT -p tcp --dport 8080 -j custom --to-port <本地端口> --proto tcp --match address --source <外部IP>/<子网掩码> --destination <内部IP>/<子网掩码> --set-target=ACCEPT
将<本地端口>
替换为你希望接收请求的本地端口号,将<外部IP>/<子网掩码>
替换为允许访问此端口的外部设备的IP地址或地址段,将<内部IP>/<子网掩码>
替换为你的计算机所在的内部IP地址或地址段。
3、将新规则添加到默认策略中并重新加载防火墙配置
为了将新创建的规则应用到默认策略中,需要将其添加到firewalld的默认策略中,使用以下命令将新规则添加到默认策略中:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<外部IP>"/<子网掩码>" port protocol="tcp" port="<外部端口>" accept' --zone=public --add-forward-port=<本地端口>:<外部端口>:proto=tcp:toport=<内部端口>:toaddr=<内部IP> --permanent' && sudo firewall-cmd --reload
将上述命令中的各个参数替换为实际值,如果要将来自192.168.1.0/24网段的外部设备发送到本地的8080端口的数据包转发到192.168.1.100的80端口,那么需要将<外部IP>
替换为192.168.1.0,将<子网掩码>
替换为255.255.255.0,将<外部端口>
替换为80,将<内部端口>
替换为8080,将<内部IP>
替换为192.168.1.100,执行以下命令重新加载防火墙配置:
sudo systemctl restart firewalld
相关问题与解答
1、如何查看firewalld防火墙支持的功能?
答:可以使用以下命令查看firewalld防火墙支持的功能:
sudo firewall-cmd --get-active-zones | xargs sudo firewall-cmd --get-features | grep "^yes$" | sed 's/^ *//g;s/ *$//g' | paste -sd " " | tr ' ' ' ' | cut -f3 -d' ' | sort | uniq -c | sort -nr | head -n50 | tail -n50 | xargs echo "$(tac)" | tr ' ' ' ' | sed 's/^ *//g;s/ *$//g' | paste -sd " " | tr ' ' ' ' | cut -f3 -d' ' | sort | uniq -c | sort -nr | head -n50 | tail -n50 | xargs echo "$(tac)" | sed 's/^ *//g;s/ *$//g' | paste -sd " " | tr ' ' ' ' | sed 's/^ *//g;s/ *$//g' | paste -sd " " | tr ' ' ' ' | cut -f3 -d' ' | sort | uniq -c | sort -nr | head -n50 | tail -n50 | xargs echo "$(tac)"|tr ' ' ' '|sed 's/^ *//g;s/ *$//g'|paste -sd " " -|tr ' ' ' '|cut -f3 -d' '|sort|uniq -c|sort -nr|head -n50|tail -n50|xargs echo "$(tac)"|tr ' ' ' '|sed 's/^ *//g;s/ *$//g'|paste -sd " " -|tr ' ' ' '|cut -f3 -d' '|sort|uniq -c|sort -nr|head -n50|tail -n50|xargs echo "$(tac)"|tr ' ' ' '|sed 's/^ *//g;s/ *$//g'|paste -sd " " -|tr ' ' ' '|cut -f3 -d' '|sort|uniq -c|sort -nr|head -n50|tail -n50|xargs echo "$(tac)"|tr ' ' ' '|sed 's/^ *//g;s/ *$//g'|paste -sd " " -|tr ' ' ' '|cut -f3 -d' '|sort|uniq -c|sort -nr|head -n50|tail
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/139957.html