1. 说明
Linux的防火墙客户都安主要由 iptabless和firewalld两种。
2. firewalld防火墙
2.1 ubuntu安装
sudo apt install firewalld
2.2. 基本应用
2.2.1 常用命令
# 显示版本
firewall-cmd --version
# 显示状态
firewall-cmd --state
# 查看当前所有规则
firewall-cmd --list-all
# 更新防火墙策略
firewall-cmd --reload
2.2.2 防火墙控制命令
# 启动防火墙
systemctl start firewalld.service
# 停止防火墙
systemctl stop firewalld.service
# 重启防火墙
systemctl restart firewalld.service
# 查看防火墙状态
systemctl status firewalld.service
#启用-开机自启
systemctl enable firewalld.service
2.3 端口操作
# 查看端口
firewall-cmd --zone=public --list-ports
# 开启端口 (permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 查看端口是否开放
firewall-cmd --zone=public --query-port=80/tcp
# 删除开放端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 批量开放端口
firewall-cmd --permanent --add-port=9001-9100/tcp
# !!! 需要执行这条命令
firewall-cmd --reload
3. iptabless防火墙
3.1 安装与卸载
-
卸载iptabless
sudo apt remove iptables iptables-persistent
-
安装iptabless
sudo apt install iptables iptables-persistent
3.2 常用操作
3.2.1 清空所有规则
针对防火墙状态混乱,异常情况下。
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
3.2.2 实现nat上网
# wlo1是出口网卡 enx26d87c7bdddc 是输入接口
sudo iptables -t nat -A POSTROUTING -o wlo1 -j MASQUERADE
sudo iptables -A FORWARD -i enx26d87c7bdddc -o wlo1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlo1 -o enx26d87c7bdddc -j ACCEPT
3.2.3 实现端口转发
# 转发本地的 12222端口到 192.168.99.1:22
sudo iptables -t nat -I PREROUTING -p tcp --dport 12222 -j DNAT --to-destination 192.168.99.1:22
sudo iptables -t nat -I POSTROUTING -p tcp --dport 22 -d 192.168.55.1 -j MASQUERADE