防火墙 使用
防火墙 支持
Neardi 发布的普通固件一般不满足 ufw 的运行要求,如果有需求,可以使用 SDK 打开内核的相关配置,重新编译烧录内核以支持 ufw。
以下案例是基于 Neardi Ubuntu 20.04,内核配置部分是通用的!
检查 Kernel 配置
cd kernel
ARCH=arm64 make menuconfig
需要在内核中启用与网络过滤和防火墙相关的配置:
CONFIG_NETFILTER: 这是网络过滤框架的基础,必须启用。
CONFIG_NF_CONNTRACK: 启用网络连接跟踪支持。
CONFIG_NETFILTER_XT_*: 启用各种netfilter扩展,包括标记、地址类型、连接跟踪等。
CONFIG_IP_VS_*: 启用IP虚拟服务器支持,用于负载均衡。
CONFIG_IP_NF_IPTABLES: 启用iptables支持。
CONFIG_IP_NF_FILTER: 启用IP包过滤功能。
CONFIG_IP_NF_NAT: 启用网络地址转换(NAT)支持。
CONFIG_IP_NF_TARGET_*: 启用各种iptables目标,如MASQUERADE、NETMAP、REDIRECT等。
ONFIG_BRIDGE: 如果您使用桥接网络,这个选项也应该启用。
在 make menuconfig 中,您可以使用 / 键来搜索上述配置项,然后按照提示进行操作。确保所有相关的配置项都被标记为 <*>(编译进内核)或
保存内核配置选项菜单:
ARCH=arm64 make savedefconfig
保存后SDK根目录会生成defconfig
文件
替换config:
cp defconfig arch/arm64/configs/rockchip_linux_defconfig
接着在 kernel
目录下编译内核:
cd ..
./build.sh kernel
不熟悉menuconfig的用户,可以直接修改如下文件,在RK3568上验证过:
+++ b/kernel/arch/arm64/configs/rockchip_linux_defconfig
@@ -99,13 +99,21 @@ CONFIG_SYN_COOKIES=y
# CONFIG_IPV6_SIT is not set
CONFIG_NETFILTER=y
+CONFIG_BRIDGE_NETFILTER=y
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_CONNTRACK_FTP=y
+CONFIG_NF_CONNTRACK_TFTP=y
+CONFIG_NETFILTER_XT_MARK=y
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+CONFIG_NETFILTER_XT_MATCH_IPVS=y
+CONFIG_IP_VS=y
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_RR=y
+CONFIG_IP_VS_NFCT=y
+CONFIG_NETFILTER_NETLINK_ACCT=y
+CONFIG_NETFILTER_NETLINK_QUEUE=y
+CONFIG_NETFILTER_NETLINK_LOG=y
+CONFIG_NETFILTER_NETLINK_OSF=y
CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_NETDEV=y
CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NETFILTER_XT_MARK=y
+CONFIG_NETFILTER_XT_TARGET_LOG=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_IPVS=y
+CONFIG_NETFILTER_XT_MATCH_LIMIT=y
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y
CONFIG_IP_VS=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_NAT=y
+CONFIG_IP_NF_TARGET_MASQUERADE=y
+CONFIG_IP_NF_TARGET_NETMAP=y
+CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_MANGLE=y
+CONFIG_BRIDGE=y
+CONFIG_CGROUP_NET_PRIO=y
CONFIG_CAN=y
CONFIG_CAN_ROCKCHIP=y
CONFIG_CANFD_ROCKCHIP=y
安装 ufw
sudo apt install ufw
在 /etc/default/ufw 配置文件中,将 IPV6=yes 修改为 IPV6=no。
# /etc/default/ufw
#
# Set to yes to apply rules to support IPv6 (no means only IPv6 on loopback
# accepted). You will need to 'disable' and then 'enable' the firewall for
# the changes to take affect.
-IPV6=yes
+IPV6=no
简单命令
检查UFW状态:
sudo ufw status
启用UFW:
sudo ufw enable
禁用UFW:
sudo ufw disable
允许特定端口:
sudo ufw allow 端口号
拒绝特定端口:
sudo ufw deny 端口号
允许特定IP地址:
sudo ufw allow from IP地址
拒绝特定IP地址:
sudo ufw deny from IP地址
更多ufw高级功能和命令,请参考: https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands